create-mithaq 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/LICENSE +22 -0
  2. package/LICENSES/openstatus-time-picker.txt +21 -0
  3. package/LICENSES/payload.txt +22 -0
  4. package/LICENSES/ponytail.txt +21 -0
  5. package/index.js +521 -0
  6. package/package.json +19 -4
  7. package/template/apps/asas-backoffice/components.json +25 -0
  8. package/template/apps/asas-backoffice/gitignore +3 -0
  9. package/template/apps/asas-backoffice/package.json +57 -0
  10. package/template/apps/asas-backoffice/public/favicon.svg +1 -0
  11. package/template/apps/asas-backoffice/src/api.ts +147 -0
  12. package/template/apps/asas-backoffice/src/auth-frame.tsx +150 -0
  13. package/template/apps/asas-backoffice/src/components/ui/accordion.tsx +74 -0
  14. package/template/apps/asas-backoffice/src/components/ui/alert-dialog.tsx +185 -0
  15. package/template/apps/asas-backoffice/src/components/ui/avatar.tsx +106 -0
  16. package/template/apps/asas-backoffice/src/components/ui/badge.tsx +48 -0
  17. package/template/apps/asas-backoffice/src/components/ui/breadcrumb.tsx +124 -0
  18. package/template/apps/asas-backoffice/src/components/ui/button-group.tsx +87 -0
  19. package/template/apps/asas-backoffice/src/components/ui/button.tsx +55 -0
  20. package/template/apps/asas-backoffice/src/components/ui/calendar.tsx +223 -0
  21. package/template/apps/asas-backoffice/src/components/ui/card.tsx +102 -0
  22. package/template/apps/asas-backoffice/src/components/ui/chart.tsx +371 -0
  23. package/template/apps/asas-backoffice/src/components/ui/checkbox.tsx +28 -0
  24. package/template/apps/asas-backoffice/src/components/ui/collapsible.tsx +19 -0
  25. package/template/apps/asas-backoffice/src/components/ui/combobox.tsx +308 -0
  26. package/template/apps/asas-backoffice/src/components/ui/dialog.tsx +158 -0
  27. package/template/apps/asas-backoffice/src/components/ui/direction.tsx +6 -0
  28. package/template/apps/asas-backoffice/src/components/ui/directional-icon.tsx +20 -0
  29. package/template/apps/asas-backoffice/src/components/ui/dropdown-menu.tsx +267 -0
  30. package/template/apps/asas-backoffice/src/components/ui/field.tsx +236 -0
  31. package/template/apps/asas-backoffice/src/components/ui/input-group.tsx +155 -0
  32. package/template/apps/asas-backoffice/src/components/ui/input-otp.tsx +84 -0
  33. package/template/apps/asas-backoffice/src/components/ui/input.tsx +19 -0
  34. package/template/apps/asas-backoffice/src/components/ui/label.tsx +19 -0
  35. package/template/apps/asas-backoffice/src/components/ui/popover.tsx +90 -0
  36. package/template/apps/asas-backoffice/src/components/ui/radio-group.tsx +37 -0
  37. package/template/apps/asas-backoffice/src/components/ui/resizable.tsx +47 -0
  38. package/template/apps/asas-backoffice/src/components/ui/scroll-area.tsx +54 -0
  39. package/template/apps/asas-backoffice/src/components/ui/select.tsx +204 -0
  40. package/template/apps/asas-backoffice/src/components/ui/separator.tsx +24 -0
  41. package/template/apps/asas-backoffice/src/components/ui/sheet.tsx +139 -0
  42. package/template/apps/asas-backoffice/src/components/ui/sidebar.tsx +714 -0
  43. package/template/apps/asas-backoffice/src/components/ui/skeleton.tsx +13 -0
  44. package/template/apps/asas-backoffice/src/components/ui/slider.tsx +55 -0
  45. package/template/apps/asas-backoffice/src/components/ui/spinner.tsx +10 -0
  46. package/template/apps/asas-backoffice/src/components/ui/switch.tsx +29 -0
  47. package/template/apps/asas-backoffice/src/components/ui/table.tsx +115 -0
  48. package/template/apps/asas-backoffice/src/components/ui/tabs.tsx +79 -0
  49. package/template/apps/asas-backoffice/src/components/ui/textarea.tsx +17 -0
  50. package/template/apps/asas-backoffice/src/components/ui/toggle-group.tsx +89 -0
  51. package/template/apps/asas-backoffice/src/components/ui/toggle.tsx +44 -0
  52. package/template/apps/asas-backoffice/src/components/ui/tooltip.tsx +63 -0
  53. package/template/apps/asas-backoffice/src/components.ts +35 -0
  54. package/template/apps/asas-backoffice/src/copy.ts +1 -0
  55. package/template/apps/asas-backoffice/src/first-user.ts +14 -0
  56. package/template/apps/asas-backoffice/src/hooks/use-mobile.ts +19 -0
  57. package/template/apps/asas-backoffice/src/lib/utils.ts +1 -0
  58. package/template/apps/asas-backoffice/src/links.ts +38 -0
  59. package/template/apps/asas-backoffice/src/locale-switch.tsx +28 -0
  60. package/template/apps/asas-backoffice/src/no-organization.tsx +5 -0
  61. package/template/apps/asas-backoffice/src/redirect.ts +1 -0
  62. package/template/apps/asas-backoffice/src/request-headers.ts +11 -0
  63. package/template/apps/asas-backoffice/src/routeTree.gen.ts +206 -0
  64. package/template/apps/asas-backoffice/src/router.tsx +18 -0
  65. package/template/apps/asas-backoffice/src/routes/(screens)/backoffice/files.ts +10 -0
  66. package/template/apps/asas-backoffice/src/routes/(screens)/backoffice/screen.json +3971 -0
  67. package/template/apps/asas-backoffice/src/routes/(screens)/backoffice/types.ts +163 -0
  68. package/template/apps/asas-backoffice/src/routes/(screens)/backoffice.$.tsx +17 -0
  69. package/template/apps/asas-backoffice/src/routes/(screens)/backoffice.index.tsx +10 -0
  70. package/template/apps/asas-backoffice/src/routes/(screens)/backoffice.tsx +13 -0
  71. package/template/apps/asas-backoffice/src/routes/__root.tsx +95 -0
  72. package/template/apps/asas-backoffice/src/routes/api/$.ts +34 -0
  73. package/template/apps/asas-backoffice/src/routes/auth.create-first-user.tsx +113 -0
  74. package/template/apps/asas-backoffice/src/routes/auth.sign-in.tsx +77 -0
  75. package/template/apps/asas-backoffice/src/routes/unauthorized.tsx +134 -0
  76. package/template/apps/asas-backoffice/src/screen-form.tsx +36 -0
  77. package/template/apps/asas-backoffice/src/screen-list.tsx +140 -0
  78. package/template/apps/asas-backoffice/src/screen-names.ts +10 -0
  79. package/template/apps/asas-backoffice/src/screens.tsx +888 -0
  80. package/template/apps/asas-backoffice/src/server.ts +30 -0
  81. package/template/apps/asas-backoffice/src/slide.ts +22 -0
  82. package/template/apps/asas-backoffice/src/start.ts +42 -0
  83. package/template/apps/asas-backoffice/src/styles.css +202 -0
  84. package/template/apps/asas-backoffice/src/theme.ts +2 -0
  85. package/template/apps/asas-backoffice/tsconfig.json +19 -0
  86. package/template/apps/asas-backoffice/vite.config.ts +32 -0
  87. package/template/apps/asas-tanstack/components.json +25 -0
  88. package/template/apps/asas-tanstack/gitignore +3 -0
  89. package/template/apps/asas-tanstack/package.json +58 -0
  90. package/template/apps/asas-tanstack/public/favicon.svg +1 -0
  91. package/template/apps/asas-tanstack/src/api.ts +147 -0
  92. package/template/apps/asas-tanstack/src/auth-frame.tsx +150 -0
  93. package/template/apps/asas-tanstack/src/choose-password.tsx +150 -0
  94. package/template/apps/asas-tanstack/src/components/ui/accordion.tsx +10 -0
  95. package/template/apps/asas-tanstack/src/components/ui/alert-dialog.tsx +173 -0
  96. package/template/apps/asas-tanstack/src/components/ui/avatar.tsx +104 -0
  97. package/template/apps/asas-tanstack/src/components/ui/badge.tsx +48 -0
  98. package/template/apps/asas-tanstack/src/components/ui/breadcrumb.tsx +125 -0
  99. package/template/apps/asas-tanstack/src/components/ui/button-group.tsx +87 -0
  100. package/template/apps/asas-tanstack/src/components/ui/button.tsx +56 -0
  101. package/template/apps/asas-tanstack/src/components/ui/calendar.tsx +223 -0
  102. package/template/apps/asas-tanstack/src/components/ui/card.tsx +94 -0
  103. package/template/apps/asas-tanstack/src/components/ui/chart.tsx +369 -0
  104. package/template/apps/asas-tanstack/src/components/ui/checkbox.tsx +27 -0
  105. package/template/apps/asas-tanstack/src/components/ui/collapsible.tsx +19 -0
  106. package/template/apps/asas-tanstack/src/components/ui/combobox.tsx +300 -0
  107. package/template/apps/asas-tanstack/src/components/ui/dialog.tsx +149 -0
  108. package/template/apps/asas-tanstack/src/components/ui/direction.tsx +5 -0
  109. package/template/apps/asas-tanstack/src/components/ui/directional-icon.tsx +20 -0
  110. package/template/apps/asas-tanstack/src/components/ui/dropdown-menu.tsx +267 -0
  111. package/template/apps/asas-tanstack/src/components/ui/field.tsx +225 -0
  112. package/template/apps/asas-tanstack/src/components/ui/input-group.tsx +147 -0
  113. package/template/apps/asas-tanstack/src/components/ui/input-otp.tsx +20 -0
  114. package/template/apps/asas-tanstack/src/components/ui/input.tsx +20 -0
  115. package/template/apps/asas-tanstack/src/components/ui/label.tsx +18 -0
  116. package/template/apps/asas-tanstack/src/components/ui/popover.tsx +50 -0
  117. package/template/apps/asas-tanstack/src/components/ui/radio-group.tsx +10 -0
  118. package/template/apps/asas-tanstack/src/components/ui/resizable.tsx +47 -0
  119. package/template/apps/asas-tanstack/src/components/ui/scroll-area.tsx +52 -0
  120. package/template/apps/asas-tanstack/src/components/ui/select.tsx +190 -0
  121. package/template/apps/asas-tanstack/src/components/ui/separator.tsx +23 -0
  122. package/template/apps/asas-tanstack/src/components/ui/sheet.tsx +127 -0
  123. package/template/apps/asas-tanstack/src/components/ui/sidebar.tsx +716 -0
  124. package/template/apps/asas-tanstack/src/components/ui/skeleton.tsx +13 -0
  125. package/template/apps/asas-tanstack/src/components/ui/slider.tsx +13 -0
  126. package/template/apps/asas-tanstack/src/components/ui/spinner.tsx +11 -0
  127. package/template/apps/asas-tanstack/src/components/ui/switch.tsx +8 -0
  128. package/template/apps/asas-tanstack/src/components/ui/table.tsx +119 -0
  129. package/template/apps/asas-tanstack/src/components/ui/tabs.tsx +80 -0
  130. package/template/apps/asas-tanstack/src/components/ui/textarea.tsx +18 -0
  131. package/template/apps/asas-tanstack/src/components/ui/toggle-group.tsx +8 -0
  132. package/template/apps/asas-tanstack/src/components/ui/toggle.tsx +44 -0
  133. package/template/apps/asas-tanstack/src/components/ui/tooltip.tsx +68 -0
  134. package/template/apps/asas-tanstack/src/components.ts +35 -0
  135. package/template/apps/asas-tanstack/src/copy.ts +1207 -0
  136. package/template/apps/asas-tanstack/src/first-run.ts +16 -0
  137. package/template/apps/asas-tanstack/src/hooks/use-mobile.ts +19 -0
  138. package/template/apps/asas-tanstack/src/lib/utils.ts +6 -0
  139. package/template/apps/asas-tanstack/src/links.ts +38 -0
  140. package/template/apps/asas-tanstack/src/locale-switch.tsx +28 -0
  141. package/template/apps/asas-tanstack/src/no-organization.tsx +108 -0
  142. package/template/apps/asas-tanstack/src/quiet-abort.ts +25 -0
  143. package/template/apps/asas-tanstack/src/redirect.ts +39 -0
  144. package/template/apps/asas-tanstack/src/request-headers.ts +11 -0
  145. package/template/apps/asas-tanstack/src/routeTree.gen.ts +424 -0
  146. package/template/apps/asas-tanstack/src/router.tsx +18 -0
  147. package/template/apps/asas-tanstack/src/routes/(screens)/dashboard/files.ts +11 -0
  148. package/template/apps/asas-tanstack/src/routes/(screens)/dashboard/screen.json +4242 -0
  149. package/template/apps/asas-tanstack/src/routes/(screens)/dashboard/types.ts +160 -0
  150. package/template/apps/asas-tanstack/src/routes/(screens)/dashboard.$.tsx +17 -0
  151. package/template/apps/asas-tanstack/src/routes/(screens)/dashboard.index.tsx +10 -0
  152. package/template/apps/asas-tanstack/src/routes/(screens)/dashboard.tsx +13 -0
  153. package/template/apps/asas-tanstack/src/routes/(screens)/portal/files.ts +9 -0
  154. package/template/apps/asas-tanstack/src/routes/(screens)/portal/screen.json +1564 -0
  155. package/template/apps/asas-tanstack/src/routes/(screens)/portal/types.ts +94 -0
  156. package/template/apps/asas-tanstack/src/routes/(screens)/portal.$.tsx +17 -0
  157. package/template/apps/asas-tanstack/src/routes/(screens)/portal.index.tsx +10 -0
  158. package/template/apps/asas-tanstack/src/routes/(screens)/portal.tsx +13 -0
  159. package/template/apps/asas-tanstack/src/routes/__root.tsx +99 -0
  160. package/template/apps/asas-tanstack/src/routes/api/$.ts +11 -0
  161. package/template/apps/asas-tanstack/src/routes/auth.accept-invitation.tsx +108 -0
  162. package/template/apps/asas-tanstack/src/routes/auth.first-run.tsx +114 -0
  163. package/template/apps/asas-tanstack/src/routes/auth.forgot-password.tsx +94 -0
  164. package/template/apps/asas-tanstack/src/routes/auth.handoff.ts +39 -0
  165. package/template/apps/asas-tanstack/src/routes/auth.reset-password.tsx +16 -0
  166. package/template/apps/asas-tanstack/src/routes/auth.set-password.tsx +16 -0
  167. package/template/apps/asas-tanstack/src/routes/auth.sign-in.tsx +98 -0
  168. package/template/apps/asas-tanstack/src/routes/auth.sign-up.tsx +143 -0
  169. package/template/apps/asas-tanstack/src/routes/index.tsx +146 -0
  170. package/template/apps/asas-tanstack/src/routes/unauthorized.tsx +134 -0
  171. package/template/apps/asas-tanstack/src/screen-form.tsx +36 -0
  172. package/template/apps/asas-tanstack/src/screen-list.tsx +140 -0
  173. package/template/apps/asas-tanstack/src/screen-names.ts +10 -0
  174. package/template/apps/asas-tanstack/src/screens.tsx +888 -0
  175. package/template/apps/asas-tanstack/src/server.ts +26 -0
  176. package/template/apps/asas-tanstack/src/slide.ts +22 -0
  177. package/template/apps/asas-tanstack/src/start.ts +57 -0
  178. package/template/apps/asas-tanstack/src/styles.css +163 -0
  179. package/template/apps/asas-tanstack/src/theme.ts +5 -0
  180. package/template/apps/asas-tanstack/tsconfig.json +19 -0
  181. package/template/apps/asas-tanstack/vite.config.ts +34 -0
  182. package/template/package.json +16 -0
  183. package/template/templates/asas/.claude/skills/add-field/SKILL.md +27 -0
  184. package/template/templates/asas/.claude/skills/add-kayan/SKILL.md +26 -0
  185. package/template/templates/asas/.claude/skills/eject-admin-piece/SKILL.md +28 -0
  186. package/template/templates/asas/.claude/skills/upgrade-mithaq/SKILL.md +35 -0
  187. package/template/templates/asas/.env.example +33 -0
  188. package/template/templates/asas/AGENTS.md +101 -0
  189. package/template/templates/asas/CLAUDE.md +1 -0
  190. package/template/templates/asas/README.md +1056 -0
  191. package/template/templates/asas/mithaq.hints.json +25 -0
  192. package/template/templates/asas/package.json +53 -0
  193. package/template/templates/asas/src/asas.ts +118 -0
  194. package/template/templates/asas/src/backoffice-http.ts +117 -0
  195. package/template/templates/asas/src/dev-setup.ts +112 -0
  196. package/template/templates/asas/src/local-database.ts +22 -0
  197. package/template/templates/asas/src/messages/account.json +132 -0
  198. package/template/templates/asas/src/messages/auditLog.json +304 -0
  199. package/template/templates/asas/src/messages/backofficeLog.json +132 -0
  200. package/template/templates/asas/src/messages/courses.json +312 -0
  201. package/template/templates/asas/src/messages/enrollments.json +60 -0
  202. package/template/templates/asas/src/messages/invitation.json +82 -0
  203. package/template/templates/asas/src/messages/localUsers.json +48 -0
  204. package/template/templates/asas/src/messages/media.json +76 -0
  205. package/template/templates/asas/src/messages/member.json +62 -0
  206. package/template/templates/asas/src/messages/memberRoles.json +48 -0
  207. package/template/templates/asas/src/messages/mithaq.json +214 -0
  208. package/template/templates/asas/src/messages/organization.json +72 -0
  209. package/template/templates/asas/src/messages/organizationRole.json +62 -0
  210. package/template/templates/asas/src/messages/roles.json +72 -0
  211. package/template/templates/asas/src/messages/session.json +102 -0
  212. package/template/templates/asas/src/messages/sessions.json +136 -0
  213. package/template/templates/asas/src/messages/settings.json +64 -0
  214. package/template/templates/asas/src/messages/tags.json +48 -0
  215. package/template/templates/asas/src/messages/user.json +112 -0
  216. package/template/templates/asas/src/messages/verification.json +62 -0
  217. package/template/templates/asas/src/migrations/20260920080701_parched_tombstone/migration.sql +177 -0
  218. package/template/templates/asas/src/migrations/20260920080701_parched_tombstone/snapshot.json +2169 -0
  219. package/template/templates/asas/src/migrations/20260920230505_zippy_ben_urich/migration.sql +1 -0
  220. package/template/templates/asas/src/migrations/20260920230505_zippy_ben_urich/snapshot.json +2182 -0
  221. package/template/templates/asas/src/migrations/20260920231219_slim_retro_girl/migration.sql +20 -0
  222. package/template/templates/asas/src/migrations/20260920231219_slim_retro_girl/snapshot.json +2409 -0
  223. package/template/templates/asas/src/migrations/20260922082945_military_ironclad/migration.sql +15 -0
  224. package/template/templates/asas/src/migrations/20260922082945_military_ironclad/snapshot.json +2627 -0
  225. package/template/templates/asas/src/migrations/20260922112630_bitter_chat/migration.sql +5 -0
  226. package/template/templates/asas/src/migrations/20260922112630_bitter_chat/snapshot.json +2691 -0
  227. package/template/templates/asas/src/migrations/20260923235915_foamy_rachel_grey/migration.sql +8 -0
  228. package/template/templates/asas/src/migrations/20260923235915_foamy_rachel_grey/snapshot.json +2795 -0
  229. package/template/templates/asas/src/migrations/20260926145709_clean_the_initiative/migration.sql +3 -0
  230. package/template/templates/asas/src/migrations/20260926145709_clean_the_initiative/snapshot.json +2834 -0
  231. package/template/templates/asas/src/migrations/20260927212525_bent_prowler/migration.sql +9 -0
  232. package/template/templates/asas/src/migrations/20260927212525_bent_prowler/snapshot.json +2870 -0
  233. package/template/templates/asas/src/migrations/20260927223441_tranquil_bromley/migration.sql +1 -0
  234. package/template/templates/asas/src/migrations/20260927223441_tranquil_bromley/snapshot.json +2881 -0
  235. package/template/templates/asas/src/migrations/20260928030047_outgoing_wraith/migration.sql +15 -0
  236. package/template/templates/asas/src/migrations/20260928030047_outgoing_wraith/snapshot.json +3073 -0
  237. package/template/templates/asas/src/migrations/20260929024407_grey_morlun/migration.sql +21 -0
  238. package/template/templates/asas/src/migrations/20260929024407_grey_morlun/snapshot.json +3098 -0
  239. package/template/templates/asas/src/migrations/20260929130530_bored_jackal/migration.sql +21 -0
  240. package/template/templates/asas/src/migrations/20260929130530_bored_jackal/snapshot.json +3124 -0
  241. package/template/templates/asas/src/migrations/20260930102924_material_newton_destine/migration.sql +32 -0
  242. package/template/templates/asas/src/migrations/20260930102924_material_newton_destine/snapshot.json +3324 -0
  243. package/template/templates/asas/src/migrations/20261003022353_clumsy_taskmaster/migration.sql +2 -0
  244. package/template/templates/asas/src/migrations/20261003022353_clumsy_taskmaster/snapshot.json +3350 -0
  245. package/template/templates/asas/src/migrations/20261003143249_premium_red_shift/migration.sql +21 -0
  246. package/template/templates/asas/src/migrations/20261003143249_premium_red_shift/snapshot.json +3635 -0
  247. package/template/templates/asas/src/migrations/20261008215349_square_norrin_radd/migration.sql +8 -0
  248. package/template/templates/asas/src/migrations/20261008215349_square_norrin_radd/snapshot.json +3635 -0
  249. package/template/templates/asas/src/migrations/20261008230204_many_scarecrow/migration.sql +18 -0
  250. package/template/templates/asas/src/migrations/20261008230204_many_scarecrow/snapshot.json +3635 -0
  251. package/template/templates/asas/src/migrations/20261010005521_elite_giant_girl/migration.sql +18 -0
  252. package/template/templates/asas/src/migrations/20261010005521_elite_giant_girl/snapshot.json +3635 -0
  253. package/template/templates/asas/src/migrations/20261010120822_needy_thunderbolt/migration.sql +11 -0
  254. package/template/templates/asas/src/migrations/20261010120822_needy_thunderbolt/snapshot.json +3667 -0
  255. package/template/templates/asas/src/migrations/20261012000752_organization_ownership/migration.sql +48 -0
  256. package/template/templates/asas/src/migrations/20261012000752_organization_ownership/snapshot.json +3891 -0
  257. package/template/templates/asas/src/migrations/20261014221355_tags_restrict/migration.sql +1 -0
  258. package/template/templates/asas/src/migrations/20261014221355_tags_restrict/snapshot.json +3881 -0
  259. package/template/templates/asas/src/migrations/20261014222218_one_seat_per_session/migration.sql +1 -0
  260. package/template/templates/asas/src/migrations/20261014222218_one_seat_per_session/snapshot.json +3894 -0
  261. package/template/templates/asas/src/migrations/20261014223522_session_archive_reason/migration.sql +1 -0
  262. package/template/templates/asas/src/migrations/20261014223522_session_archive_reason/snapshot.json +3907 -0
  263. package/template/templates/asas/src/migrations/20261014225728_course_archive_by_operation/migration.sql +1 -0
  264. package/template/templates/asas/src/migrations/20261014225728_course_archive_by_operation/snapshot.json +3907 -0
  265. package/template/templates/asas/src/migrations/20261015042444_organization_names/migration.sql +1 -0
  266. package/template/templates/asas/src/migrations/20261015042444_organization_names/snapshot.json +3920 -0
  267. package/template/templates/asas/src/migrations/20261015053212_member_last_seen/migration.sql +1 -0
  268. package/template/templates/asas/src/migrations/20261015053212_member_last_seen/snapshot.json +3933 -0
  269. package/template/templates/asas/src/migrations/20261015093203_activity_and_staff_history/migration.sql +15 -0
  270. package/template/templates/asas/src/migrations/20261015093203_activity_and_staff_history/snapshot.json +4113 -0
  271. package/template/templates/asas/src/migrations/20261015095752_portal/migration.sql +2 -0
  272. package/template/templates/asas/src/migrations/20261015095752_portal/snapshot.json +4113 -0
  273. package/template/templates/asas/src/migrations/20261015135529_better_auth_indexes/migration.sql +9 -0
  274. package/template/templates/asas/src/migrations/20261015135529_better_auth_indexes/snapshot.json +4302 -0
  275. package/template/templates/asas/src/migrations/20261015162438_audit_changes_json/migration.sql +27 -0
  276. package/template/templates/asas/src/migrations/20261015162438_audit_changes_json/snapshot.json +4289 -0
  277. package/template/templates/asas/src/migrations/drizzle.config.ts +11 -0
  278. package/template/templates/asas/src/migrations/schema.ts +30 -0
  279. package/template/templates/asas/src/mithaq.ts +4 -0
  280. package/template/templates/asas/src/organizations.ts +3 -0
  281. package/template/templates/asas/src/seed.ts +427 -0
  282. package/template/templates/asas/src/ui-backoffice/home.tsx +63 -0
  283. package/template/templates/asas/src/ui-backoffice/organization-actions.tsx +121 -0
  284. package/template/templates/asas/src/ui-backoffice/record-page.tsx +30 -0
  285. package/template/templates/asas/src/ui-backoffice/role-cells.tsx +59 -0
  286. package/template/templates/asas/src/ui-backoffice/user-actions.tsx +249 -0
  287. package/template/templates/asas/src/ui-dashboard/dashboard.tsx +300 -0
  288. package/template/templates/asas/src/ui-dashboard/home.tsx +73 -0
  289. package/template/templates/asas/src/ui-dashboard/members-card.tsx +147 -0
  290. package/template/templates/asas/src/ui-dashboard/members.tsx +829 -0
  291. package/template/templates/asas/src/ui-dashboard/theme-provider.tsx +10 -0
  292. package/template/templates/asas/src/ui-dashboard/versions.tsx +446 -0
  293. package/template/templates/asas/src/ui-portal/courses-home.tsx +96 -0
  294. package/template/templates/asas/src/ui-portal/home.tsx +73 -0
  295. package/template/templates/asas/src/ui-portal/page.tsx +11 -0
  296. package/template/templates/features/audit-log/audit-log/audit-log.ts +284 -0
  297. package/template/templates/features/audit-log/backoffice-log/backoffice-log.ts +67 -0
  298. package/template/templates/features/audit-log/index.ts +4 -0
  299. package/template/templates/features/audit-log/package.json +13 -0
  300. package/template/templates/features/auth/index.ts +11 -0
  301. package/template/templates/features/auth/local-users/local-users.ts +143 -0
  302. package/template/templates/features/auth/package.json +13 -0
  303. package/template/templates/features/auth/user/account.access.ts +8 -0
  304. package/template/templates/features/auth/user/account.ts +31 -0
  305. package/template/templates/features/auth/user/index.ts +18 -0
  306. package/template/templates/features/auth/user/invitation.access.ts +4 -0
  307. package/template/templates/features/auth/user/invitation.ts +27 -0
  308. package/template/templates/features/auth/user/member.access.ts +10 -0
  309. package/template/templates/features/auth/user/member.screens.ts +37 -0
  310. package/template/templates/features/auth/user/member.ts +26 -0
  311. package/template/templates/features/auth/user/organization.access.ts +20 -0
  312. package/template/templates/features/auth/user/organization.screens.ts +37 -0
  313. package/template/templates/features/auth/user/organization.ts +25 -0
  314. package/template/templates/features/auth/user/organizationRole.access.ts +8 -0
  315. package/template/templates/features/auth/user/organizationRole.ts +25 -0
  316. package/template/templates/features/auth/user/session.access.ts +8 -0
  317. package/template/templates/features/auth/user/session.ts +28 -0
  318. package/template/templates/features/auth/user/user.access.ts +30 -0
  319. package/template/templates/features/auth/user/user.screens.ts +45 -0
  320. package/template/templates/features/auth/user/user.ts +31 -0
  321. package/template/templates/features/auth/user/verification.access.ts +8 -0
  322. package/template/templates/features/auth/user/verification.ts +23 -0
  323. package/template/templates/features/courses/courses/courses.ts +601 -0
  324. package/template/templates/features/courses/courses/cover-reads.ts +33 -0
  325. package/template/templates/features/courses/courses/ui/archived-badge.tsx +9 -0
  326. package/template/templates/features/courses/courses/ui/fee-cell.tsx +19 -0
  327. package/template/templates/features/courses/courses/ui/no-courses.tsx +13 -0
  328. package/template/templates/features/courses/courses/ui/status-cell.tsx +33 -0
  329. package/template/templates/features/courses/courses/ui/unpublish-button.tsx +15 -0
  330. package/template/templates/features/courses/domain/archive.ts +39 -0
  331. package/template/templates/features/courses/domain/on-offer.ts +6 -0
  332. package/template/templates/features/courses/enrollments/enrollments.ts +309 -0
  333. package/template/templates/features/courses/enrollments/ui/session-cell.tsx +75 -0
  334. package/template/templates/features/courses/enrollments/ui/session-labels.tsx +36 -0
  335. package/template/templates/features/courses/index.ts +8 -0
  336. package/template/templates/features/courses/package.json +24 -0
  337. package/template/templates/features/courses/portal/ui/catalogue.tsx +86 -0
  338. package/template/templates/features/courses/portal/ui/course.tsx +176 -0
  339. package/template/templates/features/courses/portal/ui/enrollments.tsx +170 -0
  340. package/template/templates/features/courses/portal/ui/parts.tsx +95 -0
  341. package/template/templates/features/courses/portal/ui/reads.ts +76 -0
  342. package/template/templates/features/courses/portal/ui/rules.ts +87 -0
  343. package/template/templates/features/courses/portal/ui/shell.tsx +194 -0
  344. package/template/templates/features/courses/sessions/seats.ts +42 -0
  345. package/template/templates/features/courses/sessions/sessions.ts +186 -0
  346. package/template/templates/features/media/index.ts +10 -0
  347. package/template/templates/features/media/media/media.ts +131 -0
  348. package/template/templates/features/media/media/ui/preview.tsx +143 -0
  349. package/template/templates/features/media/package.json +19 -0
  350. package/template/templates/features/roles/index.ts +4 -0
  351. package/template/templates/features/roles/member-roles/member-roles.ts +207 -0
  352. package/template/templates/features/roles/package.json +21 -0
  353. package/template/templates/features/roles/roles/roles.ts +184 -0
  354. package/template/templates/features/roles/roles/ui/role-form.tsx +267 -0
  355. package/template/templates/features/roles/roles/ui/roles.tsx +190 -0
  356. package/template/templates/features/settings/index.ts +3 -0
  357. package/template/templates/features/settings/package.json +13 -0
  358. package/template/templates/features/settings/settings/settings.ts +64 -0
  359. package/template/templates/features/tags/index.ts +3 -0
  360. package/template/templates/features/tags/package.json +14 -0
  361. package/template/templates/features/tags/tags/tags.ts +80 -0
  362. package/template/templates/mithaq/components.json +22 -0
  363. package/template/templates/mithaq/package.json +33 -0
  364. package/template/templates/mithaq/src/mail/index.ts +32 -0
  365. package/template/templates/mithaq/src/mail/mailers.ts +36 -0
  366. package/template/templates/mithaq/src/mithaq/audit-sink.ts +111 -0
  367. package/template/templates/mithaq/src/mithaq/auth/backoffice-roles.ts +108 -0
  368. package/template/templates/mithaq/src/mithaq/auth/index.ts +1859 -0
  369. package/template/templates/mithaq/src/mithaq/auth/organizations.ts +80 -0
  370. package/template/templates/mithaq/src/mithaq/pages.ts +83 -0
  371. package/template/templates/mithaq/src/mithaq/rich-text-nodes.ts +19 -0
  372. package/template/templates/mithaq/src/mithaq.ts +593 -0
  373. package/template/templates/mithaq/src/roles/default-member-roles.ts +29 -0
  374. package/template/templates/mithaq/src/roles/grants.ts +47 -0
  375. package/template/templates/mithaq/src/roles/member-access.ts +11 -0
  376. package/template/templates/mithaq/src/roles/statements.ts +13 -0
  377. package/template/templates/mithaq/src/roles/system-roles.ts +16 -0
  378. package/template/templates/mithaq/src/roles/tenant-access.ts +260 -0
  379. package/template/templates/mithaq/src/roles/tenant-roles.ts +321 -0
  380. package/template/templates/mithaq/src/steps/expected-updated-at.ts +41 -0
  381. package/template/templates/mithaq/src/storage/defaults.ts +156 -0
  382. package/template/templates/mithaq/src/storage/index.ts +97 -0
  383. package/template/templates/mithaq/src/storage/local.ts +143 -0
  384. package/template/templates/mithaq/src/storage/r2.ts +5 -0
  385. package/template/templates/mithaq/src/storage/s3.ts +91 -0
  386. package/template/templates/mithaq/src/storage/uploadthing.ts +59 -0
  387. package/template/templates/mithaq/src/ui/activity-page.tsx +33 -0
  388. package/template/templates/mithaq/src/ui/activity.tsx +527 -0
  389. package/template/templates/mithaq/src/ui/app-shell.tsx +268 -0
  390. package/template/templates/mithaq/src/ui/kpi-card.tsx +25 -0
  391. package/template/templates/mithaq/src/ui/record-page.tsx +50 -0
  392. package/template/templates/mithaq/src/ui/rich-text-nodes.tsx +33 -0
  393. package/template/templates/mithaq/src/ui/screen-nav.tsx +28 -0
  394. package/template/templates/mithaq/src/ui/table-page.tsx +9 -0
  395. package/template/templates/mithaq/src/ui/top-shell.tsx +60 -0
  396. package/README.md +0 -3
@@ -0,0 +1,64 @@
1
+ {
2
+ "contactEmail": {
3
+ "$value": {
4
+ "ar": "بريد التواصل",
5
+ "en": "Contact email"
6
+ },
7
+ "invalid": {
8
+ "ar": "هذا ليس بريدا إلكترونيا.",
9
+ "en": "This is not an email address."
10
+ },
11
+ "required": {
12
+ "ar": "هذا الحقل مطلوب.",
13
+ "en": "This field is required."
14
+ }
15
+ },
16
+ "globalType": {
17
+ "invalid": {
18
+ "ar": "هذا ليس نصا.",
19
+ "en": "This is not text."
20
+ },
21
+ "required": {
22
+ "ar": "هذا الحقل مطلوب.",
23
+ "en": "This field is required."
24
+ }
25
+ },
26
+ "id": {
27
+ "invalid": {
28
+ "ar": "هذا ليس معرفا فريدا.",
29
+ "en": "This is not a unique identifier."
30
+ },
31
+ "required": {
32
+ "ar": "هذا الحقل مطلوب.",
33
+ "en": "This field is required."
34
+ }
35
+ },
36
+ "maintenance": {
37
+ "$value": {
38
+ "ar": "الصيانة",
39
+ "en": "Maintenance"
40
+ },
41
+ "description": {
42
+ "ar": "ما دام هذا مفعلا، تخبر البوابة الطلاب بأنها مغلقة للصيانة. ويواصل الموظفون عملهم.",
43
+ "en": "While this is on, the portal tells students it is closed for maintenance. Staff keep working."
44
+ },
45
+ "invalid": {
46
+ "ar": "يجاب على هذا بنعم أو لا.",
47
+ "en": "This is answered yes or no."
48
+ },
49
+ "required": {
50
+ "ar": "هذا الحقل مطلوب.",
51
+ "en": "This field is required."
52
+ }
53
+ },
54
+ "organization": {
55
+ "ar": "المؤسسة",
56
+ "en": "Organization"
57
+ },
58
+ "page": {
59
+ "description": {
60
+ "ar": "أين يتواصل الطلاب مع المدرسة، وهل البوابة مفتوحة لهم.",
61
+ "en": "Where students reach the school, and whether the portal is open to them."
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "id": {
3
+ "invalid": {
4
+ "ar": "هذا ليس معرفا فريدا.",
5
+ "en": "This is not a unique identifier."
6
+ },
7
+ "required": {
8
+ "ar": "هذا الحقل مطلوب.",
9
+ "en": "This field is required."
10
+ }
11
+ },
12
+ "name": {
13
+ "$value": {
14
+ "ar": "الاسم",
15
+ "en": "Name"
16
+ },
17
+ "invalid": {
18
+ "ar": "هذا ليس نصا.",
19
+ "en": "This is not text."
20
+ },
21
+ "maxLength": {
22
+ "ar": "القيمة طويلة جدًا.",
23
+ "en": "The value is too long."
24
+ },
25
+ "required": {
26
+ "ar": "هذا الحقل مطلوب.",
27
+ "en": "This field is required."
28
+ }
29
+ },
30
+ "organization": {
31
+ "ar": "المؤسسة",
32
+ "en": "Organization"
33
+ },
34
+ "page": {
35
+ "description": {
36
+ "ar": "تسميات تجمع بها المؤسسة سجلاتها.",
37
+ "en": "Labels the organization groups its records by."
38
+ }
39
+ },
40
+ "plural": {
41
+ "ar": "الوسوم",
42
+ "en": "Tags"
43
+ },
44
+ "singular": {
45
+ "ar": "وسم",
46
+ "en": "Tag"
47
+ }
48
+ }
@@ -0,0 +1,112 @@
1
+ {
2
+ "banExpires": {
3
+ "invalid": {
4
+ "ar": "هذا ليس تاريخا ووقتا.",
5
+ "en": "This is not a date and time."
6
+ },
7
+ "required": {
8
+ "ar": "هذا الحقل مطلوب.",
9
+ "en": "This field is required."
10
+ }
11
+ },
12
+ "banReason": {
13
+ "invalid": {
14
+ "ar": "هذا ليس نصا.",
15
+ "en": "This is not text."
16
+ },
17
+ "required": {
18
+ "ar": "هذا الحقل مطلوب.",
19
+ "en": "This field is required."
20
+ }
21
+ },
22
+ "banned": {
23
+ "invalid": {
24
+ "ar": "يجاب على هذا بنعم أو لا.",
25
+ "en": "This is answered yes or no."
26
+ },
27
+ "required": {
28
+ "ar": "هذا الحقل مطلوب.",
29
+ "en": "This field is required."
30
+ }
31
+ },
32
+ "createdAt": {
33
+ "invalid": {
34
+ "ar": "هذا ليس تاريخا ووقتا.",
35
+ "en": "This is not a date and time."
36
+ },
37
+ "required": {
38
+ "ar": "هذا الحقل مطلوب.",
39
+ "en": "This field is required."
40
+ }
41
+ },
42
+ "email": {
43
+ "invalid": {
44
+ "ar": "هذا ليس نصا.",
45
+ "en": "This is not text."
46
+ },
47
+ "required": {
48
+ "ar": "هذا الحقل مطلوب.",
49
+ "en": "This field is required."
50
+ }
51
+ },
52
+ "emailVerified": {
53
+ "invalid": {
54
+ "ar": "يجاب على هذا بنعم أو لا.",
55
+ "en": "This is answered yes or no."
56
+ },
57
+ "required": {
58
+ "ar": "هذا الحقل مطلوب.",
59
+ "en": "This field is required."
60
+ }
61
+ },
62
+ "id": {
63
+ "invalid": {
64
+ "ar": "هذا ليس نصا.",
65
+ "en": "This is not text."
66
+ },
67
+ "required": {
68
+ "ar": "هذا الحقل مطلوب.",
69
+ "en": "This field is required."
70
+ }
71
+ },
72
+ "image": {
73
+ "invalid": {
74
+ "ar": "هذا ليس نصا.",
75
+ "en": "This is not text."
76
+ },
77
+ "required": {
78
+ "ar": "هذا الحقل مطلوب.",
79
+ "en": "This field is required."
80
+ }
81
+ },
82
+ "name": {
83
+ "invalid": {
84
+ "ar": "هذا ليس نصا.",
85
+ "en": "This is not text."
86
+ },
87
+ "required": {
88
+ "ar": "هذا الحقل مطلوب.",
89
+ "en": "This field is required."
90
+ }
91
+ },
92
+ "role": {
93
+ "invalid": {
94
+ "ar": "هذا ليس نصا.",
95
+ "en": "This is not text."
96
+ },
97
+ "required": {
98
+ "ar": "هذا الحقل مطلوب.",
99
+ "en": "This field is required."
100
+ }
101
+ },
102
+ "updatedAt": {
103
+ "invalid": {
104
+ "ar": "هذا ليس تاريخا ووقتا.",
105
+ "en": "This is not a date and time."
106
+ },
107
+ "required": {
108
+ "ar": "هذا الحقل مطلوب.",
109
+ "en": "This field is required."
110
+ }
111
+ }
112
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "createdAt": {
3
+ "invalid": {
4
+ "ar": "هذا ليس تاريخا ووقتا.",
5
+ "en": "This is not a date and time."
6
+ },
7
+ "required": {
8
+ "ar": "هذا الحقل مطلوب.",
9
+ "en": "This field is required."
10
+ }
11
+ },
12
+ "expiresAt": {
13
+ "invalid": {
14
+ "ar": "هذا ليس تاريخا ووقتا.",
15
+ "en": "This is not a date and time."
16
+ },
17
+ "required": {
18
+ "ar": "هذا الحقل مطلوب.",
19
+ "en": "This field is required."
20
+ }
21
+ },
22
+ "id": {
23
+ "invalid": {
24
+ "ar": "هذا ليس نصا.",
25
+ "en": "This is not text."
26
+ },
27
+ "required": {
28
+ "ar": "هذا الحقل مطلوب.",
29
+ "en": "This field is required."
30
+ }
31
+ },
32
+ "identifier": {
33
+ "invalid": {
34
+ "ar": "هذا ليس نصا.",
35
+ "en": "This is not text."
36
+ },
37
+ "required": {
38
+ "ar": "هذا الحقل مطلوب.",
39
+ "en": "This field is required."
40
+ }
41
+ },
42
+ "updatedAt": {
43
+ "invalid": {
44
+ "ar": "هذا ليس تاريخا ووقتا.",
45
+ "en": "This is not a date and time."
46
+ },
47
+ "required": {
48
+ "ar": "هذا الحقل مطلوب.",
49
+ "en": "This field is required."
50
+ }
51
+ },
52
+ "value": {
53
+ "invalid": {
54
+ "ar": "هذا ليس نصا.",
55
+ "en": "This is not text."
56
+ },
57
+ "required": {
58
+ "ar": "هذا الحقل مطلوب.",
59
+ "en": "This field is required."
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,177 @@
1
+ CREATE TABLE "account" (
2
+ "id" text PRIMARY KEY,
3
+ "account_id" text NOT NULL,
4
+ "provider_id" text NOT NULL,
5
+ "user_id" text NOT NULL,
6
+ "access_token" text,
7
+ "refresh_token" text,
8
+ "id_token" text,
9
+ "access_token_expires_at" timestamp(3) with time zone,
10
+ "refresh_token_expires_at" timestamp(3) with time zone,
11
+ "scope" text,
12
+ "password" text,
13
+ "created_at" timestamp(3) with time zone NOT NULL,
14
+ "updated_at" timestamp(3) with time zone NOT NULL
15
+ );
16
+ --> statement-breakpoint
17
+ CREATE TABLE "courses" (
18
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
19
+ "title" varchar(120) NOT NULL,
20
+ "summary" varchar(200),
21
+ "fee" numeric,
22
+ "archived" boolean,
23
+ "archive_reason" varchar(200),
24
+ "tenant_id" text,
25
+ "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
26
+ "created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
27
+ );
28
+ --> statement-breakpoint
29
+ CREATE TABLE "enrollments" (
30
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
31
+ "session_id" uuid,
32
+ "student_id" text,
33
+ "deleted_at" timestamp(3) with time zone,
34
+ "tenant_id" text,
35
+ "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
36
+ "created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
37
+ );
38
+ --> statement-breakpoint
39
+ CREATE TABLE "invitation" (
40
+ "id" text PRIMARY KEY,
41
+ "organization_id" text NOT NULL,
42
+ "email" text NOT NULL,
43
+ "role" text,
44
+ "status" text NOT NULL,
45
+ "expires_at" timestamp(3) with time zone NOT NULL,
46
+ "created_at" timestamp(3) with time zone NOT NULL,
47
+ "inviter_id" text NOT NULL,
48
+ "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL
49
+ );
50
+ --> statement-breakpoint
51
+ CREATE TABLE "local_users" (
52
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
53
+ "email" text NOT NULL UNIQUE,
54
+ "hash" text NOT NULL,
55
+ "salt" text NOT NULL,
56
+ "sessions" text,
57
+ "login_attempts" numeric DEFAULT '0',
58
+ "lock_until" timestamp(3) with time zone,
59
+ "reset_password_token" text,
60
+ "reset_password_expiration" timestamp(3) with time zone,
61
+ "_verified" boolean DEFAULT false,
62
+ "_verification_token" text,
63
+ "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
64
+ "created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
65
+ );
66
+ --> statement-breakpoint
67
+ CREATE TABLE "member" (
68
+ "id" text PRIMARY KEY,
69
+ "organization_id" text NOT NULL,
70
+ "user_id" text NOT NULL,
71
+ "role" text NOT NULL,
72
+ "created_at" timestamp(3) with time zone NOT NULL,
73
+ "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL
74
+ );
75
+ --> statement-breakpoint
76
+ CREATE TABLE "organization" (
77
+ "id" text PRIMARY KEY,
78
+ "name" text NOT NULL,
79
+ "slug" text NOT NULL UNIQUE,
80
+ "logo" text,
81
+ "created_at" timestamp(3) with time zone NOT NULL,
82
+ "metadata" text,
83
+ "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL
84
+ );
85
+ --> statement-breakpoint
86
+ CREATE TABLE "organization_role" (
87
+ "id" text PRIMARY KEY,
88
+ "organization_id" text NOT NULL,
89
+ "role" text NOT NULL,
90
+ "permission" text NOT NULL,
91
+ "created_at" timestamp(3) with time zone NOT NULL,
92
+ "updated_at" timestamp(3) with time zone
93
+ );
94
+ --> statement-breakpoint
95
+ CREATE TABLE "roles" (
96
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
97
+ "name" varchar(60) NOT NULL,
98
+ "permissions" text[] NOT NULL,
99
+ "tenant_id" text,
100
+ "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
101
+ "created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
102
+ );
103
+ --> statement-breakpoint
104
+ CREATE TABLE "session" (
105
+ "id" text PRIMARY KEY,
106
+ "expires_at" timestamp(3) with time zone NOT NULL,
107
+ "token" text NOT NULL UNIQUE,
108
+ "created_at" timestamp(3) with time zone NOT NULL,
109
+ "updated_at" timestamp(3) with time zone NOT NULL,
110
+ "ip_address" text,
111
+ "user_agent" text,
112
+ "user_id" text NOT NULL,
113
+ "active_organization_id" text
114
+ );
115
+ --> statement-breakpoint
116
+ CREATE TABLE "course_sessions" (
117
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
118
+ "course_id" uuid NOT NULL,
119
+ "starts_at" timestamp(3) with time zone NOT NULL,
120
+ "capacity" numeric,
121
+ "tenant_id" text,
122
+ "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
123
+ "created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
124
+ );
125
+ --> statement-breakpoint
126
+ CREATE TABLE "settings" (
127
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
128
+ "site_title" varchar(120) NOT NULL,
129
+ "maintenance" boolean,
130
+ "tenant_id" text NOT NULL UNIQUE,
131
+ "global_type" text DEFAULT 'settings' NOT NULL,
132
+ "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
133
+ "created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
134
+ );
135
+ --> statement-breakpoint
136
+ CREATE TABLE "user" (
137
+ "id" text PRIMARY KEY,
138
+ "name" text NOT NULL,
139
+ "email" text NOT NULL UNIQUE,
140
+ "email_verified" boolean NOT NULL,
141
+ "image" text,
142
+ "created_at" timestamp(3) with time zone NOT NULL,
143
+ "updated_at" timestamp(3) with time zone NOT NULL
144
+ );
145
+ --> statement-breakpoint
146
+ CREATE TABLE "verification" (
147
+ "id" text PRIMARY KEY,
148
+ "identifier" text NOT NULL,
149
+ "value" text NOT NULL,
150
+ "expires_at" timestamp(3) with time zone NOT NULL,
151
+ "created_at" timestamp(3) with time zone NOT NULL,
152
+ "updated_at" timestamp(3) with time zone NOT NULL
153
+ );
154
+ --> statement-breakpoint
155
+ CREATE INDEX "courses_title_index" ON "courses" ("title");--> statement-breakpoint
156
+ CREATE INDEX "courses_created_at_index" ON "courses" ("created_at");--> statement-breakpoint
157
+ CREATE INDEX "enrollments_created_at_index" ON "enrollments" ("created_at");--> statement-breakpoint
158
+ CREATE INDEX "local_users_created_at_index" ON "local_users" ("created_at");--> statement-breakpoint
159
+ CREATE INDEX "roles_name_index" ON "roles" ("name");--> statement-breakpoint
160
+ CREATE INDEX "roles_created_at_index" ON "roles" ("created_at");--> statement-breakpoint
161
+ CREATE INDEX "course_sessions_created_at_index" ON "course_sessions" ("created_at");--> statement-breakpoint
162
+ CREATE INDEX "settings_created_at_index" ON "settings" ("created_at");--> statement-breakpoint
163
+ ALTER TABLE "account" ADD CONSTRAINT "account_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "user"("id") ON DELETE CASCADE;--> statement-breakpoint
164
+ ALTER TABLE "courses" ADD CONSTRAINT "courses_tenant_id_organization_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "organization"("id") ON DELETE SET NULL;--> statement-breakpoint
165
+ ALTER TABLE "enrollments" ADD CONSTRAINT "enrollments_session_id_course_sessions_id_fkey" FOREIGN KEY ("session_id") REFERENCES "course_sessions"("id") ON DELETE SET NULL;--> statement-breakpoint
166
+ ALTER TABLE "enrollments" ADD CONSTRAINT "enrollments_student_id_user_id_fkey" FOREIGN KEY ("student_id") REFERENCES "user"("id") ON DELETE SET NULL;--> statement-breakpoint
167
+ ALTER TABLE "enrollments" ADD CONSTRAINT "enrollments_tenant_id_organization_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "organization"("id") ON DELETE SET NULL;--> statement-breakpoint
168
+ ALTER TABLE "invitation" ADD CONSTRAINT "invitation_organization_id_organization_id_fkey" FOREIGN KEY ("organization_id") REFERENCES "organization"("id") ON DELETE CASCADE;--> statement-breakpoint
169
+ ALTER TABLE "invitation" ADD CONSTRAINT "invitation_inviter_id_user_id_fkey" FOREIGN KEY ("inviter_id") REFERENCES "user"("id") ON DELETE CASCADE;--> statement-breakpoint
170
+ ALTER TABLE "member" ADD CONSTRAINT "member_organization_id_organization_id_fkey" FOREIGN KEY ("organization_id") REFERENCES "organization"("id") ON DELETE CASCADE;--> statement-breakpoint
171
+ ALTER TABLE "member" ADD CONSTRAINT "member_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "user"("id") ON DELETE CASCADE;--> statement-breakpoint
172
+ ALTER TABLE "organization_role" ADD CONSTRAINT "organization_role_organization_id_organization_id_fkey" FOREIGN KEY ("organization_id") REFERENCES "organization"("id") ON DELETE CASCADE;--> statement-breakpoint
173
+ ALTER TABLE "roles" ADD CONSTRAINT "roles_tenant_id_organization_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "organization"("id") ON DELETE SET NULL;--> statement-breakpoint
174
+ ALTER TABLE "session" ADD CONSTRAINT "session_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "user"("id") ON DELETE CASCADE;--> statement-breakpoint
175
+ ALTER TABLE "course_sessions" ADD CONSTRAINT "course_sessions_course_id_courses_id_fkey" FOREIGN KEY ("course_id") REFERENCES "courses"("id") ON DELETE RESTRICT;--> statement-breakpoint
176
+ ALTER TABLE "course_sessions" ADD CONSTRAINT "course_sessions_tenant_id_organization_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "organization"("id") ON DELETE SET NULL;--> statement-breakpoint
177
+ ALTER TABLE "settings" ADD CONSTRAINT "settings_tenant_id_organization_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "organization"("id") ON DELETE RESTRICT;