@digilogiclabs/create-saas-app 2.11.0 → 2.12.1

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 (413) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/cli/index.js +1 -1
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/generators/template-generator.d.ts +0 -2
  6. package/dist/generators/template-generator.d.ts.map +1 -1
  7. package/dist/generators/template-generator.js +18 -17
  8. package/dist/generators/template-generator.js.map +1 -1
  9. package/dist/templates/mobile/base/template/App.tsx +7 -4
  10. package/dist/templates/mobile/base/template/app/checkout.tsx +5 -2
  11. package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/_layout.tsx +6 -2
  12. package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/billing.tsx +7 -3
  13. package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/index.tsx +5 -2
  14. package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/profile.tsx +7 -2
  15. package/dist/templates/mobile/ui-auth-payments/template/app/_layout.tsx +2 -4
  16. package/dist/templates/mobile/ui-auth-payments/template/app/auth/login.tsx +6 -3
  17. package/dist/templates/mobile/ui-auth-payments/template/app/auth/signup.tsx +6 -3
  18. package/dist/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/_layout.tsx +6 -2
  19. package/dist/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/billing.tsx +7 -3
  20. package/dist/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/index.tsx +5 -2
  21. package/dist/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/profile.tsx +7 -2
  22. package/dist/templates/mobile/ui-auth-payments-ai/template/app/_layout.tsx +2 -4
  23. package/dist/templates/mobile/ui-auth-payments-ai/template/app/auth/login.tsx +6 -3
  24. package/dist/templates/mobile/ui-auth-payments-ai/template/app/auth/signup.tsx +6 -3
  25. package/dist/templates/shared/admin/web/src/components/admin-nav.tsx +3 -3
  26. package/dist/templates/shared/auth/supabase/web/src/lib/auth-session.ts +36 -16
  27. package/dist/templates/shared/auth/supabase/web/src/middleware.ts +6 -0
  28. package/dist/templates/shared/config/web/next.config.mjs +0 -1
  29. package/dist/templates/shared/cookie-consent/web/components/cookie-consent.tsx +5 -5
  30. package/dist/templates/shared/design/web/src/components/ui/button.tsx +56 -0
  31. package/dist/templates/shared/email/web/src/lib/email/client.ts +1 -1
  32. package/dist/templates/shared/error-pages/web/src/app/error.tsx +13 -11
  33. package/dist/templates/shared/error-pages/web/src/app/global-error.tsx +2 -0
  34. package/dist/templates/shared/error-pages/web/src/app/not-found.tsx +6 -6
  35. package/dist/templates/shared/legal/web/src/app/(legal)/privacy/page.tsx +4 -4
  36. package/dist/templates/shared/legal/web/src/app/(legal)/terms/page.tsx +4 -4
  37. package/dist/templates/shared/loading/web/components/skeleton.tsx +4 -4
  38. package/dist/templates/shared/mock/web/.env.local +55 -0
  39. package/dist/templates/shared/mock/web/src/components/mock-auth-provider.tsx +72 -0
  40. package/dist/templates/shared/mock/web/src/components/mock-banner.tsx +29 -0
  41. package/dist/templates/shared/mock/web/src/lib/mock.ts +147 -0
  42. package/dist/templates/shared/payments/web/src/app/api/webhooks/stripe/route.ts +10 -4
  43. package/dist/templates/shared/redis/web/src/lib/redis.ts +1 -1
  44. package/dist/templates/web/ai-platform/template/package.json +0 -1
  45. package/dist/templates/web/ai-platform/template/src/app/chat/page.tsx +5 -2
  46. package/dist/templates/web/ai-platform/template/src/app/playground/page.tsx +5 -2
  47. package/dist/templates/web/ai-platform/template/src/components/providers/app-providers.tsx +2 -5
  48. package/dist/templates/web/base/template/eslint.config.mjs +14 -0
  49. package/dist/templates/web/base/template/src/app/auth/callback/route.ts +1 -1
  50. package/dist/templates/web/base/template/src/app/checkout/page.tsx +76 -103
  51. package/dist/templates/web/base/template/src/app/dashboard/page.tsx +145 -329
  52. package/dist/templates/web/base/template/src/app/layout.tsx +40 -38
  53. package/dist/templates/web/base/template/src/app/login/page.tsx +116 -66
  54. package/dist/templates/web/base/template/src/app/page.tsx +97 -193
  55. package/dist/templates/web/base/template/src/app/settings/page.tsx +154 -0
  56. package/dist/templates/web/base/template/src/app/signup/page.tsx +117 -66
  57. package/dist/templates/web/base/template/src/components/providers/app-providers.tsx +8 -3
  58. package/dist/templates/web/base/template/src/components/shared/header.tsx +229 -63
  59. package/dist/templates/web/iot-dashboard/template/package.json +0 -1
  60. package/dist/templates/web/iot-dashboard/template/src/components/providers/app-providers.tsx +2 -5
  61. package/dist/templates/web/marketplace/template/package.json +0 -1
  62. package/dist/templates/web/marketplace/template/src/components/providers/app-providers.tsx +2 -5
  63. package/dist/templates/web/micro-saas/template/package.json +0 -1
  64. package/dist/templates/web/micro-saas/template/src/components/providers/app-providers.tsx +2 -5
  65. package/dist/templates/web/ui-auth/template/eslint.config.mjs +14 -0
  66. package/dist/templates/web/ui-auth/template/src/app/checkout/page.tsx +3 -3
  67. package/dist/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +81 -91
  68. package/dist/templates/web/ui-auth/template/src/app/layout.tsx +38 -36
  69. package/dist/templates/web/ui-auth/template/src/app/login/page.tsx +22 -45
  70. package/dist/templates/web/ui-auth/template/src/app/page.tsx +106 -306
  71. package/dist/templates/web/ui-auth/template/src/app/setup/page.tsx +387 -402
  72. package/dist/templates/web/ui-auth/template/src/app/signup/page.tsx +24 -47
  73. package/dist/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +8 -3
  74. package/dist/templates/web/ui-auth/template/src/components/shared/header.tsx +229 -94
  75. package/dist/templates/web/ui-auth-ai/template/src/app/layout.tsx +38 -45
  76. package/dist/templates/web/ui-auth-ai/template/src/app/login/page.tsx +86 -0
  77. package/dist/templates/web/ui-auth-ai/template/src/app/page.tsx +107 -193
  78. package/dist/templates/web/ui-auth-ai/template/src/app/signup/page.tsx +105 -0
  79. package/dist/templates/web/ui-auth-ai/template/src/components/ai/audio-generator.tsx +144 -140
  80. package/dist/templates/web/ui-auth-ai/template/src/components/ai/video-generator.tsx +156 -157
  81. package/dist/templates/web/ui-auth-ai/template/src/components/auth/login-form.tsx +7 -3
  82. package/dist/templates/web/ui-auth-ai/template/src/components/providers/app-providers.tsx +25 -0
  83. package/dist/templates/web/ui-auth-ai/template/src/components/shared/footer.tsx +36 -0
  84. package/dist/templates/web/ui-auth-ai/template/src/components/shared/header.tsx +228 -0
  85. package/dist/templates/web/ui-auth-ai/template/src/components/ui/button.tsx +5 -5
  86. package/dist/templates/web/ui-auth-ai/template/src/components/ui/input.tsx +1 -1
  87. package/dist/templates/web/ui-auth-ai/template/src/components/ui/select.tsx +1 -1
  88. package/dist/templates/web/ui-auth-ai/template/src/components/ui/textarea.tsx +1 -1
  89. package/dist/templates/web/ui-auth-ai/template/src/components/ui/theme-toggle.tsx +34 -0
  90. package/dist/templates/web/ui-auth-ai/template/src/lib/supabase.ts +6 -4
  91. package/dist/templates/web/ui-auth-ai/template/src/providers/auth-provider.tsx +7 -5
  92. package/dist/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +63 -192
  93. package/dist/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +104 -296
  94. package/dist/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +27 -27
  95. package/dist/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +70 -81
  96. package/dist/templates/web/ui-auth-payments/template/src/app/layout.tsx +38 -36
  97. package/dist/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +9 -9
  98. package/dist/templates/web/ui-auth-payments/template/src/app/login/page.tsx +4 -104
  99. package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +69 -337
  100. package/dist/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +55 -68
  101. package/dist/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +13 -13
  102. package/dist/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +4 -123
  103. package/dist/templates/web/ui-auth-payments/template/src/components/client/auth-status.tsx +37 -52
  104. package/dist/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +49 -103
  105. package/dist/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +4 -4
  106. package/dist/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +60 -140
  107. package/dist/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +25 -28
  108. package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +229 -230
  109. package/dist/templates/web/ui-auth-payments/template/src/lib/actions/auth.ts +245 -245
  110. package/dist/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +339 -339
  111. package/dist/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +305 -309
  112. package/dist/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +62 -312
  113. package/dist/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +109 -125
  114. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +27 -27
  115. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +68 -83
  116. package/dist/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +40 -38
  117. package/dist/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +20 -20
  118. package/dist/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +140 -394
  119. package/dist/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +28 -27
  120. package/dist/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +51 -66
  121. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +37 -52
  122. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +50 -79
  123. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +58 -111
  124. package/dist/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +8 -3
  125. package/dist/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +229 -252
  126. package/dist/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +245 -245
  127. package/dist/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +63 -192
  128. package/dist/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +109 -125
  129. package/dist/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +27 -27
  130. package/dist/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +40 -38
  131. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +122 -385
  132. package/dist/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +340 -344
  133. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/auth-status.tsx +37 -52
  134. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +49 -103
  135. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +60 -140
  136. package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +8 -3
  137. package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +229 -252
  138. package/dist/templates/web/ui-auth-payments-audio/template/src/lib/actions/auth.ts +3 -3
  139. package/dist/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +63 -192
  140. package/dist/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +109 -125
  141. package/dist/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +38 -36
  142. package/dist/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +9 -109
  143. package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +132 -392
  144. package/dist/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +346 -350
  145. package/dist/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +9 -128
  146. package/dist/templates/web/ui-auth-payments-video/template/src/components/client/login-form.tsx +90 -0
  147. package/dist/templates/web/ui-auth-payments-video/template/src/components/client/signup-form.tsx +105 -0
  148. package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +8 -3
  149. package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +229 -246
  150. package/dist/templates/web/ui-only/template/eslint.config.mjs +14 -0
  151. package/dist/templates/web/ui-only/template/src/app/checkout/page.tsx +2 -2
  152. package/dist/templates/web/ui-only/template/src/app/login/page.tsx +69 -63
  153. package/dist/templates/web/ui-only/template/src/app/page.tsx +69 -91
  154. package/dist/templates/web/ui-only/template/src/app/signup/page.tsx +94 -79
  155. package/dist/templates/web/ui-only/template/src/components/providers/app-providers.tsx +1 -6
  156. package/dist/templates/web/ui-only/template/src/components/shared/header.tsx +90 -53
  157. package/dist/templates/web/ui-package-test/template/package.json +19 -23
  158. package/dist/templates/web/ui-package-test/template/postcss.config.mjs +8 -0
  159. package/dist/templates/web/ui-package-test/template/src/app/globals.css +88 -0
  160. package/dist/templates/web/ui-package-test/template/src/app/layout.tsx +27 -0
  161. package/dist/templates/web/ui-package-test/template/src/app/page.tsx +46 -106
  162. package/package.json +1 -1
  163. package/src/templates/mobile/base/template/App.tsx +7 -4
  164. package/src/templates/mobile/base/template/app/checkout.tsx +5 -2
  165. package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/_layout.tsx +6 -2
  166. package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/billing.tsx +7 -3
  167. package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/index.tsx +5 -2
  168. package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/profile.tsx +7 -2
  169. package/src/templates/mobile/ui-auth-payments/template/app/_layout.tsx +2 -4
  170. package/src/templates/mobile/ui-auth-payments/template/app/auth/login.tsx +6 -3
  171. package/src/templates/mobile/ui-auth-payments/template/app/auth/signup.tsx +6 -3
  172. package/src/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/_layout.tsx +6 -2
  173. package/src/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/billing.tsx +7 -3
  174. package/src/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/index.tsx +5 -2
  175. package/src/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/profile.tsx +7 -2
  176. package/src/templates/mobile/ui-auth-payments-ai/template/app/_layout.tsx +2 -4
  177. package/src/templates/mobile/ui-auth-payments-ai/template/app/auth/login.tsx +6 -3
  178. package/src/templates/mobile/ui-auth-payments-ai/template/app/auth/signup.tsx +6 -3
  179. package/src/templates/shared/admin/web/src/components/admin-nav.tsx +3 -3
  180. package/src/templates/shared/auth/supabase/web/src/lib/auth-session.ts +36 -16
  181. package/src/templates/shared/auth/supabase/web/src/middleware.ts +6 -0
  182. package/src/templates/shared/config/web/next.config.mjs +0 -1
  183. package/src/templates/shared/cookie-consent/web/components/cookie-consent.tsx +5 -5
  184. package/src/templates/shared/design/web/src/components/ui/button.tsx +56 -0
  185. package/src/templates/shared/email/web/src/lib/email/client.ts +1 -1
  186. package/src/templates/shared/error-pages/web/src/app/error.tsx +13 -11
  187. package/src/templates/shared/error-pages/web/src/app/global-error.tsx +2 -0
  188. package/src/templates/shared/error-pages/web/src/app/not-found.tsx +6 -6
  189. package/src/templates/shared/legal/web/src/app/(legal)/privacy/page.tsx +4 -4
  190. package/src/templates/shared/legal/web/src/app/(legal)/terms/page.tsx +4 -4
  191. package/src/templates/shared/loading/web/components/skeleton.tsx +4 -4
  192. package/src/templates/shared/mock/web/.env.local +55 -0
  193. package/src/templates/shared/mock/web/src/components/mock-auth-provider.tsx +72 -0
  194. package/src/templates/shared/mock/web/src/components/mock-banner.tsx +29 -0
  195. package/src/templates/shared/mock/web/src/lib/mock.ts +147 -0
  196. package/src/templates/shared/payments/web/src/app/api/webhooks/stripe/route.ts +10 -4
  197. package/src/templates/shared/redis/web/src/lib/redis.ts +1 -1
  198. package/src/templates/web/ai-platform/template/package.json +0 -1
  199. package/src/templates/web/ai-platform/template/src/app/chat/page.tsx +5 -2
  200. package/src/templates/web/ai-platform/template/src/app/playground/page.tsx +5 -2
  201. package/src/templates/web/ai-platform/template/src/components/providers/app-providers.tsx +2 -5
  202. package/src/templates/web/base/template/eslint.config.mjs +14 -0
  203. package/src/templates/web/base/template/src/app/auth/callback/route.ts +1 -1
  204. package/src/templates/web/base/template/src/app/checkout/page.tsx +76 -103
  205. package/src/templates/web/base/template/src/app/dashboard/page.tsx +145 -329
  206. package/src/templates/web/base/template/src/app/layout.tsx +40 -38
  207. package/src/templates/web/base/template/src/app/login/page.tsx +116 -66
  208. package/src/templates/web/base/template/src/app/page.tsx +97 -193
  209. package/src/templates/web/base/template/src/app/settings/page.tsx +154 -0
  210. package/src/templates/web/base/template/src/app/signup/page.tsx +117 -66
  211. package/src/templates/web/base/template/src/components/providers/app-providers.tsx +8 -3
  212. package/src/templates/web/base/template/src/components/shared/header.tsx +229 -63
  213. package/src/templates/web/iot-dashboard/template/package.json +0 -1
  214. package/src/templates/web/iot-dashboard/template/src/components/providers/app-providers.tsx +2 -5
  215. package/src/templates/web/marketplace/template/package.json +0 -1
  216. package/src/templates/web/marketplace/template/src/components/providers/app-providers.tsx +2 -5
  217. package/src/templates/web/micro-saas/template/package.json +0 -1
  218. package/src/templates/web/micro-saas/template/src/components/providers/app-providers.tsx +2 -5
  219. package/src/templates/web/ui-auth/template/eslint.config.mjs +14 -0
  220. package/src/templates/web/ui-auth/template/src/app/checkout/page.tsx +3 -3
  221. package/src/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +81 -91
  222. package/src/templates/web/ui-auth/template/src/app/layout.tsx +38 -36
  223. package/src/templates/web/ui-auth/template/src/app/login/page.tsx +22 -45
  224. package/src/templates/web/ui-auth/template/src/app/page.tsx +106 -306
  225. package/src/templates/web/ui-auth/template/src/app/setup/page.tsx +387 -402
  226. package/src/templates/web/ui-auth/template/src/app/signup/page.tsx +24 -47
  227. package/src/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +8 -3
  228. package/src/templates/web/ui-auth/template/src/components/shared/header.tsx +229 -94
  229. package/src/templates/web/ui-auth-ai/template/src/app/layout.tsx +38 -45
  230. package/src/templates/web/ui-auth-ai/template/src/app/login/page.tsx +86 -0
  231. package/src/templates/web/ui-auth-ai/template/src/app/page.tsx +107 -193
  232. package/src/templates/web/ui-auth-ai/template/src/app/signup/page.tsx +105 -0
  233. package/src/templates/web/ui-auth-ai/template/src/components/ai/audio-generator.tsx +144 -140
  234. package/src/templates/web/ui-auth-ai/template/src/components/ai/video-generator.tsx +156 -157
  235. package/src/templates/web/ui-auth-ai/template/src/components/auth/login-form.tsx +7 -3
  236. package/src/templates/web/ui-auth-ai/template/src/components/providers/app-providers.tsx +25 -0
  237. package/src/templates/web/ui-auth-ai/template/src/components/shared/footer.tsx +36 -0
  238. package/src/templates/web/ui-auth-ai/template/src/components/shared/header.tsx +228 -0
  239. package/src/templates/web/ui-auth-ai/template/src/components/ui/button.tsx +5 -5
  240. package/src/templates/web/ui-auth-ai/template/src/components/ui/input.tsx +1 -1
  241. package/src/templates/web/ui-auth-ai/template/src/components/ui/select.tsx +1 -1
  242. package/src/templates/web/ui-auth-ai/template/src/components/ui/textarea.tsx +1 -1
  243. package/src/templates/web/ui-auth-ai/template/src/components/ui/theme-toggle.tsx +34 -0
  244. package/src/templates/web/ui-auth-ai/template/src/lib/supabase.ts +6 -4
  245. package/src/templates/web/ui-auth-ai/template/src/providers/auth-provider.tsx +7 -5
  246. package/src/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +63 -192
  247. package/src/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +104 -296
  248. package/src/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +27 -27
  249. package/src/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +70 -81
  250. package/src/templates/web/ui-auth-payments/template/src/app/layout.tsx +38 -36
  251. package/src/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +9 -9
  252. package/src/templates/web/ui-auth-payments/template/src/app/login/page.tsx +4 -104
  253. package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +69 -337
  254. package/src/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +55 -68
  255. package/src/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +13 -13
  256. package/src/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +4 -123
  257. package/src/templates/web/ui-auth-payments/template/src/components/client/auth-status.tsx +37 -52
  258. package/src/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +49 -103
  259. package/src/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +4 -4
  260. package/src/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +60 -140
  261. package/src/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +25 -28
  262. package/src/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +229 -230
  263. package/src/templates/web/ui-auth-payments/template/src/lib/actions/auth.ts +245 -245
  264. package/src/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +339 -339
  265. package/src/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +305 -309
  266. package/src/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +62 -312
  267. package/src/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +109 -125
  268. package/src/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +27 -27
  269. package/src/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +68 -83
  270. package/src/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +40 -38
  271. package/src/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +20 -20
  272. package/src/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +140 -394
  273. package/src/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +28 -27
  274. package/src/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +51 -66
  275. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +37 -52
  276. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +50 -79
  277. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +58 -111
  278. package/src/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +8 -3
  279. package/src/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +229 -252
  280. package/src/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +245 -245
  281. package/src/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +63 -192
  282. package/src/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +109 -125
  283. package/src/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +27 -27
  284. package/src/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +40 -38
  285. package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +122 -385
  286. package/src/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +340 -344
  287. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/auth-status.tsx +37 -52
  288. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +49 -103
  289. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +60 -140
  290. package/src/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +8 -3
  291. package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +229 -252
  292. package/src/templates/web/ui-auth-payments-audio/template/src/lib/actions/auth.ts +3 -3
  293. package/src/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +63 -192
  294. package/src/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +109 -125
  295. package/src/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +38 -36
  296. package/src/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +9 -109
  297. package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +132 -392
  298. package/src/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +346 -350
  299. package/src/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +9 -128
  300. package/src/templates/web/ui-auth-payments-video/template/src/components/client/login-form.tsx +90 -0
  301. package/src/templates/web/ui-auth-payments-video/template/src/components/client/signup-form.tsx +105 -0
  302. package/src/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +8 -3
  303. package/src/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +229 -246
  304. package/src/templates/web/ui-only/template/eslint.config.mjs +14 -0
  305. package/src/templates/web/ui-only/template/src/app/checkout/page.tsx +2 -2
  306. package/src/templates/web/ui-only/template/src/app/login/page.tsx +69 -63
  307. package/src/templates/web/ui-only/template/src/app/page.tsx +69 -91
  308. package/src/templates/web/ui-only/template/src/app/signup/page.tsx +94 -79
  309. package/src/templates/web/ui-only/template/src/components/providers/app-providers.tsx +1 -6
  310. package/src/templates/web/ui-only/template/src/components/shared/header.tsx +90 -53
  311. package/src/templates/web/ui-package-test/template/package.json +19 -23
  312. package/src/templates/web/ui-package-test/template/postcss.config.mjs +8 -0
  313. package/src/templates/web/ui-package-test/template/src/app/globals.css +88 -0
  314. package/src/templates/web/ui-package-test/template/src/app/layout.tsx +27 -0
  315. package/src/templates/web/ui-package-test/template/src/app/page.tsx +46 -106
  316. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/README.md +0 -655
  317. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/(tabs)/ai.tsx +0 -683
  318. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +0 -124
  319. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app.json +0 -74
  320. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/babel.config.js +0 -25
  321. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/docs/MOBILE-SETUP.md +0 -787
  322. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/eas.json +0 -25
  323. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/expo-env.d.ts +0 -3
  324. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -346
  325. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/jest-setup.ts +0 -37
  326. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -180
  327. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/metro.config.js +0 -11
  328. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/package.json +0 -122
  329. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -599
  330. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/tsconfig.json +0 -32
  331. package/dist/templates/web/base/template/.eslintrc.js +0 -8
  332. package/dist/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
  333. package/dist/templates/web/base/template/src/test/setup.ts +0 -74
  334. package/dist/templates/web/base/template/vitest.config.ts +0 -17
  335. package/dist/templates/web/ui-auth/template/.eslintrc.js +0 -8
  336. package/dist/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
  337. package/dist/templates/web/ui-auth/template/src/test/setup.ts +0 -74
  338. package/dist/templates/web/ui-auth/template/vitest.config.ts +0 -17
  339. package/dist/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
  340. package/dist/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -74
  341. package/dist/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
  342. package/dist/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +0 -49
  343. package/dist/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +0 -74
  344. package/dist/templates/web/ui-auth-payments-ai/template/vitest.config.ts +0 -17
  345. package/dist/templates/web/ui-auth-payments-ai-rag/template/README.md +0 -434
  346. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/KnowledgeManager.tsx +0 -642
  347. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGAnalytics.tsx +0 -466
  348. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGChatInterface.tsx +0 -393
  349. package/dist/templates/web/ui-auth-payments-ai-rag/template/docs/GETTING-STARTED.md +0 -457
  350. package/dist/templates/web/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -478
  351. package/dist/templates/web/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -250
  352. package/dist/templates/web/ui-auth-payments-ai-rag/template/package.json +0 -73
  353. package/dist/templates/web/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -622
  354. package/dist/templates/web/ui-auth-payments-ai-rag/template/src/app/ai/page.tsx +0 -396
  355. package/dist/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
  356. package/dist/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -74
  357. package/dist/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
  358. package/dist/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
  359. package/dist/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -74
  360. package/dist/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
  361. package/dist/templates/web/ui-only/template/.eslintrc.js +0 -8
  362. package/dist/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
  363. package/dist/templates/web/ui-only/template/src/test/setup.ts +0 -74
  364. package/dist/templates/web/ui-only/template/vitest.config.ts +0 -17
  365. package/src/templates/mobile/ui-auth-payments-ai-rag/template/README.md +0 -655
  366. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/(tabs)/ai.tsx +0 -683
  367. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +0 -124
  368. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app.json +0 -74
  369. package/src/templates/mobile/ui-auth-payments-ai-rag/template/babel.config.js +0 -25
  370. package/src/templates/mobile/ui-auth-payments-ai-rag/template/docs/MOBILE-SETUP.md +0 -787
  371. package/src/templates/mobile/ui-auth-payments-ai-rag/template/eas.json +0 -25
  372. package/src/templates/mobile/ui-auth-payments-ai-rag/template/expo-env.d.ts +0 -3
  373. package/src/templates/mobile/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -346
  374. package/src/templates/mobile/ui-auth-payments-ai-rag/template/jest-setup.ts +0 -37
  375. package/src/templates/mobile/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -180
  376. package/src/templates/mobile/ui-auth-payments-ai-rag/template/metro.config.js +0 -11
  377. package/src/templates/mobile/ui-auth-payments-ai-rag/template/package.json +0 -122
  378. package/src/templates/mobile/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -599
  379. package/src/templates/mobile/ui-auth-payments-ai-rag/template/tsconfig.json +0 -32
  380. package/src/templates/web/base/template/.eslintrc.js +0 -8
  381. package/src/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
  382. package/src/templates/web/base/template/src/test/setup.ts +0 -74
  383. package/src/templates/web/base/template/vitest.config.ts +0 -17
  384. package/src/templates/web/ui-auth/template/.eslintrc.js +0 -8
  385. package/src/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
  386. package/src/templates/web/ui-auth/template/src/test/setup.ts +0 -74
  387. package/src/templates/web/ui-auth/template/vitest.config.ts +0 -17
  388. package/src/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
  389. package/src/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -74
  390. package/src/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
  391. package/src/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +0 -49
  392. package/src/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +0 -74
  393. package/src/templates/web/ui-auth-payments-ai/template/vitest.config.ts +0 -17
  394. package/src/templates/web/ui-auth-payments-ai-rag/template/README.md +0 -434
  395. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/KnowledgeManager.tsx +0 -642
  396. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGAnalytics.tsx +0 -466
  397. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGChatInterface.tsx +0 -393
  398. package/src/templates/web/ui-auth-payments-ai-rag/template/docs/GETTING-STARTED.md +0 -457
  399. package/src/templates/web/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -478
  400. package/src/templates/web/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -250
  401. package/src/templates/web/ui-auth-payments-ai-rag/template/package.json +0 -73
  402. package/src/templates/web/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -622
  403. package/src/templates/web/ui-auth-payments-ai-rag/template/src/app/ai/page.tsx +0 -396
  404. package/src/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
  405. package/src/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -74
  406. package/src/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
  407. package/src/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
  408. package/src/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -74
  409. package/src/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
  410. package/src/templates/web/ui-only/template/.eslintrc.js +0 -8
  411. package/src/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
  412. package/src/templates/web/ui-only/template/src/test/setup.ts +0 -74
  413. package/src/templates/web/ui-only/template/vitest.config.ts +0 -17
@@ -1,599 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- const fs = require('fs')
4
- const path = require('path')
5
- const { execSync } = require('child_process')
6
-
7
- console.log('šŸš€ Setting up RAG Knowledge System for React Native...\n')
8
-
9
- // Colors for console output
10
- const colors = {
11
- red: '\x1b[31m',
12
- green: '\x1b[32m',
13
- yellow: '\x1b[33m',
14
- blue: '\x1b[34m',
15
- magenta: '\x1b[35m',
16
- cyan: '\x1b[36m',
17
- white: '\x1b[37m',
18
- reset: '\x1b[0m'
19
- }
20
-
21
- function log(message, color = 'white') {
22
- console.log(`${colors[color]}${message}${colors.reset}`)
23
- }
24
-
25
- function step(number, message) {
26
- log(`\nšŸ“‹ Step ${number}: ${message}`, 'cyan')
27
- }
28
-
29
- function success(message) {
30
- log(`āœ… ${message}`, 'green')
31
- }
32
-
33
- function warning(message) {
34
- log(`āš ļø ${message}`, 'yellow')
35
- }
36
-
37
- function error(message) {
38
- log(`āŒ ${message}`, 'red')
39
- }
40
-
41
- function checkRequirements() {
42
- step(1, 'Checking React Native requirements')
43
-
44
- try {
45
- // Check if we're in an Expo project
46
- if (!fs.existsSync('package.json')) {
47
- throw new Error('package.json not found. Please run this script from your project root.')
48
- }
49
-
50
- const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8'))
51
-
52
- if (!packageJson.dependencies?.expo && !packageJson.dependencies?.['react-native']) {
53
- throw new Error('This appears to be not a React Native/Expo project.')
54
- }
55
-
56
- if (packageJson.dependencies?.expo) {
57
- success('Expo project detected')
58
- } else {
59
- success('React Native project detected')
60
- }
61
-
62
- // Check for required dependencies
63
- const requiredDeps = [
64
- '@digilogiclabs/saas-factory-ai',
65
- '@digilogiclabs/saas-factory-ai-types',
66
- '@supabase/supabase-js',
67
- '@react-native-async-storage/async-storage',
68
- '@react-native-community/netinfo'
69
- ]
70
-
71
- const missingDeps = requiredDeps.filter(dep =>
72
- !packageJson.dependencies?.[dep] && !packageJson.devDependencies?.[dep]
73
- )
74
-
75
- if (missingDeps.length > 0) {
76
- warning(`Missing dependencies: ${missingDeps.join(', ')}`)
77
- log('Installing missing dependencies...')
78
-
79
- if (packageJson.dependencies?.expo) {
80
- execSync(`npx expo install ${missingDeps.join(' ')}`, { stdio: 'inherit' })
81
- } else {
82
- execSync(`npm install ${missingDeps.join(' ')}`, { stdio: 'inherit' })
83
- }
84
- success('Dependencies installed')
85
- } else {
86
- success('All required dependencies found')
87
- }
88
-
89
- } catch (err) {
90
- error(err.message)
91
- process.exit(1)
92
- }
93
- }
94
-
95
- function setupEnvironmentVariables() {
96
- step(2, 'Setting up environment variables')
97
-
98
- const requiredEnvVars = [
99
- 'EXPO_PUBLIC_SUPABASE_URL',
100
- 'EXPO_PUBLIC_SUPABASE_ANON_KEY',
101
- 'EXPO_PUBLIC_OPENAI_API_KEY'
102
- ]
103
-
104
- // Check app.config.js/ts or expo config
105
- const configFiles = ['app.config.js', 'app.config.ts', 'expo.json']
106
- let configFile = null
107
-
108
- for (const file of configFiles) {
109
- if (fs.existsSync(file)) {
110
- configFile = file
111
- break
112
- }
113
- }
114
-
115
- if (!configFile) {
116
- // Create basic app.config.js
117
- const configContent = `const IS_DEV = process.env.APP_VARIANT === 'development'
118
- const IS_PREVIEW = process.env.APP_VARIANT === 'preview'
119
-
120
- const getUniqueIdentifier = () => {
121
- if (IS_DEV) {
122
- return '{{bundleId}}.dev'
123
- }
124
-
125
- if (IS_PREVIEW) {
126
- return '{{bundleId}}.preview'
127
- }
128
-
129
- return '{{bundleId}}'
130
- }
131
-
132
- const getAppName = () => {
133
- if (IS_DEV) {
134
- return '{{displayName}} (Dev)'
135
- }
136
-
137
- if (IS_PREVIEW) {
138
- return '{{displayName}} (Preview)'
139
- }
140
-
141
- return '{{displayName}}'
142
- }
143
-
144
- export default {
145
- expo: {
146
- name: getAppName(),
147
- slug: '{{slug}}',
148
- version: '1.0.0',
149
- orientation: 'portrait',
150
- icon: './assets/icon.png',
151
- userInterfaceStyle: 'automatic',
152
- splash: {
153
- image: './assets/splash.png',
154
- resizeMode: 'contain',
155
- backgroundColor: '#ffffff'
156
- },
157
- assetBundlePatterns: ['**/*'],
158
- ios: {
159
- supportsTablet: true,
160
- bundleIdentifier: getUniqueIdentifier()
161
- },
162
- android: {
163
- adaptiveIcon: {
164
- foregroundImage: './assets/adaptive-icon.png',
165
- backgroundColor: '#ffffff'
166
- },
167
- package: getUniqueIdentifier()
168
- },
169
- web: {
170
- favicon: './assets/favicon.png',
171
- bundler: 'metro'
172
- },
173
- extra: {
174
- supabaseUrl: process.env.EXPO_PUBLIC_SUPABASE_URL,
175
- supabaseAnonKey: process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY,
176
- openaiApiKey: process.env.EXPO_PUBLIC_OPENAI_API_KEY,
177
- eas: {
178
- projectId: '{{easProjectId}}'
179
- }
180
- },
181
- owner: '{{expoUsername}}'
182
- }
183
- }
184
- `
185
- fs.writeFileSync('app.config.js', configContent)
186
- success('Created app.config.js')
187
- configFile = 'app.config.js'
188
- }
189
-
190
- // Check .env files
191
- const envFiles = ['.env.local', '.env']
192
- let envFileExists = false
193
-
194
- for (const envFile of envFiles) {
195
- if (fs.existsSync(envFile)) {
196
- envFileExists = true
197
- success(`Found ${envFile}`)
198
- break
199
- }
200
- }
201
-
202
- if (!envFileExists) {
203
- warning('No environment file found. Creating .env.local...')
204
-
205
- const envTemplate = `# RAG Knowledge System Configuration for React Native
206
- EXPO_PUBLIC_SUPABASE_URL=your_supabase_url_here
207
- EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key_here
208
-
209
- # OpenAI Configuration (exposed to client - use with caution)
210
- EXPO_PUBLIC_OPENAI_API_KEY=your_openai_api_key_here
211
-
212
- # Server-only keys (for API routes if using Expo Router API routes)
213
- SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key_here
214
- OPENAI_API_KEY=your_openai_api_key_here
215
-
216
- # App Configuration
217
- APP_VARIANT=development
218
- EAS_PROJECT_ID=your_eas_project_id_here
219
- `
220
-
221
- fs.writeFileSync('.env.local', envTemplate)
222
- success('Created .env.local template')
223
- warning('Please update .env.local with your actual API keys before proceeding')
224
- warning('Note: In React Native, environment variables are embedded in the build!')
225
- } else {
226
- success('Environment configuration found')
227
- }
228
- }
229
-
230
- function createMobileSpecificConfig() {
231
- step(3, 'Creating mobile-specific RAG configuration')
232
-
233
- // Create lib directory structure
234
- const dirs = ['lib/rag', 'hooks', 'components/rag', 'scripts']
235
- dirs.forEach(dir => {
236
- if (!fs.existsSync(dir)) {
237
- fs.mkdirSync(dir, { recursive: true })
238
- success(`Created directory: ${dir}`)
239
- }
240
- })
241
-
242
- // Create mobile-specific Supabase configuration
243
- const supabaseConfig = `import AsyncStorage from '@react-native-async-storage/async-storage'
244
- import { createClient } from '@supabase/supabase-js'
245
- import Constants from 'expo-constants'
246
- import type { Database } from '../types/supabase'
247
-
248
- const supabaseUrl = Constants.expoConfig?.extra?.supabaseUrl || process.env.EXPO_PUBLIC_SUPABASE_URL
249
- const supabaseAnonKey = Constants.expoConfig?.extra?.supabaseAnonKey || process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY
250
-
251
- if (!supabaseUrl || !supabaseAnonKey) {
252
- throw new Error(
253
- 'Supabase URL and Anon Key are required. Please check your environment configuration.'
254
- )
255
- }
256
-
257
- export const supabase = createClient<Database>(supabaseUrl, supabaseAnonKey, {
258
- auth: {
259
- storage: AsyncStorage,
260
- autoRefreshToken: true,
261
- persistSession: true,
262
- detectSessionInUrl: false,
263
- },
264
- })
265
-
266
- export default supabase
267
- `
268
-
269
- fs.writeFileSync('lib/supabase.ts', supabaseConfig)
270
- success('Created Supabase configuration for React Native')
271
- }
272
-
273
- function createSeedScript() {
274
- step(4, 'Creating knowledge seeding script')
275
-
276
- const seedScript = `#!/usr/bin/env node
277
-
278
- const { createClient } = require('@supabase/supabase-js')
279
- require('dotenv').config({ path: '.env.local' })
280
-
281
- const supabase = createClient(
282
- process.env.EXPO_PUBLIC_SUPABASE_URL,
283
- process.env.SUPABASE_SERVICE_ROLE_KEY || process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY
284
- )
285
-
286
- const sampleMobileDocuments = [
287
- {
288
- namespace: '{{packageName}}-mobile',
289
- category: 'getting-started',
290
- content: 'Welcome to your mobile AI-powered knowledge app! This React Native app uses RAG to provide intelligent responses based on your knowledge base. Swipe through tabs to explore different features.',
291
- fields: {
292
- title: 'Mobile App Welcome',
293
- difficulty: 'beginner',
294
- platform: 'mobile'
295
- },
296
- metadata: {
297
- featured: true,
298
- priority: 1,
299
- mobileOptimized: true
300
- },
301
- source: { type: 'seed', version: '1.0', platform: 'react-native' }
302
- },
303
- {
304
- namespace: '{{packageName}}-mobile',
305
- category: 'features',
306
- content: 'Mobile features include: Voice input for queries, offline caching, push notifications for new knowledge, touch-optimized interface, and seamless sync across devices.',
307
- fields: {
308
- title: 'Mobile Platform Features',
309
- difficulty: 'beginner',
310
- platform: 'mobile'
311
- },
312
- metadata: {
313
- featured: true,
314
- priority: 2,
315
- mobileOptimized: true
316
- },
317
- source: { type: 'seed', version: '1.0', platform: 'react-native' }
318
- },
319
- {
320
- namespace: '{{packageName}}-mobile',
321
- category: 'tutorials',
322
- content: 'To use voice input: 1. Tap the microphone icon in the chat, 2. Speak your question clearly, 3. The app will convert speech to text and process your query, 4. Get AI responses with relevant sources.',
323
- fields: {
324
- title: 'Voice Input Tutorial',
325
- difficulty: 'intermediate',
326
- platform: 'mobile'
327
- },
328
- metadata: {
329
- tutorial: true,
330
- priority: 3,
331
- mobileOptimized: true
332
- },
333
- source: { type: 'seed', version: '1.0', platform: 'react-native' }
334
- },
335
- {
336
- namespace: '{{packageName}}-mobile',
337
- category: 'offline',
338
- content: 'Offline mode: The app caches recent queries and responses for offline access. When offline, you can still browse cached content and queue new queries that will be processed when connection is restored.',
339
- fields: {
340
- title: 'Offline Mode Guide',
341
- difficulty: 'intermediate',
342
- platform: 'mobile'
343
- },
344
- metadata: {
345
- featured: true,
346
- priority: 4,
347
- mobileOptimized: true,
348
- offlineCapable: true
349
- },
350
- source: { type: 'seed', version: '1.0', platform: 'react-native' }
351
- }
352
- ]
353
-
354
- async function seedMobileKnowledge() {
355
- console.log('🌱 Seeding mobile knowledge base...')
356
-
357
- try {
358
- for (const doc of sampleMobileDocuments) {
359
- const { data, error } = await supabase
360
- .from('rag_knowledge_base')
361
- .insert(doc)
362
-
363
- if (error) {
364
- console.error('Error inserting document:', error)
365
- } else {
366
- console.log('āœ… Inserted:', doc.fields.title)
367
- }
368
- }
369
-
370
- console.log('šŸŽ‰ Mobile knowledge base seeded successfully!')
371
- console.log('šŸ“± Next steps for React Native:')
372
- console.log(' 1. Run: npm start or npx expo start')
373
- console.log(' 2. Open in Expo Go or simulator')
374
- console.log(' 3. Navigate to the AI tab')
375
- console.log(' 4. Start chatting with your knowledge base!')
376
- console.log(' 5. Test offline mode by disabling network')
377
-
378
- } catch (error) {
379
- console.error('āŒ Mobile seeding failed:', error)
380
- process.exit(1)
381
- }
382
- }
383
-
384
- seedMobileKnowledge()
385
- `
386
-
387
- fs.writeFileSync('scripts/seed-mobile-knowledge.js', seedScript)
388
- fs.chmodSync('scripts/seed-mobile-knowledge.js', 0o755)
389
- success('Created mobile seed script')
390
- }
391
-
392
- function setupTypeScript() {
393
- step(5, 'Setting up TypeScript types')
394
-
395
- // Create types directory
396
- if (!fs.existsSync('types')) {
397
- fs.mkdirSync('types', { recursive: true })
398
- }
399
-
400
- // Create basic RAG types for mobile
401
- const ragTypes = `// RAG System Types for React Native
402
- export interface MobileRAGConfig {
403
- domain: string
404
- enableOffline: boolean
405
- cacheSize: number
406
- syncStrategy: 'immediate' | 'batch' | 'manual'
407
- voiceInput?: boolean
408
- hapticFeedback?: boolean
409
- }
410
-
411
- export interface OfflineQuery {
412
- id: string
413
- query: string
414
- timestamp: Date
415
- synced: boolean
416
- }
417
-
418
- export interface CachedResponse {
419
- query: string
420
- response: string
421
- sources: any[]
422
- confidence: number
423
- timestamp: Date
424
- expiresAt: Date
425
- }
426
-
427
- export interface MobileRAGState {
428
- isOnline: boolean
429
- isLoading: boolean
430
- cacheSize: number
431
- offlineQueueSize: number
432
- lastSync: Date | null
433
- }
434
- `
435
-
436
- fs.writeFileSync('types/rag.ts', ragTypes)
437
- success('Created mobile RAG types')
438
-
439
- // Create Supabase types placeholder
440
- const supabaseTypes = `// Basic Supabase types for RAG system
441
- // Replace with generated types: supabase gen types --local > types/supabase.ts
442
-
443
- export interface Database {
444
- public: {
445
- Tables: {
446
- rag_knowledge_base: {
447
- Row: {
448
- id: string
449
- namespace: string
450
- category: string
451
- content: string
452
- fields: Record<string, any>
453
- metadata: Record<string, any>
454
- source: Record<string, any>
455
- embedding: number[] | null
456
- created_at: string
457
- updated_at: string
458
- version: number
459
- }
460
- Insert: {
461
- id?: string
462
- namespace?: string
463
- category?: string
464
- content: string
465
- fields?: Record<string, any>
466
- metadata?: Record<string, any>
467
- source?: Record<string, any>
468
- embedding?: number[] | null
469
- created_at?: string
470
- updated_at?: string
471
- version?: number
472
- }
473
- Update: {
474
- id?: string
475
- namespace?: string
476
- category?: string
477
- content?: string
478
- fields?: Record<string, any>
479
- metadata?: Record<string, any>
480
- source?: Record<string, any>
481
- embedding?: number[] | null
482
- created_at?: string
483
- updated_at?: string
484
- version?: number
485
- }
486
- }
487
- }
488
- Views: {
489
- [_ in never]: never
490
- }
491
- Functions: {
492
- rag_similarity_search: {
493
- Args: {
494
- query_embedding: number[]
495
- search_namespace?: string
496
- search_category?: string
497
- similarity_threshold?: number
498
- max_results?: number
499
- }
500
- Returns: {
501
- id: string
502
- content: string
503
- category: string
504
- fields: Record<string, any>
505
- metadata: Record<string, any>
506
- similarity: number
507
- }[]
508
- }
509
- }
510
- Enums: {
511
- [_ in never]: never
512
- }
513
- }
514
- }
515
- `
516
-
517
- fs.writeFileSync('types/supabase.ts', supabaseTypes)
518
- success('Created basic Supabase types')
519
- }
520
-
521
- function updatePackageJson() {
522
- step(6, 'Updating package.json scripts')
523
-
524
- const packageJsonPath = 'package.json'
525
- if (fs.existsSync(packageJsonPath)) {
526
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'))
527
-
528
- packageJson.scripts = {
529
- ...packageJson.scripts,
530
- 'setup:rag': 'node scripts/setup-rag.js',
531
- 'seed:knowledge': 'node scripts/seed-mobile-knowledge.js',
532
- 'db:types': 'supabase gen types --local > types/supabase.ts'
533
- }
534
-
535
- fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2))
536
- success('Updated package.json scripts')
537
- }
538
- }
539
-
540
- function displayMobileNextSteps() {
541
- step(7, 'Setup complete! Mobile-specific next steps')
542
-
543
- log('\nšŸŽ‰ Mobile RAG Knowledge System setup complete!\n', 'green')
544
-
545
- log('šŸ“± Mobile-specific next steps:', 'cyan')
546
- log(' 1. Update your .env.local with actual API keys')
547
- log(' 2. Ensure your Supabase database has the RAG tables')
548
- log(' 3. Run the mobile seed script: npm run seed:knowledge')
549
- log(' 4. Start Expo: npx expo start')
550
- log(' 5. Open in simulator or Expo Go app')
551
- log(' 6. Test the AI tab with voice input and offline mode')
552
-
553
- log('\nšŸ”§ Available commands:', 'cyan')
554
- log(' npm run setup:rag - Run this setup script')
555
- log(' npm run seed:knowledge - Add mobile-optimized knowledge')
556
- log(' npm run db:types - Generate TypeScript types')
557
- log(' npx expo start - Start development server')
558
- log(' npx expo start --offline - Start in offline mode')
559
-
560
- log('\nšŸ“š Mobile-specific files:', 'cyan')
561
- log(' • RAG Hook: hooks/useRAGSystem.ts')
562
- log(' • AI Screen: app/(tabs)/ai.tsx')
563
- log(' • Config: lib/rag/config.ts')
564
- log(' • Supabase: lib/supabase.ts')
565
- log(' • Types: types/rag.ts, types/supabase.ts')
566
-
567
- log('\nšŸ’” Mobile tips:', 'yellow')
568
- log(' • Test offline functionality by disabling network')
569
- log(' • Voice input works in simulator with computer microphone')
570
- log(' • Haptic feedback enhances user experience')
571
- log(' • Cache settings can be adjusted in config')
572
- log(' • Consider push notifications for knowledge updates')
573
-
574
- log('\nšŸ“Š Performance considerations:', 'yellow')
575
- log(' • Embeddings are computed server-side to save battery')
576
- log(' • Responses are cached locally for offline access')
577
- log(' • Background sync keeps knowledge base updated')
578
- log(' • Network requests are debounced to reduce API calls')
579
-
580
- log('\nšŸš€ Happy building with Mobile RAG!', 'green')
581
- }
582
-
583
- // Main execution
584
- async function main() {
585
- try {
586
- checkRequirements()
587
- setupEnvironmentVariables()
588
- createMobileSpecificConfig()
589
- createSeedScript()
590
- setupTypeScript()
591
- updatePackageJson()
592
- displayMobileNextSteps()
593
- } catch (err) {
594
- error(`Mobile setup failed: ${err.message}`)
595
- process.exit(1)
596
- }
597
- }
598
-
599
- main()
@@ -1,32 +0,0 @@
1
- {
2
- "extends": "expo/tsconfig.base",
3
- "compilerOptions": {
4
- "strict": true,
5
- "baseUrl": "./",
6
- "paths": {
7
- "@/*": ["./*"],
8
- "@/components/*": ["./components/*"],
9
- "@/hooks/*": ["./hooks/*"],
10
- "@/utils/*": ["./utils/*"],
11
- "@/types/*": ["./types/*"],
12
- "@/constants/*": ["./constants/*"],
13
- "@/lib/*": ["./lib/*"]
14
- },
15
- "skipLibCheck": true,
16
- "allowSyntheticDefaultImports": true,
17
- "esModuleInterop": true,
18
- "moduleResolution": "bundler",
19
- "resolveJsonModule": true,
20
- "noEmit": true,
21
- "jsx": "react-jsx"
22
- },
23
- "include": [
24
- "**/*.ts",
25
- "**/*.tsx",
26
- ".expo/types/**/*.ts",
27
- "expo-env.d.ts"
28
- ],
29
- "exclude": [
30
- "node_modules"
31
- ]
32
- }
@@ -1,8 +0,0 @@
1
- /** @type {import('eslint').Linter.Config} */
2
- module.exports = {
3
- extends: ['next/core-web-vitals'],
4
- rules: {
5
- // Add any custom rules here
6
- },
7
- }
8
-
@@ -1,49 +0,0 @@
1
- /**
2
- * Example test file demonstrating testing patterns for SaaS Factory components
3
- *
4
- * This is optional and serves as a reference for testing your components.
5
- * You can delete this file if you don't need example tests.
6
- */
7
-
8
- import { render, screen } from '@testing-library/react'
9
- import { Button } from '@digilogiclabs/saas-factory-ui'
10
-
11
- // Example: Testing UI components
12
- describe('UI Components', () => {
13
- it('renders button with correct text', () => {
14
- render(<Button>Click me</Button>)
15
- expect(screen.getByRole('button', { name: /click me/i })).toBeInTheDocument()
16
- })
17
-
18
- it('button can be disabled', () => {
19
- render(<Button disabled>Disabled button</Button>)
20
- expect(screen.getByRole('button')).toBeDisabled()
21
- })
22
- })
23
-
24
- // Example: Testing custom components
25
- function MockComponent({ title }: { title: string }) {
26
- return <h1>{title}</h1>
27
- }
28
-
29
- describe('Custom Components', () => {
30
- it('renders with correct title', () => {
31
- render(<MockComponent title="Test Title" />)
32
- expect(screen.getByRole('heading', { level: 1 })).toHaveTextContent('Test Title')
33
- })
34
- })
35
-
36
- // Example: Testing utilities
37
- function formatCurrency(amount: number): string {
38
- return new Intl.NumberFormat('en-US', {
39
- style: 'currency',
40
- currency: 'USD',
41
- }).format(amount)
42
- }
43
-
44
- describe('Utilities', () => {
45
- it('formats currency correctly', () => {
46
- expect(formatCurrency(1000)).toBe('$1,000.00')
47
- expect(formatCurrency(0)).toBe('$0.00')
48
- })
49
- })