create-zhx-monorepo 0.3.0 → 2.1.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 (358) 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 +339 -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/VerifyAuthPage.tsx +109 -0
  49. package/templates/monorepo-starter/apps/dashboard/src/components/skeleton/CUFormSkeleton.tsx +31 -0
  50. package/templates/monorepo-starter/apps/dashboard/src/components/skeleton/DashboardSke1eton.tsx +135 -0
  51. package/templates/monorepo-starter/apps/dashboard/src/components/skeleton/DetailsPageSkeleton.tsx +64 -0
  52. package/templates/monorepo-starter/apps/dashboard/src/components/skeleton/RootLayoutSkeleton.tsx +106 -0
  53. package/templates/monorepo-starter/apps/dashboard/src/components/skeleton/TableSkeleton.tsx +77 -0
  54. package/templates/monorepo-starter/apps/dashboard/src/components/user/UserAccountSection.tsx +522 -0
  55. package/templates/monorepo-starter/apps/dashboard/src/components/user/UserCard.tsx +54 -0
  56. package/templates/monorepo-starter/apps/dashboard/src/components/user/UserProfileSection.tsx +239 -0
  57. package/templates/monorepo-starter/apps/dashboard/src/components/user/UserSessions.tsx +154 -0
  58. package/templates/monorepo-starter/apps/dashboard/src/hooks/admin.ts +100 -0
  59. package/templates/monorepo-starter/apps/dashboard/src/hooks/auth.ts +59 -0
  60. package/templates/monorepo-starter/apps/dashboard/src/hooks/crud.ts +275 -0
  61. package/templates/monorepo-starter/apps/dashboard/src/hooks/lookup.ts +38 -0
  62. package/templates/monorepo-starter/apps/dashboard/src/hooks/media.ts +34 -0
  63. package/templates/monorepo-starter/apps/dashboard/src/hooks/user.ts +58 -0
  64. package/templates/monorepo-starter/apps/dashboard/src/lib/constants.ts +61 -0
  65. package/templates/monorepo-starter/apps/dashboard/src/providers/index.tsx +15 -0
  66. package/templates/monorepo-starter/apps/dashboard/src/providers/media-library.tsx +48 -0
  67. package/templates/monorepo-starter/apps/dashboard/tsconfig.json +20 -0
  68. package/templates/monorepo-starter/apps/web/components.json +20 -20
  69. package/templates/monorepo-starter/apps/web/eslint.config.js +1 -0
  70. package/templates/monorepo-starter/apps/web/next-env.d.ts +6 -6
  71. package/templates/monorepo-starter/apps/web/next.config.mjs +20 -6
  72. package/templates/monorepo-starter/apps/web/package.json +36 -31
  73. package/templates/monorepo-starter/apps/web/postcss.config.mjs +1 -1
  74. package/templates/monorepo-starter/apps/web/src/app/(root)/layout.tsx +2 -2
  75. package/templates/monorepo-starter/apps/web/src/app/favicon.ico +0 -0
  76. package/templates/monorepo-starter/apps/web/src/app/layout.tsx +13 -9
  77. package/templates/monorepo-starter/apps/web/src/components/Footer.tsx +5 -7
  78. package/templates/monorepo-starter/apps/web/src/components/Header.tsx +5 -9
  79. package/templates/monorepo-starter/apps/web/tsconfig.json +20 -20
  80. package/templates/monorepo-starter/eslint.config.mjs +1 -1
  81. package/templates/monorepo-starter/gitignore +13 -4
  82. package/templates/monorepo-starter/package.json +49 -23
  83. package/templates/monorepo-starter/packages/config/eslint/next.mjs +18 -0
  84. package/templates/monorepo-starter/packages/config/eslint/node.mjs +44 -0
  85. package/templates/monorepo-starter/packages/config/eslint/react.mjs +68 -0
  86. package/templates/monorepo-starter/packages/config/package.json +23 -32
  87. package/templates/monorepo-starter/packages/config/typescript/node.json +25 -0
  88. package/templates/monorepo-starter/packages/config/typescript/react.json +20 -3
  89. package/templates/monorepo-starter/packages/contracts/eslint.config.mjs +1 -0
  90. package/templates/monorepo-starter/packages/contracts/package.json +63 -0
  91. package/templates/monorepo-starter/packages/contracts/src/admin/dto.ts +6 -0
  92. package/templates/monorepo-starter/packages/contracts/src/admin/index.ts +2 -0
  93. package/templates/monorepo-starter/packages/contracts/src/admin/schema.ts +28 -0
  94. package/templates/monorepo-starter/packages/contracts/src/admin/types.d.ts +27 -0
  95. package/templates/monorepo-starter/packages/contracts/src/auth/dto.ts +24 -0
  96. package/templates/monorepo-starter/packages/contracts/src/auth/index.ts +2 -0
  97. package/templates/monorepo-starter/packages/contracts/src/auth/schema.ts +35 -0
  98. package/templates/monorepo-starter/packages/contracts/src/auth/types.d.ts +73 -0
  99. package/templates/monorepo-starter/packages/contracts/src/business/dto.ts +4 -0
  100. package/templates/monorepo-starter/packages/contracts/src/business/index.ts +2 -0
  101. package/templates/monorepo-starter/packages/contracts/src/business/schema.ts +32 -0
  102. package/templates/monorepo-starter/packages/contracts/src/business/types.d.ts +14 -0
  103. package/templates/monorepo-starter/packages/contracts/src/contact/dto.ts +18 -0
  104. package/templates/monorepo-starter/packages/contracts/src/contact/index.ts +2 -0
  105. package/templates/monorepo-starter/packages/contracts/src/contact/schema.ts +36 -0
  106. package/templates/monorepo-starter/packages/contracts/src/contact/types.d.ts +28 -0
  107. package/templates/monorepo-starter/packages/contracts/src/index.ts +2 -0
  108. package/templates/monorepo-starter/packages/contracts/src/lib/enums.ts +92 -0
  109. package/templates/monorepo-starter/packages/contracts/src/lib/prisma.ts +1 -0
  110. package/templates/monorepo-starter/packages/contracts/src/lib/schema.ts +61 -0
  111. package/templates/monorepo-starter/packages/contracts/src/lib/types.d.ts +149 -0
  112. package/templates/monorepo-starter/packages/contracts/src/lib/utils.ts +8 -0
  113. package/templates/monorepo-starter/packages/contracts/src/media/dto.ts +12 -0
  114. package/templates/monorepo-starter/packages/contracts/src/media/index.ts +2 -0
  115. package/templates/monorepo-starter/packages/contracts/src/media/schema.ts +27 -0
  116. package/templates/monorepo-starter/packages/contracts/src/media/types.d.ts +36 -0
  117. package/templates/monorepo-starter/packages/contracts/src/newsletter/dto.ts +18 -0
  118. package/templates/monorepo-starter/packages/contracts/src/newsletter/index.ts +2 -0
  119. package/templates/monorepo-starter/packages/contracts/src/newsletter/schema.ts +23 -0
  120. package/templates/monorepo-starter/packages/contracts/src/newsletter/types.d.ts +34 -0
  121. package/templates/monorepo-starter/packages/contracts/src/notification/dto.ts +6 -0
  122. package/templates/monorepo-starter/packages/contracts/src/notification/index.ts +2 -0
  123. package/templates/monorepo-starter/packages/contracts/src/notification/schema.ts +7 -0
  124. package/templates/monorepo-starter/packages/contracts/src/notification/types.d.ts +22 -0
  125. package/templates/monorepo-starter/packages/contracts/src/user/dto.ts +4 -0
  126. package/templates/monorepo-starter/packages/contracts/src/user/index.ts +2 -0
  127. package/templates/monorepo-starter/packages/contracts/src/user/schema.ts +16 -0
  128. package/templates/monorepo-starter/packages/contracts/src/user/types.d.ts +36 -0
  129. package/templates/monorepo-starter/packages/contracts/tsconfig.json +12 -0
  130. package/templates/monorepo-starter/packages/contracts/tsup.config.ts +23 -0
  131. package/templates/monorepo-starter/packages/sdk/eslint.config.mjs +1 -0
  132. package/templates/monorepo-starter/packages/sdk/package.json +31 -0
  133. package/templates/monorepo-starter/packages/sdk/src/admin/index.ts +31 -0
  134. package/templates/monorepo-starter/packages/sdk/src/auth/index.ts +71 -0
  135. package/templates/monorepo-starter/packages/sdk/src/lib/api-client.ts +71 -0
  136. package/templates/monorepo-starter/packages/sdk/src/lib/index.ts +2 -0
  137. package/templates/monorepo-starter/packages/sdk/src/lib/types.ts +40 -0
  138. package/templates/monorepo-starter/packages/sdk/src/media/index.ts +27 -0
  139. package/templates/monorepo-starter/packages/sdk/src/notification/index.ts +10 -0
  140. package/templates/monorepo-starter/packages/sdk/src/public/index.ts +6 -0
  141. package/templates/monorepo-starter/packages/sdk/src/user/index.ts +7 -0
  142. package/templates/monorepo-starter/packages/sdk/tsconfig.json +12 -0
  143. package/templates/monorepo-starter/packages/shared/eslint.config.mjs +1 -0
  144. package/templates/monorepo-starter/packages/shared/package.json +36 -0
  145. package/templates/monorepo-starter/packages/shared/src/constants/app.ts +4 -0
  146. package/templates/monorepo-starter/packages/shared/src/constants/index.ts +1 -0
  147. package/templates/monorepo-starter/packages/shared/src/utils/date.ts +137 -0
  148. package/templates/monorepo-starter/packages/shared/src/utils/identifier.ts +11 -0
  149. package/templates/monorepo-starter/packages/shared/src/utils/index.ts +2 -0
  150. package/templates/monorepo-starter/packages/shared/tsconfig.json +12 -0
  151. package/templates/monorepo-starter/packages/shared/tsup.config.ts +16 -0
  152. package/templates/monorepo-starter/packages/templates/eslint.config.mjs +1 -0
  153. package/templates/monorepo-starter/packages/templates/package.json +38 -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/contactMessage.tsx +55 -0
  161. package/templates/monorepo-starter/packages/templates/src/email/index.ts +11 -0
  162. package/templates/monorepo-starter/packages/templates/src/email/newsletter.tsx +43 -0
  163. package/templates/monorepo-starter/packages/templates/src/email/securityAlert.tsx +8 -0
  164. package/templates/monorepo-starter/packages/templates/src/email/signIn.tsx +20 -0
  165. package/templates/monorepo-starter/packages/templates/src/email/signUp.tsx +24 -0
  166. package/templates/monorepo-starter/packages/templates/src/email/updateIdentifier.tsx +72 -0
  167. package/templates/monorepo-starter/packages/templates/src/email/updateMfa.tsx +88 -0
  168. package/templates/monorepo-starter/packages/templates/src/email/updatePassword.tsx +79 -0
  169. package/templates/monorepo-starter/packages/templates/src/email/userStatus.tsx +62 -0
  170. package/templates/monorepo-starter/packages/templates/src/email/verifyIdentifier.tsx +42 -0
  171. package/templates/monorepo-starter/packages/templates/src/email/verifyMfa.tsx +25 -0
  172. package/templates/monorepo-starter/packages/templates/src/index.ts +1 -0
  173. package/templates/monorepo-starter/packages/templates/src/lib/constants.ts +19 -0
  174. package/templates/monorepo-starter/packages/templates/src/lib/utils.ts +18 -0
  175. package/templates/monorepo-starter/packages/templates/src/types/global.d.ts +77 -0
  176. package/templates/monorepo-starter/packages/templates/tsconfig.json +13 -0
  177. package/templates/monorepo-starter/packages/templates/tsup.config.ts +23 -0
  178. package/templates/monorepo-starter/packages/ui/components.json +1 -1
  179. package/templates/monorepo-starter/packages/ui/eslint.config.mjs +1 -4
  180. package/templates/monorepo-starter/packages/ui/package.json +81 -38
  181. package/templates/monorepo-starter/packages/ui/src/components/accordion.tsx +66 -0
  182. package/templates/monorepo-starter/packages/ui/src/components/airport-search-field.tsx +203 -0
  183. package/templates/monorepo-starter/packages/ui/src/components/alert-dialog.tsx +157 -0
  184. package/templates/monorepo-starter/packages/ui/src/components/alert.tsx +66 -0
  185. package/templates/monorepo-starter/packages/ui/src/components/aspect-ratio.tsx +11 -0
  186. package/templates/monorepo-starter/packages/ui/src/components/avatar.tsx +53 -0
  187. package/templates/monorepo-starter/packages/ui/src/components/badge.tsx +46 -0
  188. package/templates/monorepo-starter/packages/ui/src/components/breadcrumb.tsx +109 -0
  189. package/templates/monorepo-starter/packages/ui/src/components/button-group.tsx +83 -0
  190. package/templates/monorepo-starter/packages/ui/src/components/button.tsx +2 -1
  191. package/templates/monorepo-starter/packages/ui/src/components/calendar.tsx +220 -0
  192. package/templates/monorepo-starter/packages/ui/src/components/card.tsx +92 -0
  193. package/templates/monorepo-starter/packages/ui/src/components/carousel.tsx +241 -0
  194. package/templates/monorepo-starter/packages/ui/src/components/chart.tsx +357 -0
  195. package/templates/monorepo-starter/packages/ui/src/components/checkbox.tsx +32 -0
  196. package/templates/monorepo-starter/packages/ui/src/components/collapsible.tsx +33 -0
  197. package/templates/monorepo-starter/packages/ui/src/components/combobox-field.tsx +181 -0
  198. package/templates/monorepo-starter/packages/ui/src/components/combobox.tsx +309 -0
  199. package/templates/monorepo-starter/packages/ui/src/components/command.tsx +184 -0
  200. package/templates/monorepo-starter/packages/ui/src/components/context-menu.tsx +252 -0
  201. package/templates/monorepo-starter/packages/ui/src/components/date-field.tsx +65 -0
  202. package/templates/monorepo-starter/packages/ui/src/components/dialog.tsx +143 -0
  203. package/templates/monorepo-starter/packages/ui/src/components/direction.tsx +22 -0
  204. package/templates/monorepo-starter/packages/ui/src/components/drawer.tsx +135 -0
  205. package/templates/monorepo-starter/packages/ui/src/components/dropdown-menu.tsx +257 -0
  206. package/templates/monorepo-starter/packages/ui/src/components/empty.tsx +104 -0
  207. package/templates/monorepo-starter/packages/ui/src/components/field.tsx +248 -0
  208. package/templates/monorepo-starter/packages/ui/src/components/form.tsx +197 -0
  209. package/templates/monorepo-starter/packages/ui/src/components/hover-card.tsx +44 -0
  210. package/templates/monorepo-starter/packages/ui/src/components/input-field.tsx +116 -0
  211. package/templates/monorepo-starter/packages/ui/src/components/input-group.tsx +170 -0
  212. package/templates/monorepo-starter/packages/ui/src/components/input-otp.tsx +77 -0
  213. package/templates/monorepo-starter/packages/ui/src/components/input.tsx +44 -0
  214. package/templates/monorepo-starter/packages/ui/src/components/item.tsx +193 -0
  215. package/templates/monorepo-starter/packages/ui/src/components/kbd.tsx +28 -0
  216. package/templates/monorepo-starter/packages/ui/src/components/label.tsx +24 -0
  217. package/templates/monorepo-starter/packages/ui/src/components/menubar.tsx +276 -0
  218. package/templates/monorepo-starter/packages/ui/src/components/native-select.tsx +53 -0
  219. package/templates/monorepo-starter/packages/ui/src/components/navigation-menu.tsx +168 -0
  220. package/templates/monorepo-starter/packages/ui/src/components/otp-modal.tsx +125 -0
  221. package/templates/monorepo-starter/packages/ui/src/components/pagination.tsx +127 -0
  222. package/templates/monorepo-starter/packages/ui/src/components/popover.tsx +48 -0
  223. package/templates/monorepo-starter/packages/ui/src/components/progress.tsx +31 -0
  224. package/templates/monorepo-starter/packages/ui/src/components/radio-group.tsx +45 -0
  225. package/templates/monorepo-starter/packages/ui/src/components/resizable.tsx +53 -0
  226. package/templates/monorepo-starter/packages/ui/src/components/scroll-area.tsx +58 -0
  227. package/templates/monorepo-starter/packages/ui/src/components/select-field.tsx +165 -0
  228. package/templates/monorepo-starter/packages/ui/src/components/select.tsx +190 -0
  229. package/templates/monorepo-starter/packages/ui/src/components/separator.tsx +28 -0
  230. package/templates/monorepo-starter/packages/ui/src/components/sheet.tsx +139 -0
  231. package/templates/monorepo-starter/packages/ui/src/components/sidebar.tsx +728 -0
  232. package/templates/monorepo-starter/packages/ui/src/components/skeleton.tsx +13 -0
  233. package/templates/monorepo-starter/packages/ui/src/components/slider.tsx +63 -0
  234. package/templates/monorepo-starter/packages/ui/src/components/sonner.tsx +57 -0
  235. package/templates/monorepo-starter/packages/ui/src/components/spinner.tsx +16 -0
  236. package/templates/monorepo-starter/packages/ui/src/components/switch-field.tsx +22 -0
  237. package/templates/monorepo-starter/packages/ui/src/components/switch.tsx +35 -0
  238. package/templates/monorepo-starter/packages/ui/src/components/table.tsx +120 -0
  239. package/templates/monorepo-starter/packages/ui/src/components/tabs.tsx +66 -0
  240. package/templates/monorepo-starter/packages/ui/src/components/textarea.tsx +18 -0
  241. package/templates/monorepo-starter/packages/ui/src/components/theme-toggle.tsx +41 -0
  242. package/templates/monorepo-starter/packages/ui/src/components/toggle-group.tsx +83 -0
  243. package/templates/monorepo-starter/packages/ui/src/components/toggle.tsx +47 -0
  244. package/templates/monorepo-starter/packages/ui/src/components/tooltip.tsx +61 -0
  245. package/templates/monorepo-starter/packages/ui/src/hooks/use-confirm.ts +12 -0
  246. package/templates/monorepo-starter/packages/ui/src/hooks/use-dialog.ts +12 -0
  247. package/templates/monorepo-starter/packages/ui/src/hooks/use-mobile.ts +21 -0
  248. package/templates/monorepo-starter/packages/ui/src/lib/utils.ts +38 -3
  249. package/templates/monorepo-starter/packages/ui/src/provider/confirm-dialog.tsx +99 -0
  250. package/templates/monorepo-starter/packages/ui/src/provider/dialog.tsx +62 -0
  251. package/templates/monorepo-starter/packages/ui/src/provider/index.tsx +30 -0
  252. package/templates/monorepo-starter/packages/ui/src/provider/react-query.tsx +11 -0
  253. package/templates/monorepo-starter/{apps/web/src/providers → packages/ui/src/provider}/theme.tsx +5 -7
  254. package/templates/monorepo-starter/packages/ui/src/styles/globals.css +109 -61
  255. package/templates/monorepo-starter/packages/ui/src/types/airports-data.d.ts +21 -0
  256. package/templates/monorepo-starter/packages/ui/tsconfig.json +1 -3
  257. package/templates/monorepo-starter/pnpm-lock.yaml +7470 -3080
  258. package/templates/monorepo-starter/pnpm-workspace.yaml +3 -16
  259. package/templates/monorepo-starter/server/.env.example +2 -3
  260. package/templates/monorepo-starter/server/eslint.config.mjs +1 -4
  261. package/templates/monorepo-starter/server/package.json +62 -33
  262. package/templates/monorepo-starter/server/prisma/schema.prisma +292 -116
  263. package/templates/monorepo-starter/server/prisma/seed-functions.ts +0 -0
  264. package/templates/monorepo-starter/server/prisma/seed.ts +0 -0
  265. package/templates/monorepo-starter/server/prisma.config.ts +9 -9
  266. package/templates/monorepo-starter/server/scripts/admin-bootstrap.ts +61 -0
  267. package/templates/monorepo-starter/server/scripts/gen-module.sh +20 -0
  268. package/templates/monorepo-starter/server/scripts/gen-soft-delete.ts +2 -2
  269. package/templates/monorepo-starter/server/src/app.module.ts +34 -24
  270. package/templates/monorepo-starter/server/src/lib/constants/index.ts +64 -0
  271. package/templates/monorepo-starter/server/src/lib/decorators/boolean-query.decorator.ts +18 -0
  272. package/templates/monorepo-starter/server/src/lib/decorators/logger.decorator.ts +1 -1
  273. package/templates/monorepo-starter/server/src/lib/decorators/oauth.decorator.ts +7 -0
  274. package/templates/monorepo-starter/server/src/lib/decorators/user.decorator.ts +10 -0
  275. package/templates/monorepo-starter/server/src/lib/filters/exceptions.filter.ts +169 -24
  276. package/templates/monorepo-starter/server/src/lib/guards/auth.guard.ts +29 -67
  277. package/templates/monorepo-starter/server/src/lib/guards/oauth.guard.ts +28 -0
  278. package/templates/monorepo-starter/server/src/lib/interceptors/response.interceptor.ts +42 -5
  279. package/templates/monorepo-starter/server/src/lib/middleware/cache.middleware.ts +24 -0
  280. package/templates/monorepo-starter/server/src/lib/schemas/env.schema.ts +21 -4
  281. package/templates/monorepo-starter/server/src/lib/utils/client.utils.ts +95 -0
  282. package/templates/monorepo-starter/server/src/lib/utils/cookie.util.ts +4 -3
  283. package/templates/monorepo-starter/server/src/main.ts +20 -10
  284. package/templates/monorepo-starter/server/src/modules/admin/admin.controller.ts +54 -0
  285. package/templates/monorepo-starter/server/src/modules/admin/admin.module.ts +13 -0
  286. package/templates/monorepo-starter/server/src/modules/admin/admin.service.ts +134 -0
  287. package/templates/monorepo-starter/server/src/modules/auth/auth.controller.ts +60 -18
  288. package/templates/monorepo-starter/server/src/modules/auth/auth.module.ts +3 -2
  289. package/templates/monorepo-starter/server/src/modules/auth/auth.service.ts +366 -313
  290. package/templates/monorepo-starter/server/src/modules/auth/oauth.controller.ts +50 -28
  291. package/templates/monorepo-starter/server/src/modules/auth/oauth.service.ts +59 -34
  292. package/templates/monorepo-starter/server/src/modules/auth/otp.service.ts +161 -43
  293. package/templates/monorepo-starter/server/src/modules/cache/cache.module.ts +28 -0
  294. package/templates/monorepo-starter/server/src/modules/cache/cache.service.ts +33 -0
  295. package/templates/monorepo-starter/server/src/modules/env/env.service.ts +4 -3
  296. package/templates/monorepo-starter/server/src/modules/logger/logger.module.ts +1 -0
  297. package/templates/monorepo-starter/server/src/modules/logger/logger.service.ts +1 -1
  298. package/templates/monorepo-starter/server/src/modules/logger/winston.config.ts +2 -2
  299. package/templates/monorepo-starter/server/src/modules/media/cloudinary.provider.ts +14 -0
  300. package/templates/monorepo-starter/server/src/modules/media/cloudinary.service.ts +62 -0
  301. package/templates/monorepo-starter/server/src/modules/media/media.controller.ts +72 -0
  302. package/templates/monorepo-starter/server/src/modules/media/media.module.ts +13 -0
  303. package/templates/monorepo-starter/server/src/modules/media/media.service.ts +146 -0
  304. package/templates/monorepo-starter/server/src/modules/notification/{nodemailer.service.ts → email.service.ts} +5 -9
  305. package/templates/monorepo-starter/server/src/modules/notification/messaging.service.ts +50 -0
  306. package/templates/monorepo-starter/server/src/modules/notification/notification.controller.ts +44 -0
  307. package/templates/monorepo-starter/server/src/modules/notification/notification.module.ts +7 -3
  308. package/templates/monorepo-starter/server/src/modules/notification/notification.service.ts +125 -88
  309. package/templates/monorepo-starter/server/src/modules/notification/push.service.ts +92 -0
  310. package/templates/monorepo-starter/server/src/modules/prisma/prisma.extension.ts +87 -49
  311. package/templates/monorepo-starter/server/src/modules/prisma/prisma.service.ts +10 -9
  312. package/templates/monorepo-starter/server/src/modules/prisma/soft-delete.models.ts +2 -1
  313. package/templates/monorepo-starter/server/src/modules/public/public.controller.ts +3 -2
  314. package/templates/monorepo-starter/server/src/modules/public/public.module.ts +5 -4
  315. package/templates/monorepo-starter/server/src/modules/public/public.service.ts +7 -4
  316. package/templates/monorepo-starter/server/src/modules/scheduler/cleanup.service.ts +15 -7
  317. package/templates/monorepo-starter/server/src/modules/scheduler/scheduler.module.ts +2 -0
  318. package/templates/monorepo-starter/server/src/modules/token/token.module.ts +3 -4
  319. package/templates/monorepo-starter/server/src/modules/token/token.service.ts +205 -75
  320. package/templates/monorepo-starter/server/src/modules/user/user.controller.ts +21 -0
  321. package/templates/monorepo-starter/server/src/modules/user/user.module.ts +12 -0
  322. package/templates/monorepo-starter/server/src/modules/user/user.service.ts +38 -0
  323. package/templates/monorepo-starter/server/src/types/express.d.ts +6 -2
  324. package/templates/monorepo-starter/server/src/types/index.ts +5 -0
  325. package/templates/monorepo-starter/server/tsconfig.json +17 -13
  326. package/templates/monorepo-starter/server/tsup.config.ts +6 -1
  327. package/templates/monorepo-starter/tsconfig.json +1 -1
  328. package/templates/monorepo-starter/turbo.json +1 -1
  329. package/templates/monorepo-starter/apps/web/eslint.config.mjs +0 -4
  330. package/templates/monorepo-starter/apps/web/src/app/(auth)/layout.tsx +0 -7
  331. package/templates/monorepo-starter/apps/web/src/app/globals.css +0 -1
  332. package/templates/monorepo-starter/apps/web/src/components/ThemeSwitch.tsx +0 -34
  333. package/templates/monorepo-starter/apps/web/src/providers/index.tsx +0 -10
  334. package/templates/monorepo-starter/apps/web/src/types/index.d.ts +0 -16
  335. package/templates/monorepo-starter/packages/config/eslint/base.js +0 -31
  336. package/templates/monorepo-starter/packages/config/eslint/nest.js +0 -26
  337. package/templates/monorepo-starter/packages/config/eslint/next.js +0 -39
  338. package/templates/monorepo-starter/packages/config/eslint/react.js +0 -30
  339. package/templates/monorepo-starter/packages/config/typescript/base.json +0 -31
  340. package/templates/monorepo-starter/packages/config/typescript/nest.json +0 -14
  341. package/templates/monorepo-starter/packages/config/typescript/next.json +0 -10
  342. package/templates/monorepo-starter/packages/ui/tsconfig.lint.json +0 -8
  343. package/templates/monorepo-starter/server/README.md +0 -63
  344. package/templates/monorepo-starter/server/scripts/generate.sh +0 -14
  345. package/templates/monorepo-starter/server/src/lib/constants/app.ts +0 -1
  346. package/templates/monorepo-starter/server/src/lib/dto/auth.dto.ts +0 -64
  347. package/templates/monorepo-starter/server/src/lib/dto/security-setting.dto.ts +0 -21
  348. package/templates/monorepo-starter/server/src/lib/pipes/validation.pipe.ts +0 -7
  349. package/templates/monorepo-starter/server/src/lib/templates/notification.templates.ts +0 -276
  350. package/templates/monorepo-starter/server/src/lib/utils/general.util.ts +0 -24
  351. package/templates/monorepo-starter/server/src/modules/auth/role.service.ts +0 -99
  352. package/templates/monorepo-starter/server/src/modules/auth/security-setting.service.ts +0 -102
  353. package/templates/monorepo-starter/server/src/modules/template/template.module.ts +0 -8
  354. package/templates/monorepo-starter/server/src/modules/template/template.service.ts +0 -33
  355. package/templates/monorepo-starter/server/src/types/index.d.ts +0 -13
  356. package/templates/monorepo-starter/server/test/app.e2e-spec.ts +0 -25
  357. package/templates/monorepo-starter/server/test/jest-e2e.json +0 -9
  358. /package/templates/monorepo-starter/{packages/ui/src/hooks → apps/dashboard/public}/.gitkeep +0 -0
package/README.md CHANGED
@@ -33,4 +33,4 @@ This will generate a ready-to-use monorepo under `my-new-project` with:
33
33
 
34
34
  ---
35
35
 
36
- Made with ❤️ by **JZ Digital Labs**
36
+ Made with ❤️ by **ZHX Solutions**
package/bin/index.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-zhx-monorepo",
3
- "version": "0.3.0",
3
+ "version": "2.1.0",
4
4
  "description": "Create a ZHX monorepo with one command",
5
5
  "bin": {
6
6
  "create-zhx-monorepo": "bin/index.js"
@@ -8,11 +8,11 @@
8
8
  "type": "module",
9
9
  "license": "MIT",
10
10
  "engines": {
11
- "node": ">=18"
11
+ "node": ">=24"
12
12
  },
13
13
  "dependencies": {
14
14
  "fs-extra": "^11.3.3",
15
15
  "prompts": "^2.4.2",
16
16
  "kolorist": "^1.8.0"
17
17
  }
18
- }
18
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "radix-nova",
4
+ "rsc": true,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "../../packages/ui/src/styles/globals.css",
9
+ "baseColor": "neutral",
10
+ "cssVariables": true
11
+ },
12
+ "iconLibrary": "lucide",
13
+ "aliases": {
14
+ "components": "@/components",
15
+ "hooks": "@/hooks",
16
+ "lib": "@/lib",
17
+ "utils": "@workspace/ui/lib/utils",
18
+ "ui": "@workspace/ui/components"
19
+ }
20
+ }
@@ -0,0 +1 @@
1
+ export { default } from "@workspace/config/eslint/next";
@@ -0,0 +1,6 @@
1
+ /// <reference types="next" />
2
+ /// <reference types="next/image-types/global" />
3
+ import "./.next/dev/types/routes.d.ts";
4
+
5
+ // NOTE: This file should not be edited
6
+ // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
@@ -0,0 +1,30 @@
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {
3
+ transpilePackages: ["@workspace/ui"],
4
+ allowedDevOrigins: ["192.168.100.9"],
5
+
6
+ images: {
7
+ remotePatterns: [
8
+ {
9
+ protocol: "https",
10
+ hostname: "res.cloudinary.com",
11
+ },
12
+ {
13
+ protocol: "https",
14
+ hostname: "lh3.googleusercontent.com",
15
+ },
16
+ ],
17
+ },
18
+
19
+ async redirects() {
20
+ return [
21
+ {
22
+ source: "/",
23
+ destination: "/dashboard",
24
+ permanent: false,
25
+ },
26
+ ];
27
+ },
28
+ };
29
+
30
+ export default nextConfig;
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "dashboard",
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
+ "@tabler/icons-react": "^3.39.0",
16
+ "@tanstack/react-form": "^1.28.4",
17
+ "@tanstack/react-query": "^5.90.21",
18
+ "@workspace/sdk": "workspace:*",
19
+ "@workspace/shared": "workspace:*",
20
+ "@workspace/ui": "workspace:*",
21
+ "cookies-next": "^6.1.1",
22
+ "lucide-react": "^0.563.0",
23
+ "next": "16.1.6",
24
+ "next-themes": "^0.4.6",
25
+ "react": "^19.2.4",
26
+ "react-dom": "^19.2.4",
27
+ "react-dropzone": "^15.0.0",
28
+ "recharts": "3.7.0",
29
+ "sonner": "^2.0.7",
30
+ "zod": "^4.3.6"
31
+ },
32
+ "devDependencies": {
33
+ "@eslint/js": "^9.39.3",
34
+ "@tailwindcss/postcss": "^4.2.1",
35
+ "@types/node": "^25.3.5",
36
+ "@types/react": "^19.2.14",
37
+ "@types/react-dom": "^19.2.3",
38
+ "@workspace/config": "workspace:*",
39
+ "@workspace/contracts": "workspace:*",
40
+ "eslint": "^9.39.3",
41
+ "eslint-config-next": "^16.1.6"
42
+ }
43
+ }
@@ -0,0 +1 @@
1
+ export { default } from "@workspace/ui/postcss.config";
@@ -0,0 +1,8 @@
1
+ import CUUserForm from "@/components/forms/CUUserForm";
2
+
3
+ const page = async ({ params }: AppPageProps<{ id: string }>) => {
4
+ const { id } = await params;
5
+ return <CUUserForm formType="update" entityId={id} />;
6
+ };
7
+
8
+ export default page;
@@ -0,0 +1,104 @@
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import Image from "next/image";
5
+
6
+ import { useAdminUser } from "@/hooks/admin";
7
+ import { Badge } from "@workspace/ui/components/badge";
8
+
9
+ import {
10
+ type SectionConfig,
11
+ GenericDetailsPage,
12
+ } from "@/components/shared/GenericDetailsPage";
13
+
14
+ const sections: SectionConfig<UserResponse>[] = [
15
+ {
16
+ title: "Profile Information",
17
+ fields: [
18
+ { label: "First Name", accessor: "firstName" },
19
+ { label: "Last Name", accessor: "lastName" },
20
+ { label: "Display Name", accessor: "displayName" },
21
+ { label: "Email", accessor: "email" },
22
+ {
23
+ label: "Role",
24
+ accessor: "role",
25
+ render: (value) => <Badge variant="outline">{value}</Badge>,
26
+ },
27
+ {
28
+ label: "Status",
29
+ accessor: "status",
30
+ render: (value) => <Badge variant="outline">{value}</Badge>,
31
+ },
32
+ ],
33
+ columns: 3,
34
+ },
35
+ {
36
+ title: "Account Details",
37
+ fields: [
38
+ {
39
+ label: "Email Verified",
40
+ accessor: "isEmailVerified",
41
+ render: (value) => (
42
+ <Badge variant={value ? "default" : "outline"}>
43
+ {value ? "Verified" : "Pending"}
44
+ </Badge>
45
+ ),
46
+ },
47
+ {
48
+ label: "Theme",
49
+ accessor: "preferredTheme",
50
+ },
51
+ {
52
+ label: "Last Login",
53
+ accessor: "lastLoginAt",
54
+ format: (value) => (value ? new Date(value).toLocaleString() : "Never"),
55
+ },
56
+ {
57
+ label: "Created At",
58
+ accessor: "createdAt",
59
+ format: (value) => new Date(value).toLocaleString(),
60
+ },
61
+ ],
62
+ columns: 2,
63
+ },
64
+ ];
65
+
66
+ const renderHeader = (data: UserResponse) => (
67
+ <div className="flex items-center gap-4">
68
+ {data.image && (
69
+ <Image
70
+ src={data.image.url}
71
+ alt={data.displayName}
72
+ width={200}
73
+ height={200}
74
+ className="w-20 h-20 rounded-full object-cover"
75
+ />
76
+ )}
77
+ <div>
78
+ <h2 className="text-2xl font-bold">{data.displayName}</h2>
79
+ <p className="text-muted-foreground">{data.email}</p>
80
+ <div className="flex items-center gap-2 mt-2">
81
+ <Badge variant="outline">{data.role}</Badge>
82
+ <Badge variant={data.status === "active" ? "default" : "outline"}>
83
+ {data.status}
84
+ </Badge>
85
+ </div>
86
+ </div>
87
+ </div>
88
+ );
89
+
90
+ const Page = ({ params }: AppPageProps<{ id: string }>) => {
91
+ const { id } = React.use(params);
92
+
93
+ return (
94
+ <GenericDetailsPage
95
+ entityId={id}
96
+ entityName="User"
97
+ useQuery={useAdminUser}
98
+ sections={sections}
99
+ renderHeader={renderHeader}
100
+ />
101
+ );
102
+ };
103
+
104
+ export default Page;
@@ -0,0 +1,7 @@
1
+ import CUUserForm from "@/components/forms/CUUserForm";
2
+
3
+ const page = () => {
4
+ return <CUUserForm formType="add" />;
5
+ };
6
+
7
+ export default page;
@@ -0,0 +1,88 @@
1
+ "use client";
2
+
3
+ import { UserRoleEnum } from "@workspace/contracts";
4
+ import { Badge } from "@workspace/ui/components/badge";
5
+
6
+ import { useAdminUsers } from "@/hooks/admin";
7
+ import UserCard from "@/components/user/UserCard";
8
+ import ListPage from "@/components/shared/ListPage";
9
+ import DateWrapper from "@/components/shared/DateWrapper";
10
+ import type { ColumnConfig } from "@/components/shared/GenericTable";
11
+ import type { SearchByOption } from "@/components/shared/SearchToolbar";
12
+
13
+ const userColumns: ColumnConfig<UserResponse, UserQueryType>[] = [
14
+ {
15
+ header: "Name",
16
+ accessor: (u) => (
17
+ <div className="flex items-center gap-2 min-w-40">
18
+ <UserCard currentUser={u} variant="avatar" />
19
+ <span className="font-medium text-sm truncate" title={u.displayName}>
20
+ {u.displayName}
21
+ </span>
22
+ </div>
23
+ ),
24
+ sortKey: "displayName",
25
+ },
26
+ {
27
+ header: "Role",
28
+ accessor: (u) => <Badge variant="secondary">{u.role}</Badge>,
29
+ sortKey: "role",
30
+ },
31
+ {
32
+ header: "Status",
33
+ accessor: (u) => (
34
+ <Badge variant={u.status === "suspended" ? "destructive" : "secondary"}>
35
+ {u.status}
36
+ </Badge>
37
+ ),
38
+ sortKey: "status",
39
+ },
40
+
41
+ {
42
+ header: "Email",
43
+ accessor: "email",
44
+ sortKey: "email",
45
+ },
46
+ {
47
+ header: "Phone",
48
+ accessor: "phone",
49
+ sortKey: "phone",
50
+ },
51
+ {
52
+ header: "Last Login",
53
+ accessor: (u) =>
54
+ u.lastLoginAt ? <DateWrapper date={u.lastLoginAt} /> : "—",
55
+ sortKey: "lastLoginAt",
56
+ },
57
+ {
58
+ header: "Created",
59
+ accessor: (u) => <DateWrapper date={u.createdAt} />,
60
+ sortKey: "createdAt",
61
+ },
62
+ ];
63
+
64
+ const userSearchByOptions: SearchByOption<UserQueryType>[] = [
65
+ { value: "id", label: "User Id" },
66
+ { value: "displayName", label: "Name" },
67
+ { value: "email", label: "Email" },
68
+ ];
69
+
70
+ const page = () => {
71
+ return (
72
+ <ListPage
73
+ entityKey="users"
74
+ columns={userColumns}
75
+ searchByOptions={userSearchByOptions}
76
+ useListHook={useAdminUsers}
77
+ defaultSortBy="createdAt"
78
+ defaultSearchBy="displayName"
79
+ filterConfig={{
80
+ key: "role",
81
+ label: "Roles",
82
+ options: UserRoleEnum.options,
83
+ }}
84
+ />
85
+ );
86
+ };
87
+
88
+ export default page;