create-zhx-monorepo 0.2.2 → 2.0.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 (349) hide show
  1. package/README.md +1 -1
  2. package/bin/index.js +0 -0
  3. package/package.json +3 -3
  4. package/templates/monorepo-starter/apps/dashboard/components.json +20 -0
  5. package/templates/monorepo-starter/apps/dashboard/eslint.config.js +1 -0
  6. package/templates/monorepo-starter/apps/dashboard/next-env.d.ts +6 -0
  7. package/templates/monorepo-starter/apps/dashboard/next.config.mjs +30 -0
  8. package/templates/monorepo-starter/apps/dashboard/package.json +43 -0
  9. package/templates/monorepo-starter/apps/dashboard/postcss.config.mjs +1 -0
  10. package/templates/monorepo-starter/apps/dashboard/src/app/(root)/admin/users/[id]/edit/page.tsx +8 -0
  11. package/templates/monorepo-starter/apps/dashboard/src/app/(root)/admin/users/[id]/page.tsx +104 -0
  12. package/templates/monorepo-starter/apps/dashboard/src/app/(root)/admin/users/new/page.tsx +7 -0
  13. package/templates/monorepo-starter/apps/dashboard/src/app/(root)/admin/users/page.tsx +88 -0
  14. package/templates/monorepo-starter/apps/dashboard/src/app/(root)/dashboard/data.json +614 -0
  15. package/templates/monorepo-starter/apps/dashboard/src/app/(root)/dashboard/page.tsx +21 -0
  16. package/templates/monorepo-starter/apps/dashboard/src/app/(root)/layout.tsx +40 -0
  17. package/templates/monorepo-starter/apps/dashboard/src/app/(root)/media/page.tsx +7 -0
  18. package/templates/monorepo-starter/apps/dashboard/src/app/(root)/users/account/page.tsx +75 -0
  19. package/templates/monorepo-starter/apps/dashboard/src/app/auth/[type]/page.tsx +19 -0
  20. package/templates/monorepo-starter/apps/dashboard/src/app/auth/layout.tsx +11 -0
  21. package/templates/monorepo-starter/apps/dashboard/src/app/auth/verify/page.tsx +11 -0
  22. package/templates/monorepo-starter/apps/dashboard/src/app/favicon.ico +0 -0
  23. package/templates/monorepo-starter/apps/dashboard/src/app/layout.tsx +28 -0
  24. package/templates/monorepo-starter/apps/dashboard/src/components/forms/AuthForm.tsx +345 -0
  25. package/templates/monorepo-starter/apps/dashboard/src/components/forms/CUUserForm.tsx +223 -0
  26. package/templates/monorepo-starter/apps/dashboard/src/components/forms/MediaForm.tsx +35 -0
  27. package/templates/monorepo-starter/apps/dashboard/src/components/forms/SocialAuthField.tsx +56 -0
  28. package/templates/monorepo-starter/apps/dashboard/src/components/layout/AppSidebar.tsx +141 -0
  29. package/templates/monorepo-starter/apps/dashboard/src/components/layout/DashboardChart.tsx +293 -0
  30. package/templates/monorepo-starter/apps/dashboard/src/components/layout/DashboardStats.tsx +104 -0
  31. package/templates/monorepo-starter/apps/dashboard/src/components/layout/Header.tsx +21 -0
  32. package/templates/monorepo-starter/apps/dashboard/src/components/layout/NavMain.tsx +99 -0
  33. package/templates/monorepo-starter/apps/dashboard/src/components/media/LibraryPopup.tsx +25 -0
  34. package/templates/monorepo-starter/apps/dashboard/src/components/media/MediaCard.tsx +175 -0
  35. package/templates/monorepo-starter/apps/dashboard/src/components/media/MediaDetails.tsx +58 -0
  36. package/templates/monorepo-starter/apps/dashboard/src/components/media/MediaGrid.tsx +51 -0
  37. package/templates/monorepo-starter/apps/dashboard/src/components/media/MediaUploader.tsx +182 -0
  38. package/templates/monorepo-starter/apps/dashboard/src/components/media/index.tsx +96 -0
  39. package/templates/monorepo-starter/apps/dashboard/src/components/shared/DateWrapper.tsx +43 -0
  40. package/templates/monorepo-starter/apps/dashboard/src/components/shared/GenericArrayField.tsx +189 -0
  41. package/templates/monorepo-starter/apps/dashboard/src/components/shared/GenericCUForm.tsx +124 -0
  42. package/templates/monorepo-starter/apps/dashboard/src/components/shared/GenericDetailsPage.tsx +291 -0
  43. package/templates/monorepo-starter/apps/dashboard/src/components/shared/GenericFormTable.tsx +189 -0
  44. package/templates/monorepo-starter/apps/dashboard/src/components/shared/GenericTable.tsx +244 -0
  45. package/templates/monorepo-starter/apps/dashboard/src/components/shared/ListPage.tsx +134 -0
  46. package/templates/monorepo-starter/apps/dashboard/src/components/shared/Pagination.tsx +120 -0
  47. package/templates/monorepo-starter/apps/dashboard/src/components/shared/SearchToolbar.tsx +133 -0
  48. package/templates/monorepo-starter/apps/dashboard/src/components/shared/ThemeSwitch.tsx +41 -0
  49. package/templates/monorepo-starter/apps/dashboard/src/components/shared/VerifyAuthPage.tsx +109 -0
  50. package/templates/monorepo-starter/apps/dashboard/src/components/skeleton/CUFormSkeleton.tsx +31 -0
  51. package/templates/monorepo-starter/apps/dashboard/src/components/skeleton/DashboardSke1eton.tsx +135 -0
  52. package/templates/monorepo-starter/apps/dashboard/src/components/skeleton/DetailsPageSkeleton.tsx +64 -0
  53. package/templates/monorepo-starter/apps/dashboard/src/components/skeleton/RootLayoutSkeleton.tsx +106 -0
  54. package/templates/monorepo-starter/apps/dashboard/src/components/skeleton/TableSkeleton.tsx +77 -0
  55. package/templates/monorepo-starter/apps/dashboard/src/components/user/UserAccountSection.tsx +530 -0
  56. package/templates/monorepo-starter/apps/dashboard/src/components/user/UserCard.tsx +54 -0
  57. package/templates/monorepo-starter/apps/dashboard/src/components/user/UserProfileSection.tsx +239 -0
  58. package/templates/monorepo-starter/apps/dashboard/src/components/user/UserSessions.tsx +154 -0
  59. package/templates/monorepo-starter/apps/dashboard/src/hooks/admin.ts +100 -0
  60. package/templates/monorepo-starter/apps/dashboard/src/hooks/auth.ts +59 -0
  61. package/templates/monorepo-starter/apps/dashboard/src/hooks/crud.ts +275 -0
  62. package/templates/monorepo-starter/apps/dashboard/src/hooks/lookup.ts +38 -0
  63. package/templates/monorepo-starter/apps/dashboard/src/hooks/media.ts +34 -0
  64. package/templates/monorepo-starter/apps/dashboard/src/hooks/user.ts +58 -0
  65. package/templates/monorepo-starter/apps/dashboard/src/lib/constants.ts +61 -0
  66. package/templates/monorepo-starter/apps/dashboard/src/providers/index.tsx +15 -0
  67. package/templates/monorepo-starter/apps/dashboard/src/providers/media-library.tsx +48 -0
  68. package/templates/monorepo-starter/apps/dashboard/tsconfig.json +20 -0
  69. package/templates/monorepo-starter/apps/web/components.json +20 -20
  70. package/templates/monorepo-starter/apps/web/eslint.config.js +1 -0
  71. package/templates/monorepo-starter/apps/web/next-env.d.ts +6 -6
  72. package/templates/monorepo-starter/apps/web/next.config.mjs +20 -6
  73. package/templates/monorepo-starter/apps/web/package.json +36 -31
  74. package/templates/monorepo-starter/apps/web/postcss.config.mjs +1 -1
  75. package/templates/monorepo-starter/apps/web/src/app/(root)/layout.tsx +2 -2
  76. package/templates/monorepo-starter/apps/web/src/app/favicon.ico +0 -0
  77. package/templates/monorepo-starter/apps/web/src/app/layout.tsx +13 -9
  78. package/templates/monorepo-starter/apps/web/src/components/Footer.tsx +5 -7
  79. package/templates/monorepo-starter/apps/web/src/components/Header.tsx +5 -9
  80. package/templates/monorepo-starter/apps/web/tsconfig.json +20 -20
  81. package/templates/monorepo-starter/eslint.config.mjs +1 -1
  82. package/templates/monorepo-starter/gitignore +13 -4
  83. package/templates/monorepo-starter/package.json +49 -23
  84. package/templates/monorepo-starter/packages/config/eslint/next.mjs +18 -0
  85. package/templates/monorepo-starter/packages/config/eslint/node.mjs +44 -0
  86. package/templates/monorepo-starter/packages/config/eslint/react.mjs +68 -0
  87. package/templates/monorepo-starter/packages/config/package.json +23 -32
  88. package/templates/monorepo-starter/packages/config/typescript/node.json +25 -0
  89. package/templates/monorepo-starter/packages/config/typescript/react.json +20 -3
  90. package/templates/monorepo-starter/packages/contracts/eslint.config.mjs +1 -0
  91. package/templates/monorepo-starter/packages/contracts/package.json +51 -0
  92. package/templates/monorepo-starter/packages/contracts/src/admin/dto.ts +6 -0
  93. package/templates/monorepo-starter/packages/contracts/src/admin/index.ts +2 -0
  94. package/templates/monorepo-starter/packages/contracts/src/admin/schema.ts +28 -0
  95. package/templates/monorepo-starter/packages/contracts/src/admin/types.d.ts +27 -0
  96. package/templates/monorepo-starter/packages/contracts/src/auth/dto.ts +24 -0
  97. package/templates/monorepo-starter/packages/contracts/src/auth/index.ts +2 -0
  98. package/templates/monorepo-starter/packages/contracts/src/auth/schema.ts +35 -0
  99. package/templates/monorepo-starter/packages/contracts/src/auth/types.d.ts +73 -0
  100. package/templates/monorepo-starter/packages/contracts/src/lib/enums.ts +55 -0
  101. package/templates/monorepo-starter/packages/contracts/src/lib/index.ts +4 -0
  102. package/templates/monorepo-starter/packages/contracts/src/lib/prisma.ts +2 -0
  103. package/templates/monorepo-starter/packages/contracts/src/lib/schema.ts +61 -0
  104. package/templates/monorepo-starter/packages/contracts/src/lib/types.d.ts +149 -0
  105. package/templates/monorepo-starter/packages/contracts/src/lib/utils.ts +8 -0
  106. package/templates/monorepo-starter/packages/contracts/src/media/dto.ts +12 -0
  107. package/templates/monorepo-starter/packages/contracts/src/media/index.ts +2 -0
  108. package/templates/monorepo-starter/packages/contracts/src/media/schema.ts +27 -0
  109. package/templates/monorepo-starter/packages/contracts/src/media/types.d.ts +36 -0
  110. package/templates/monorepo-starter/packages/contracts/src/notification/dto.ts +6 -0
  111. package/templates/monorepo-starter/packages/contracts/src/notification/index.ts +2 -0
  112. package/templates/monorepo-starter/packages/contracts/src/notification/schema.ts +7 -0
  113. package/templates/monorepo-starter/packages/contracts/src/notification/types.d.ts +22 -0
  114. package/templates/monorepo-starter/packages/contracts/src/user/dto.ts +4 -0
  115. package/templates/monorepo-starter/packages/contracts/src/user/index.ts +2 -0
  116. package/templates/monorepo-starter/packages/contracts/src/user/schema.ts +16 -0
  117. package/templates/monorepo-starter/packages/contracts/src/user/types.d.ts +36 -0
  118. package/templates/monorepo-starter/packages/contracts/tsconfig.json +12 -0
  119. package/templates/monorepo-starter/packages/contracts/tsup.config.ts +20 -0
  120. package/templates/monorepo-starter/packages/sdk/eslint.config.mjs +1 -0
  121. package/templates/monorepo-starter/packages/sdk/package.json +31 -0
  122. package/templates/monorepo-starter/packages/sdk/src/admin/index.ts +31 -0
  123. package/templates/monorepo-starter/packages/sdk/src/auth/index.ts +71 -0
  124. package/templates/monorepo-starter/packages/sdk/src/lib/api-client.ts +71 -0
  125. package/templates/monorepo-starter/packages/sdk/src/lib/index.ts +2 -0
  126. package/templates/monorepo-starter/packages/sdk/src/lib/types.ts +40 -0
  127. package/templates/monorepo-starter/packages/sdk/src/media/index.ts +27 -0
  128. package/templates/monorepo-starter/packages/sdk/src/notification/index.ts +10 -0
  129. package/templates/monorepo-starter/packages/sdk/src/public/index.ts +6 -0
  130. package/templates/monorepo-starter/packages/sdk/src/user/index.ts +7 -0
  131. package/templates/monorepo-starter/packages/sdk/tsconfig.json +12 -0
  132. package/templates/monorepo-starter/packages/shared/eslint.config.mjs +1 -0
  133. package/templates/monorepo-starter/packages/shared/package.json +36 -0
  134. package/templates/monorepo-starter/packages/shared/src/constants/app.ts +4 -0
  135. package/templates/monorepo-starter/packages/shared/src/constants/index.ts +1 -0
  136. package/templates/monorepo-starter/packages/shared/src/utils/date.ts +137 -0
  137. package/templates/monorepo-starter/packages/shared/src/utils/identifier.ts +11 -0
  138. package/templates/monorepo-starter/packages/shared/src/utils/index.ts +2 -0
  139. package/templates/monorepo-starter/packages/shared/tsconfig.json +12 -0
  140. package/templates/monorepo-starter/packages/shared/tsup.config.ts +16 -0
  141. package/templates/monorepo-starter/packages/templates/eslint.config.mjs +1 -0
  142. package/templates/monorepo-starter/packages/templates/package.json +38 -0
  143. package/templates/monorepo-starter/packages/templates/src/email/auth/disableMfa.tsx +40 -0
  144. package/templates/monorepo-starter/packages/templates/src/email/auth/index.ts +10 -0
  145. package/templates/monorepo-starter/packages/templates/src/email/auth/resetPassword.tsx +41 -0
  146. package/templates/monorepo-starter/packages/templates/src/email/auth/securityAlert.tsx +21 -0
  147. package/templates/monorepo-starter/packages/templates/src/email/auth/setPassword.tsx +42 -0
  148. package/templates/monorepo-starter/packages/templates/src/email/auth/signin.tsx +19 -0
  149. package/templates/monorepo-starter/packages/templates/src/email/auth/signup.tsx +24 -0
  150. package/templates/monorepo-starter/packages/templates/src/email/auth/updateIdentifier.tsx +79 -0
  151. package/templates/monorepo-starter/packages/templates/src/email/auth/updateMfa.tsx +40 -0
  152. package/templates/monorepo-starter/packages/templates/src/email/auth/verifyIdentifier.tsx +42 -0
  153. package/templates/monorepo-starter/packages/templates/src/email/auth/verifyMfa.tsx +23 -0
  154. package/templates/monorepo-starter/packages/templates/src/email/components/actionBlock.tsx +39 -0
  155. package/templates/monorepo-starter/packages/templates/src/email/components/footer.tsx +0 -0
  156. package/templates/monorepo-starter/packages/templates/src/email/components/greeting.tsx +11 -0
  157. package/templates/monorepo-starter/packages/templates/src/email/components/header.tsx +15 -0
  158. package/templates/monorepo-starter/packages/templates/src/email/components/layout.tsx +33 -0
  159. package/templates/monorepo-starter/packages/templates/src/email/components/numericCode.tsx +16 -0
  160. package/templates/monorepo-starter/packages/templates/src/email/index.ts +2 -0
  161. package/templates/monorepo-starter/packages/templates/src/email/service/accountReactivated.tsx +31 -0
  162. package/templates/monorepo-starter/packages/templates/src/email/service/accountSuspended.tsx +37 -0
  163. package/templates/monorepo-starter/packages/templates/src/email/service/index.ts +2 -0
  164. package/templates/monorepo-starter/packages/templates/src/email/test.tsx +141 -0
  165. package/templates/monorepo-starter/packages/templates/src/index.ts +1 -0
  166. package/templates/monorepo-starter/packages/templates/src/lib/constants.ts +22 -0
  167. package/templates/monorepo-starter/packages/templates/src/lib/utils.ts +19 -0
  168. package/templates/monorepo-starter/packages/templates/src/types/global.d.ts +37 -0
  169. package/templates/monorepo-starter/packages/templates/tsconfig.json +13 -0
  170. package/templates/monorepo-starter/packages/templates/tsup.config.ts +23 -0
  171. package/templates/monorepo-starter/packages/ui/components.json +1 -1
  172. package/templates/monorepo-starter/packages/ui/eslint.config.mjs +1 -4
  173. package/templates/monorepo-starter/packages/ui/package.json +81 -38
  174. package/templates/monorepo-starter/packages/ui/src/components/accordion.tsx +66 -0
  175. package/templates/monorepo-starter/packages/ui/src/components/airport-search-field.tsx +203 -0
  176. package/templates/monorepo-starter/packages/ui/src/components/alert-dialog.tsx +157 -0
  177. package/templates/monorepo-starter/packages/ui/src/components/alert.tsx +66 -0
  178. package/templates/monorepo-starter/packages/ui/src/components/aspect-ratio.tsx +11 -0
  179. package/templates/monorepo-starter/packages/ui/src/components/avatar.tsx +53 -0
  180. package/templates/monorepo-starter/packages/ui/src/components/badge.tsx +46 -0
  181. package/templates/monorepo-starter/packages/ui/src/components/breadcrumb.tsx +109 -0
  182. package/templates/monorepo-starter/packages/ui/src/components/button-group.tsx +83 -0
  183. package/templates/monorepo-starter/packages/ui/src/components/button.tsx +2 -1
  184. package/templates/monorepo-starter/packages/ui/src/components/calendar.tsx +220 -0
  185. package/templates/monorepo-starter/packages/ui/src/components/card.tsx +92 -0
  186. package/templates/monorepo-starter/packages/ui/src/components/carousel.tsx +241 -0
  187. package/templates/monorepo-starter/packages/ui/src/components/chart.tsx +357 -0
  188. package/templates/monorepo-starter/packages/ui/src/components/checkbox.tsx +32 -0
  189. package/templates/monorepo-starter/packages/ui/src/components/collapsible.tsx +33 -0
  190. package/templates/monorepo-starter/packages/ui/src/components/combobox-field.tsx +181 -0
  191. package/templates/monorepo-starter/packages/ui/src/components/combobox.tsx +309 -0
  192. package/templates/monorepo-starter/packages/ui/src/components/command.tsx +184 -0
  193. package/templates/monorepo-starter/packages/ui/src/components/context-menu.tsx +252 -0
  194. package/templates/monorepo-starter/packages/ui/src/components/date-field.tsx +65 -0
  195. package/templates/monorepo-starter/packages/ui/src/components/dialog.tsx +143 -0
  196. package/templates/monorepo-starter/packages/ui/src/components/direction.tsx +22 -0
  197. package/templates/monorepo-starter/packages/ui/src/components/drawer.tsx +135 -0
  198. package/templates/monorepo-starter/packages/ui/src/components/dropdown-menu.tsx +257 -0
  199. package/templates/monorepo-starter/packages/ui/src/components/empty.tsx +104 -0
  200. package/templates/monorepo-starter/packages/ui/src/components/field.tsx +248 -0
  201. package/templates/monorepo-starter/packages/ui/src/components/form.tsx +197 -0
  202. package/templates/monorepo-starter/packages/ui/src/components/hover-card.tsx +44 -0
  203. package/templates/monorepo-starter/packages/ui/src/components/input-field.tsx +116 -0
  204. package/templates/monorepo-starter/packages/ui/src/components/input-group.tsx +170 -0
  205. package/templates/monorepo-starter/packages/ui/src/components/input-otp.tsx +77 -0
  206. package/templates/monorepo-starter/packages/ui/src/components/input.tsx +44 -0
  207. package/templates/monorepo-starter/packages/ui/src/components/item.tsx +193 -0
  208. package/templates/monorepo-starter/packages/ui/src/components/kbd.tsx +28 -0
  209. package/templates/monorepo-starter/packages/ui/src/components/label.tsx +24 -0
  210. package/templates/monorepo-starter/packages/ui/src/components/menubar.tsx +276 -0
  211. package/templates/monorepo-starter/packages/ui/src/components/native-select.tsx +53 -0
  212. package/templates/monorepo-starter/packages/ui/src/components/navigation-menu.tsx +168 -0
  213. package/templates/monorepo-starter/packages/ui/src/components/otp-modal.tsx +125 -0
  214. package/templates/monorepo-starter/packages/ui/src/components/pagination.tsx +127 -0
  215. package/templates/monorepo-starter/packages/ui/src/components/popover.tsx +48 -0
  216. package/templates/monorepo-starter/packages/ui/src/components/progress.tsx +31 -0
  217. package/templates/monorepo-starter/packages/ui/src/components/radio-group.tsx +45 -0
  218. package/templates/monorepo-starter/packages/ui/src/components/resizable.tsx +53 -0
  219. package/templates/monorepo-starter/packages/ui/src/components/scroll-area.tsx +58 -0
  220. package/templates/monorepo-starter/packages/ui/src/components/select-field.tsx +165 -0
  221. package/templates/monorepo-starter/packages/ui/src/components/select.tsx +190 -0
  222. package/templates/monorepo-starter/packages/ui/src/components/separator.tsx +28 -0
  223. package/templates/monorepo-starter/packages/ui/src/components/sheet.tsx +139 -0
  224. package/templates/monorepo-starter/packages/ui/src/components/sidebar.tsx +728 -0
  225. package/templates/monorepo-starter/packages/ui/src/components/skeleton.tsx +13 -0
  226. package/templates/monorepo-starter/packages/ui/src/components/slider.tsx +63 -0
  227. package/templates/monorepo-starter/packages/ui/src/components/sonner.tsx +57 -0
  228. package/templates/monorepo-starter/packages/ui/src/components/spinner.tsx +16 -0
  229. package/templates/monorepo-starter/packages/ui/src/components/switch-field.tsx +22 -0
  230. package/templates/monorepo-starter/packages/ui/src/components/switch.tsx +35 -0
  231. package/templates/monorepo-starter/packages/ui/src/components/table.tsx +120 -0
  232. package/templates/monorepo-starter/packages/ui/src/components/tabs.tsx +66 -0
  233. package/templates/monorepo-starter/packages/ui/src/components/textarea.tsx +18 -0
  234. package/templates/monorepo-starter/packages/ui/src/components/toggle-group.tsx +83 -0
  235. package/templates/monorepo-starter/packages/ui/src/components/toggle.tsx +47 -0
  236. package/templates/monorepo-starter/packages/ui/src/components/tooltip.tsx +61 -0
  237. package/templates/monorepo-starter/packages/ui/src/hooks/use-confirm.ts +12 -0
  238. package/templates/monorepo-starter/packages/ui/src/hooks/use-dialog.ts +12 -0
  239. package/templates/monorepo-starter/packages/ui/src/hooks/use-mobile.ts +21 -0
  240. package/templates/monorepo-starter/packages/ui/src/lib/utils.ts +38 -3
  241. package/templates/monorepo-starter/packages/ui/src/provider/confirm-dialog.tsx +99 -0
  242. package/templates/monorepo-starter/packages/ui/src/provider/dialog.tsx +62 -0
  243. package/templates/monorepo-starter/packages/ui/src/provider/index.tsx +30 -0
  244. package/templates/monorepo-starter/packages/ui/src/provider/react-query.tsx +11 -0
  245. package/templates/monorepo-starter/{apps/web/src/providers → packages/ui/src/provider}/theme.tsx +5 -7
  246. package/templates/monorepo-starter/packages/ui/src/styles/globals.css +109 -61
  247. package/templates/monorepo-starter/packages/ui/src/types/airports-data.d.ts +21 -0
  248. package/templates/monorepo-starter/packages/ui/tsconfig.json +1 -3
  249. package/templates/monorepo-starter/pnpm-lock.yaml +17765 -12441
  250. package/templates/monorepo-starter/pnpm-workspace.yaml +3 -16
  251. package/templates/monorepo-starter/server/.env.example +7 -5
  252. package/templates/monorepo-starter/server/eslint.config.mjs +1 -4
  253. package/templates/monorepo-starter/server/package.json +129 -97
  254. package/templates/monorepo-starter/server/prisma/schema.prisma +170 -92
  255. package/templates/monorepo-starter/server/prisma/seed-functions.ts +0 -0
  256. package/templates/monorepo-starter/server/prisma/seed.ts +0 -0
  257. package/templates/monorepo-starter/server/prisma.config.ts +9 -9
  258. package/templates/monorepo-starter/server/scripts/admin-bootstrap.ts +61 -0
  259. package/templates/monorepo-starter/server/scripts/gen-module.sh +20 -0
  260. package/templates/monorepo-starter/server/scripts/gen-soft-delete.ts +52 -0
  261. package/templates/monorepo-starter/server/src/app.module.ts +35 -28
  262. package/templates/monorepo-starter/server/src/lib/constants/index.ts +59 -0
  263. package/templates/monorepo-starter/server/src/lib/decorators/boolean-query.decorator.ts +18 -0
  264. package/templates/monorepo-starter/server/src/lib/decorators/logger.decorator.ts +1 -1
  265. package/templates/monorepo-starter/server/src/lib/decorators/oauth.decorator.ts +7 -0
  266. package/templates/monorepo-starter/server/src/lib/decorators/user.decorator.ts +10 -0
  267. package/templates/monorepo-starter/server/src/lib/filters/exceptions.filter.ts +169 -24
  268. package/templates/monorepo-starter/server/src/lib/guards/auth.guard.ts +29 -65
  269. package/templates/monorepo-starter/server/src/lib/guards/oauth.guard.ts +28 -0
  270. package/templates/monorepo-starter/server/src/lib/interceptors/response.interceptor.ts +42 -5
  271. package/templates/monorepo-starter/server/src/lib/middleware/cache.middleware.ts +24 -0
  272. package/templates/monorepo-starter/server/src/lib/schemas/env.schema.ts +25 -5
  273. package/templates/monorepo-starter/server/src/lib/utils/client.utils.ts +95 -0
  274. package/templates/monorepo-starter/server/src/lib/utils/cookie.util.ts +4 -3
  275. package/templates/monorepo-starter/server/src/main.ts +20 -10
  276. package/templates/monorepo-starter/server/src/modules/admin/admin.controller.ts +54 -0
  277. package/templates/monorepo-starter/server/src/modules/admin/admin.module.ts +13 -0
  278. package/templates/monorepo-starter/server/src/modules/admin/admin.service.ts +134 -0
  279. package/templates/monorepo-starter/server/src/modules/auth/auth.controller.ts +60 -18
  280. package/templates/monorepo-starter/server/src/modules/auth/auth.module.ts +3 -2
  281. package/templates/monorepo-starter/server/src/modules/auth/auth.service.ts +354 -307
  282. package/templates/monorepo-starter/server/src/modules/auth/oauth.controller.ts +50 -28
  283. package/templates/monorepo-starter/server/src/modules/auth/oauth.service.ts +59 -34
  284. package/templates/monorepo-starter/server/src/modules/auth/otp.service.ts +29 -36
  285. package/templates/monorepo-starter/server/src/modules/cache/cache.module.ts +28 -0
  286. package/templates/monorepo-starter/server/src/modules/cache/cache.service.ts +33 -0
  287. package/templates/monorepo-starter/server/src/modules/env/env.service.ts +4 -3
  288. package/templates/monorepo-starter/server/src/modules/logger/logger.module.ts +1 -0
  289. package/templates/monorepo-starter/server/src/modules/logger/logger.service.ts +1 -1
  290. package/templates/monorepo-starter/server/src/modules/logger/winston.config.ts +15 -1
  291. package/templates/monorepo-starter/server/src/modules/media/cloudinary.provider.ts +14 -0
  292. package/templates/monorepo-starter/server/src/modules/media/cloudinary.service.ts +62 -0
  293. package/templates/monorepo-starter/server/src/modules/media/media.controller.ts +72 -0
  294. package/templates/monorepo-starter/server/src/modules/media/media.module.ts +13 -0
  295. package/templates/monorepo-starter/server/src/modules/media/media.service.ts +146 -0
  296. package/templates/monorepo-starter/server/src/modules/notification/email.service.ts +30 -0
  297. package/templates/monorepo-starter/server/src/modules/notification/messaging.service.ts +50 -0
  298. package/templates/monorepo-starter/server/src/modules/notification/notification.controller.ts +44 -0
  299. package/templates/monorepo-starter/server/src/modules/notification/notification.module.ts +7 -3
  300. package/templates/monorepo-starter/server/src/modules/notification/notification.service.ts +121 -78
  301. package/templates/monorepo-starter/server/src/modules/notification/push.service.ts +92 -0
  302. package/templates/monorepo-starter/server/src/modules/prisma/prisma.extension.ts +84 -56
  303. package/templates/monorepo-starter/server/src/modules/prisma/prisma.service.ts +10 -9
  304. package/templates/monorepo-starter/server/src/modules/prisma/soft-delete.models.ts +7 -0
  305. package/templates/monorepo-starter/server/src/modules/public/public.controller.ts +3 -2
  306. package/templates/monorepo-starter/server/src/modules/public/public.module.ts +5 -4
  307. package/templates/monorepo-starter/server/src/modules/public/public.service.ts +7 -4
  308. package/templates/monorepo-starter/server/src/modules/scheduler/cleanup.service.ts +15 -7
  309. package/templates/monorepo-starter/server/src/modules/scheduler/scheduler.module.ts +2 -0
  310. package/templates/monorepo-starter/server/src/modules/token/token.module.ts +3 -4
  311. package/templates/monorepo-starter/server/src/modules/token/token.service.ts +205 -76
  312. package/templates/monorepo-starter/server/src/modules/user/user.controller.ts +21 -0
  313. package/templates/monorepo-starter/server/src/modules/user/user.module.ts +12 -0
  314. package/templates/monorepo-starter/server/src/modules/user/user.service.ts +38 -0
  315. package/templates/monorepo-starter/server/src/types/express.d.ts +6 -2
  316. package/templates/monorepo-starter/server/src/types/index.ts +5 -0
  317. package/templates/monorepo-starter/server/tsconfig.json +17 -12
  318. package/templates/monorepo-starter/server/tsup.config.ts +7 -2
  319. package/templates/monorepo-starter/tsconfig.json +1 -1
  320. package/templates/monorepo-starter/turbo.json +1 -1
  321. package/templates/monorepo-starter/apps/web/eslint.config.mjs +0 -4
  322. package/templates/monorepo-starter/apps/web/src/app/(auth)/layout.tsx +0 -7
  323. package/templates/monorepo-starter/apps/web/src/app/globals.css +0 -1
  324. package/templates/monorepo-starter/apps/web/src/components/ThemeSwitch.tsx +0 -34
  325. package/templates/monorepo-starter/apps/web/src/providers/index.tsx +0 -10
  326. package/templates/monorepo-starter/apps/web/src/types/index.d.ts +0 -16
  327. package/templates/monorepo-starter/packages/config/eslint/base.js +0 -31
  328. package/templates/monorepo-starter/packages/config/eslint/nest.js +0 -26
  329. package/templates/monorepo-starter/packages/config/eslint/next.js +0 -39
  330. package/templates/monorepo-starter/packages/config/eslint/react.js +0 -30
  331. package/templates/monorepo-starter/packages/config/typescript/base.json +0 -31
  332. package/templates/monorepo-starter/packages/config/typescript/nest.json +0 -14
  333. package/templates/monorepo-starter/packages/config/typescript/next.json +0 -10
  334. package/templates/monorepo-starter/packages/ui/tsconfig.lint.json +0 -8
  335. package/templates/monorepo-starter/server/README.md +0 -63
  336. package/templates/monorepo-starter/server/scripts/generate.sh +0 -14
  337. package/templates/monorepo-starter/server/src/lib/dto/auth.dto.ts +0 -64
  338. package/templates/monorepo-starter/server/src/lib/dto/security-setting.dto.ts +0 -21
  339. package/templates/monorepo-starter/server/src/lib/pipes/validation.pipe.ts +0 -7
  340. package/templates/monorepo-starter/server/src/lib/templates/notification.templates.ts +0 -243
  341. package/templates/monorepo-starter/server/src/lib/utils/general.util.ts +0 -24
  342. package/templates/monorepo-starter/server/src/modules/auth/role.service.ts +0 -99
  343. package/templates/monorepo-starter/server/src/modules/auth/security-setting.service.ts +0 -102
  344. package/templates/monorepo-starter/server/src/modules/template/template.module.ts +0 -8
  345. package/templates/monorepo-starter/server/src/modules/template/template.service.ts +0 -33
  346. package/templates/monorepo-starter/server/src/types/index.d.ts +0 -13
  347. package/templates/monorepo-starter/server/test/app.e2e-spec.ts +0 -25
  348. package/templates/monorepo-starter/server/test/jest-e2e.json +0 -9
  349. /package/templates/monorepo-starter/{packages/ui/src/hooks → apps/dashboard/public}/.gitkeep +0 -0
@@ -1,31 +1,36 @@
1
- {
2
- "name": "web",
3
- "version": "0.0.1",
4
- "type": "module",
5
- "private": true,
6
- "scripts": {
7
- "dev": "next dev --turbopack",
8
- "build": "next build",
9
- "postbuild": "next-sitemap --config sitemap.config.cjs",
10
- "start": "next start",
11
- "lint": "next lint",
12
- "lint:fix": "next lint --fix",
13
- "typecheck": "tsc --noEmit"
14
- },
15
- "dependencies": {
16
- "@workspace/ui": "workspace:*",
17
- "lucide-react": "^0.562.0",
18
- "next": "^16.0.10",
19
- "next-sitemap": "^4.2.3",
20
- "next-themes": "^0.4.6",
21
- "react": "^19.2.3",
22
- "react-dom": "^19.2.3"
23
- },
24
- "devDependencies": {
25
- "@types/node": "^25.0.3",
26
- "@types/react": "^19.2.7",
27
- "@types/react-dom": "^19.2.3",
28
- "@workspace/config": "workspace:*",
29
- "tailwindcss": "^4.1.18"
30
- }
31
- }
1
+ {
2
+ "name": "web",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "private": true,
6
+ "scripts": {
7
+ "dev": "next dev --turbopack",
8
+ "build": "next build",
9
+ "postbuild": "next-sitemap --config sitemap.config.cjs",
10
+ "start": "next start",
11
+ "lint": "eslint",
12
+ "check-types": "tsc --noEmit"
13
+ },
14
+ "dependencies": {
15
+ "@workspace/sdk": "workspace:*",
16
+ "@workspace/shared": "workspace:*",
17
+ "@workspace/ui": "workspace:*",
18
+ "lucide-react": "^0.563.0",
19
+ "next": "16.1.6",
20
+ "next-sitemap": "^4.2.3",
21
+ "next-themes": "^0.4.6",
22
+ "react": "^19.2.4",
23
+ "react-dom": "^19.2.4"
24
+ },
25
+ "devDependencies": {
26
+ "@eslint/js": "^9.39.3",
27
+ "@tailwindcss/postcss": "^4.2.1",
28
+ "@types/node": "^25.3.5",
29
+ "@types/react": "^19.2.14",
30
+ "@types/react-dom": "^19.2.3",
31
+ "@workspace/config": "workspace:*",
32
+ "@workspace/contracts": "workspace:*",
33
+ "eslint": "^9.39.3",
34
+ "eslint-config-next": "^16.1.6"
35
+ }
36
+ }
@@ -1 +1 @@
1
- export { default } from "@workspace/ui/postcss.config";
1
+ export { default } from "@workspace/ui/postcss.config";
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import Header from "@/components/Header";
3
3
  import Footer from "@/components/Footer";
4
4
 
5
- const Layout = ({ children }: LayoutProps) => {
5
+ const Layout = ({ children }: AppLayoutProps) => {
6
6
  return (
7
7
  <>
8
8
  <Header />
@@ -10,6 +10,6 @@ const Layout = ({ children }: LayoutProps) => {
10
10
  <Footer />
11
11
  </>
12
12
  );
13
- }
13
+ };
14
14
 
15
15
  export default Layout;
@@ -1,24 +1,28 @@
1
- import { Inter } from "next/font/google";
2
-
3
1
  import "@workspace/ui/globals.css";
4
- import "./globals.css";
5
- import Provider from "@/providers";
2
+ import { Inter, Poppins } from "next/font/google";
3
+ import ProviderWrapper from "@workspace/ui/provider-wrapper";
6
4
 
7
- const primaryFont = Inter({
5
+ const primaryFont = Poppins({
8
6
  variable: "--font-primary",
9
7
  subsets: ["latin"],
8
+ weight: ["400", "500", "600", "700", "800", "900"],
9
+ });
10
+
11
+ const secondaryFont = Inter({
12
+ variable: "--font-secondary",
13
+ subsets: ["latin"],
10
14
  });
11
15
 
12
- const RootLayout = ({ children }: LayoutProps) => {
16
+ const RootLayout = ({ children }: AppLayoutProps) => {
13
17
  return (
14
18
  <html lang="en" suppressHydrationWarning>
15
19
  <body
16
- className={`${primaryFont.variable} font-sans antialiased `}
20
+ className={`${primaryFont.variable} ${secondaryFont.variable} font-sans antialiased`}
17
21
  >
18
- <Provider>{children}</Provider>
22
+ <ProviderWrapper>{children}</ProviderWrapper>
19
23
  </body>
20
24
  </html>
21
25
  );
22
- }
26
+ };
23
27
 
24
28
  export default RootLayout;
@@ -1,9 +1,7 @@
1
- import React from 'react'
1
+ import React from "react";
2
2
 
3
- function Footer() {
4
- return (
5
- <div>Footer</div>
6
- )
7
- }
3
+ const Footer = () => {
4
+ return <div>Footer</div>;
5
+ };
8
6
 
9
- export default Footer
7
+ export default Footer;
@@ -1,11 +1,7 @@
1
+ import React from "react";
1
2
 
3
+ const Header = () => {
4
+ return <div>Header</div>;
5
+ };
2
6
 
3
- import React from 'react'
4
-
5
- function Header() {
6
- return (
7
- <div>Header</div>
8
- )
9
- }
10
-
11
- export default Header
7
+ export default Header;
@@ -1,20 +1,20 @@
1
- {
2
- "extends": "@workspace/config/typescript/next",
3
- "compilerOptions": {
4
- "baseUrl": ".",
5
- "outDir": "dist",
6
- "paths": {
7
- "@/*": ["src/*"],
8
- "@workspace/ui/*": ["../../packages/ui/src/*"]
9
- },
10
- "plugins": [{ "name": "next" }]
11
- },
12
- "include": [
13
- "next-env.d.ts",
14
- "next.config.ts",
15
- "**/*.ts",
16
- "**/*.tsx",
17
- ".next/types/**/*.ts"
18
- ],
19
- "exclude": ["node_modules"]
20
- }
1
+ {
2
+ "extends": "@workspace/config/typescript/react",
3
+ "compilerOptions": {
4
+ "baseUrl": ".",
5
+ "outDir": "dist",
6
+ "paths": {
7
+ "@/*": ["src/*"]
8
+ },
9
+ "plugins": [{ "name": "next" }]
10
+ },
11
+ "include": [
12
+ "next-env.d.ts",
13
+ "next.config.ts",
14
+ "**/*.ts",
15
+ "**/*.tsx",
16
+ ".next/types/**/*.ts",
17
+ "../../packages/contracts/src/**/*types.d.ts"
18
+ ],
19
+ "exclude": ["node_modules"]
20
+ }
@@ -2,7 +2,7 @@
2
2
  /** @type {import("eslint").Linter.Config} */
3
3
  const config = {
4
4
  ignorePatterns: ["apps/**", "packages/**", "server/**"],
5
- extends: ["@workspace/config/eslint/base"],
5
+ extends: ["@workspace/config/eslint/node"],
6
6
  parser: "@typescript-eslint/parser",
7
7
  parserOptions: {
8
8
  project: true,
@@ -1,11 +1,13 @@
1
1
  # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2
2
 
3
3
  # Dependencies
4
+
4
5
  node_modules
5
6
  .pnp
6
7
  .pnp.js
7
8
 
8
9
  # Local env files
10
+
9
11
  .env
10
12
  .env.local
11
13
  .env.development.local
@@ -13,31 +15,38 @@ node_modules
13
15
  .env.production.local
14
16
 
15
17
  # Testing
18
+
16
19
  coverage
17
20
 
18
21
  # Turbo
22
+
19
23
  .turbo
20
24
 
21
25
  # Vercel
26
+
22
27
  .vercel
23
28
 
24
29
  # Build Outputs
30
+
25
31
  .next/
26
32
  out/
27
33
  build
28
34
  dist
29
35
 
30
-
31
36
  # Debug
32
- npm-debug.log*
37
+
38
+ npm-debug.log\*
33
39
  logs
34
40
 
35
41
  # Misc
42
+
36
43
  .DS_Store
37
- *.pem
44
+ \*.pem
38
45
 
39
46
  # Prisma
40
- **/prisma/generated/
47
+
48
+ \*\*/prisma/generated/
41
49
 
42
50
  # others
51
+
43
52
  .history
@@ -1,23 +1,49 @@
1
- {
2
- "name": "zhx-monorepo",
3
- "version": "0.0.1",
4
- "type": "module",
5
- "private": true,
6
- "scripts": {
7
- "build": "turbo build",
8
- "dev": "turbo dev",
9
- "lint": "turbo lint",
10
- "format": "turbo format",
11
- "update:deps": "pnpm update -r --latest"
12
- },
13
- "devDependencies": {
14
- "@workspace/config": "workspace:*",
15
- "prettier": "^3.7.4",
16
- "turbo": "^2.6.3",
17
- "typescript": "5.9.3"
18
- },
19
- "packageManager": "pnpm@10.26.0",
20
- "engines": {
21
- "node": ">=24"
22
- }
23
- }
1
+ {
2
+ "name": "zhx-monorepo",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "private": true,
6
+ "scripts": {
7
+ "build": "turbo build",
8
+ "build:packages": "turbo run build --filter=@workspace/*",
9
+ "dev": "turbo dev",
10
+ "lint": "turbo lint",
11
+ "lint:fix": "turbo lint:fix",
12
+ "check-types": "turbo check-types",
13
+ "format": "turbo format",
14
+ "update:deps": "pnpm update -r"
15
+ },
16
+ "devDependencies": {
17
+ "@workspace/config": "workspace:*",
18
+ "eslint": "^10.0.2",
19
+ "prettier": "^3.8.1",
20
+ "turbo": "^2.8.13",
21
+ "typescript": "5.9.3"
22
+ },
23
+ "packageManager": "pnpm@10.28.0",
24
+ "engines": {
25
+ "node": ">=24"
26
+ },
27
+ "pnpm": {
28
+ "overrides": {
29
+ "esbuild": "0.25.10"
30
+ },
31
+ "onlyBuiltDependencies": [
32
+ "@firebase/util",
33
+ "@nestjs/core",
34
+ "@prisma/client",
35
+ "@prisma/engines",
36
+ "@swc/core",
37
+ "@tailwindcss/oxide",
38
+ "argon2",
39
+ "core-js-pure",
40
+ "esbuild",
41
+ "msw",
42
+ "prisma",
43
+ "protobufjs",
44
+ "puppeteer",
45
+ "sharp",
46
+ "unrs-resolver"
47
+ ]
48
+ }
49
+ }
@@ -0,0 +1,18 @@
1
+ import { defineConfig, globalIgnores } from "eslint/config";
2
+ import nextVitals from "eslint-config-next/core-web-vitals";
3
+ import nextTs from "eslint-config-next/typescript";
4
+
5
+ const eslintConfig = defineConfig([
6
+ ...nextVitals,
7
+ ...nextTs,
8
+ // Override default ignores of eslint-config-next.
9
+ globalIgnores([
10
+ // Default ignores of eslint-config-next:
11
+ ".next/**",
12
+ "out/**",
13
+ "build/**",
14
+ "next-env.d.ts",
15
+ ]),
16
+ ]);
17
+
18
+ export default eslintConfig;
@@ -0,0 +1,44 @@
1
+ import { defineConfig, globalIgnores } from "eslint/config";
2
+ import eslint from "@eslint/js";
3
+ import tseslint from "typescript-eslint";
4
+ import turboPlugin from "eslint-plugin-turbo";
5
+ import globals from "globals";
6
+
7
+ import path from "node:path";
8
+ import { fileURLToPath } from "node:url";
9
+
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = path.dirname(__filename);
12
+
13
+ const eslintConfig = defineConfig([
14
+ globalIgnores([
15
+ "dist/**",
16
+ "build/**",
17
+ "node_modules/**",
18
+ "**/eslint.config.mjs",
19
+ ]),
20
+ eslint.configs.recommended,
21
+ ...tseslint.configs.recommended,
22
+ {
23
+ plugins: { turbo: turboPlugin },
24
+ rules: { "turbo/no-undeclared-env-vars": "off" },
25
+ languageOptions: {
26
+ globals: { ...globals.node, ...globals.jest },
27
+ sourceType: "module",
28
+ parserOptions: {
29
+ projectService: true,
30
+ tsconfigRootDir: __dirname,
31
+ },
32
+ },
33
+ },
34
+ {
35
+ rules: {
36
+ "@typescript-eslint/no-explicit-any": "off",
37
+ "@typescript-eslint/no-unused-vars": "warn",
38
+ "@typescript-eslint/no-floating-promises": "warn",
39
+ "@typescript-eslint/no-unsafe-argument": "off",
40
+ },
41
+ },
42
+ ]);
43
+
44
+ export default eslintConfig;
@@ -0,0 +1,68 @@
1
+ import { defineConfig, globalIgnores } from "eslint/config";
2
+ import eslint from "@eslint/js";
3
+ import tseslint from "typescript-eslint";
4
+ import reactPlugin from "eslint-plugin-react";
5
+ import reactHooksPlugin from "eslint-plugin-react-hooks";
6
+ import jsxA11y from "eslint-plugin-jsx-a11y";
7
+ import globals from "globals";
8
+
9
+ import path from "node:path";
10
+ import { fileURLToPath } from "node:url";
11
+
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = path.dirname(__filename);
14
+
15
+ const eslintConfig = defineConfig([
16
+ globalIgnores([
17
+ "dist/**",
18
+ "build/**",
19
+ "node_modules/**",
20
+ "**/eslint.config.mjs",
21
+ "**/postcss.config.mjs",
22
+ ]),
23
+
24
+ eslint.configs.recommended,
25
+ ...tseslint.configs.recommended,
26
+
27
+ {
28
+ plugins: {
29
+ react: reactPlugin,
30
+ "react-hooks": reactHooksPlugin,
31
+ "jsx-a11y": jsxA11y,
32
+ },
33
+
34
+ languageOptions: {
35
+ globals: {
36
+ ...globals.browser,
37
+ ...globals.es2024,
38
+ },
39
+ parserOptions: {
40
+ projectService: true,
41
+ tsconfigRootDir: __dirname,
42
+ },
43
+ },
44
+
45
+ settings: {
46
+ react: {
47
+ version: "detect",
48
+ },
49
+ },
50
+
51
+ rules: {
52
+ // React
53
+ "react/react-in-jsx-scope": "off",
54
+ "react/prop-types": "off",
55
+
56
+ // Hooks
57
+ "react-hooks/rules-of-hooks": "error",
58
+ "react-hooks/exhaustive-deps": "warn",
59
+
60
+ // TS niceties
61
+ "@typescript-eslint/no-explicit-any": "warn",
62
+ "@typescript-eslint/no-floating-promises": "warn",
63
+ "@typescript-eslint/no-unsafe-argument": "off",
64
+ },
65
+ },
66
+ ]);
67
+
68
+ export default eslintConfig;
@@ -1,32 +1,23 @@
1
- {
2
- "name": "@workspace/config",
3
- "version": "0.1.0",
4
- "type": "module",
5
- "private": true,
6
- "license": "ISC",
7
- "exports": {
8
- "./eslint/*": "./eslint/*.js",
9
- "./typescript/*": "./typescript/*.json"
10
- },
11
- "scripts": {
12
- "lint": "eslint . --max-warnings 0"
13
- },
14
- "devDependencies": {
15
- "@eslint/js": "^9.39.2",
16
- "@next/eslint-plugin-next": "^16.0.10",
17
- "@types/jest": "^30.0.0",
18
- "eslint": "^9.39.2",
19
- "eslint-config-prettier": "^10.1.8",
20
- "eslint-plugin-only-warn": "^1.1.0",
21
- "eslint-plugin-prettier": "^5.5.4",
22
- "eslint-plugin-react": "^7.37.5",
23
- "eslint-plugin-react-hooks": "^7.0.1",
24
- "eslint-plugin-turbo": "^2.6.3",
25
- "globals": "^16.5.0",
26
- "jest": "^30.2.0",
27
- "prettier-plugin-tailwindcss": "^0.7.2",
28
- "ts-jest": "^29.4.6",
29
- "turbo": "^2.6.3",
30
- "typescript-eslint": "^8.50.0"
31
- }
32
- }
1
+ {
2
+ "name": "@workspace/config",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "private": true,
6
+ "license": "ISC",
7
+ "exports": {
8
+ "./eslint/*": "./eslint/*.mjs",
9
+ "./typescript/*": "./typescript/*.json"
10
+ },
11
+ "devDependencies": {
12
+ "@eslint/js": "^9.39.3",
13
+ "@types/eslint-plugin-jsx-a11y": "^6.10.1",
14
+ "eslint": "^9.39.3",
15
+ "eslint-config-next": "^16.1.6",
16
+ "eslint-plugin-jsx-a11y": "^6.10.2",
17
+ "eslint-plugin-react": "^7.37.5",
18
+ "eslint-plugin-react-hooks": "^7.0.1",
19
+ "eslint-plugin-turbo": "^2.8.13",
20
+ "globals": "^17.4.0",
21
+ "typescript-eslint": "^8.56.1"
22
+ }
23
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "display": "NodeJs Config",
4
+ "compilerOptions": {
5
+ "target": "ES2024",
6
+ "lib": ["ES2024"],
7
+ "module": "ESNext",
8
+ "moduleResolution": "bundler",
9
+
10
+ "noEmit": true,
11
+
12
+ "isolatedModules": true,
13
+ "verbatimModuleSyntax": true,
14
+
15
+ "allowSyntheticDefaultImports": true,
16
+ "esModuleInterop": true,
17
+
18
+ "strict": true,
19
+ "skipLibCheck": true,
20
+ "forceConsistentCasingInFileNames": true,
21
+
22
+ "experimentalDecorators": true,
23
+ "emitDecoratorMetadata": true
24
+ }
25
+ }
@@ -1,9 +1,26 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/tsconfig",
3
- "display": "React Library",
4
- "extends": "./base.json",
3
+ "display": "React Config",
5
4
  "compilerOptions": {
5
+ "target": "ES2024",
6
6
  "lib": ["ES2024", "DOM", "DOM.Iterable"],
7
- "jsx": "react-jsx"
7
+ "module": "ESNext",
8
+ "moduleResolution": "bundler",
9
+
10
+ "jsx": "react-jsx",
11
+ "noEmit": true,
12
+
13
+ "isolatedModules": true,
14
+ "verbatimModuleSyntax": true,
15
+
16
+ "strict": true,
17
+ "skipLibCheck": true,
18
+ "forceConsistentCasingInFileNames": true,
19
+
20
+ "esModuleInterop": true,
21
+ "allowSyntheticDefaultImports": true,
22
+
23
+ "resolveJsonModule": true,
24
+ "incremental": false
8
25
  }
9
26
  }
@@ -0,0 +1 @@
1
+ export { default } from "@workspace/config/eslint/node";
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@workspace/contracts",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "private": true,
6
+ "license": "ISC",
7
+ "scripts": {
8
+ "build": "tsup",
9
+ "check-types": "tsc --noEmit",
10
+ "lint": "eslint . --max-warnings 0"
11
+ },
12
+ "exports": {
13
+ ".": {
14
+ "import": "./dist/index.js",
15
+ "types": "./dist/index.d.ts"
16
+ },
17
+ "./auth": {
18
+ "import": "./dist/auth.js",
19
+ "types": "./dist/auth.d.ts"
20
+ },
21
+ "./admin": {
22
+ "import": "./dist/admin.js",
23
+ "types": "./dist/admin.d.ts"
24
+ },
25
+ "./user": {
26
+ "import": "./dist/user.js",
27
+ "types": "./dist/user.d.ts"
28
+ },
29
+ "./media": {
30
+ "import": "./dist/media.js",
31
+ "types": "./dist/media.d.ts"
32
+ },
33
+ "./notification": {
34
+ "import": "./dist/notification.js",
35
+ "types": "./dist/notification.d.ts"
36
+ }
37
+ },
38
+ "dependencies": {
39
+ "nestjs-zod": "^5.1.1",
40
+ "zod": "^4.3.6"
41
+ },
42
+ "devDependencies": {
43
+ "@eslint/js": "^9.39.3",
44
+ "@types/node": "^25.3.5",
45
+ "@types/react": "^19.2.14",
46
+ "@workspace/config": "workspace:*",
47
+ "eslint": "^9.39.3",
48
+ "react": "^19.2.4",
49
+ "tsup": "^8.5.1"
50
+ }
51
+ }
@@ -0,0 +1,6 @@
1
+ import { createZodDto } from "nestjs-zod";
2
+ import { CUUserSchema, userQuerySchema } from "./schema";
3
+
4
+ export class CUUserDto extends createZodDto(CUUserSchema) {}
5
+
6
+ export class UserQueryDto extends createZodDto(userQuerySchema) {}
@@ -0,0 +1,2 @@
1
+ export * from "./schema";
2
+ export * from "./dto";