@digilogiclabs/create-saas-app 2.10.0 → 2.12.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 (416) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +153 -113
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/cli/commands/create.d.ts.map +1 -1
  5. package/dist/cli/commands/create.js +2 -6
  6. package/dist/cli/commands/create.js.map +1 -1
  7. package/dist/cli/index.js +1 -1
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/generators/template-generator.d.ts.map +1 -1
  10. package/dist/generators/template-generator.js +15 -8
  11. package/dist/generators/template-generator.js.map +1 -1
  12. package/dist/templates/shared/admin/web/src/components/admin-nav.tsx +3 -3
  13. package/dist/templates/shared/auth/supabase/web/src/lib/auth-session.ts +36 -16
  14. package/dist/templates/shared/auth/supabase/web/src/middleware.ts +6 -0
  15. package/dist/templates/shared/cookie-consent/web/components/cookie-consent.tsx +5 -5
  16. package/dist/templates/shared/design/web/src/components/ui/button.tsx +56 -0
  17. package/dist/templates/shared/email/web/src/lib/email/client.ts +1 -1
  18. package/dist/templates/shared/error-pages/web/src/app/error.tsx +13 -11
  19. package/dist/templates/shared/error-pages/web/src/app/global-error.tsx +2 -0
  20. package/dist/templates/shared/error-pages/web/src/app/not-found.tsx +6 -6
  21. package/dist/templates/shared/legal/web/src/app/(legal)/privacy/page.tsx +4 -4
  22. package/dist/templates/shared/legal/web/src/app/(legal)/terms/page.tsx +4 -4
  23. package/dist/templates/shared/loading/web/components/skeleton.tsx +4 -4
  24. package/dist/templates/shared/mock/web/.env.local +55 -0
  25. package/dist/templates/shared/mock/web/src/components/mock-auth-provider.tsx +72 -0
  26. package/dist/templates/shared/mock/web/src/components/mock-banner.tsx +29 -0
  27. package/dist/templates/shared/mock/web/src/lib/mock.ts +147 -0
  28. package/dist/templates/shared/payments/web/src/app/api/webhooks/stripe/route.ts +10 -4
  29. package/dist/templates/shared/redis/web/src/lib/redis.ts +1 -1
  30. package/dist/templates/web/ai-platform/template/src/app/api/auth/route.ts +57 -0
  31. package/dist/templates/web/ai-platform/template/src/app/login/page.tsx +112 -0
  32. package/dist/templates/web/ai-platform/template/src/app/models/page.tsx +186 -0
  33. package/dist/templates/web/ai-platform/template/src/app/playground/page.tsx +251 -0
  34. package/dist/templates/web/ai-platform/template/src/app/settings/page.tsx +190 -0
  35. package/dist/templates/web/ai-platform/template/src/app/signup/page.tsx +133 -0
  36. package/dist/templates/web/ai-platform/template/src/lib/auth-session.ts +52 -0
  37. package/dist/templates/web/base/template/eslint.config.mjs +14 -0
  38. package/dist/templates/web/base/template/src/app/auth/callback/route.ts +1 -1
  39. package/dist/templates/web/base/template/src/app/checkout/page.tsx +76 -103
  40. package/dist/templates/web/base/template/src/app/dashboard/page.tsx +145 -329
  41. package/dist/templates/web/base/template/src/app/layout.tsx +40 -38
  42. package/dist/templates/web/base/template/src/app/login/page.tsx +116 -66
  43. package/dist/templates/web/base/template/src/app/page.tsx +97 -193
  44. package/dist/templates/web/base/template/src/app/settings/page.tsx +154 -0
  45. package/dist/templates/web/base/template/src/app/signup/page.tsx +117 -66
  46. package/dist/templates/web/base/template/src/components/providers/app-providers.tsx +8 -3
  47. package/dist/templates/web/base/template/src/components/shared/header.tsx +229 -63
  48. package/dist/templates/web/iot-dashboard/template/src/app/alerts/page.tsx +157 -0
  49. package/dist/templates/web/iot-dashboard/template/src/app/api/auth/route.ts +57 -0
  50. package/dist/templates/web/iot-dashboard/template/src/app/devices/[id]/page.tsx +204 -0
  51. package/dist/templates/web/iot-dashboard/template/src/app/devices/new/page.tsx +139 -0
  52. package/dist/templates/web/iot-dashboard/template/src/app/devices/page.tsx +171 -0
  53. package/dist/templates/web/iot-dashboard/template/src/app/login/page.tsx +112 -0
  54. package/dist/templates/web/iot-dashboard/template/src/app/settings/page.tsx +186 -0
  55. package/dist/templates/web/iot-dashboard/template/src/app/signup/page.tsx +133 -0
  56. package/dist/templates/web/iot-dashboard/template/src/lib/auth-session.ts +52 -0
  57. package/dist/templates/web/marketplace/template/src/app/api/auth/route.ts +57 -0
  58. package/dist/templates/web/marketplace/template/src/app/login/page.tsx +112 -0
  59. package/dist/templates/web/marketplace/template/src/app/orders/page.tsx +160 -0
  60. package/dist/templates/web/marketplace/template/src/app/products/[id]/page.tsx +218 -0
  61. package/dist/templates/web/marketplace/template/src/app/settings/page.tsx +150 -0
  62. package/dist/templates/web/marketplace/template/src/app/signup/page.tsx +133 -0
  63. package/dist/templates/web/marketplace/template/src/lib/auth-session.ts +52 -0
  64. package/dist/templates/web/micro-saas/template/src/app/api/auth/route.ts +57 -0
  65. package/dist/templates/web/micro-saas/template/src/app/login/page.tsx +14 -3
  66. package/dist/templates/web/micro-saas/template/src/app/signup/page.tsx +15 -4
  67. package/dist/templates/web/micro-saas/template/src/lib/auth-session.ts +52 -0
  68. package/dist/templates/web/ui-auth/template/eslint.config.mjs +14 -0
  69. package/dist/templates/web/ui-auth/template/src/app/checkout/page.tsx +3 -3
  70. package/dist/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +81 -91
  71. package/dist/templates/web/ui-auth/template/src/app/layout.tsx +38 -36
  72. package/dist/templates/web/ui-auth/template/src/app/login/page.tsx +22 -45
  73. package/dist/templates/web/ui-auth/template/src/app/page.tsx +106 -306
  74. package/dist/templates/web/ui-auth/template/src/app/setup/page.tsx +387 -402
  75. package/dist/templates/web/ui-auth/template/src/app/signup/page.tsx +24 -47
  76. package/dist/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +8 -3
  77. package/dist/templates/web/ui-auth/template/src/components/shared/header.tsx +229 -94
  78. package/dist/templates/web/ui-auth-ai/template/src/app/layout.tsx +38 -45
  79. package/dist/templates/web/ui-auth-ai/template/src/app/login/page.tsx +86 -0
  80. package/dist/templates/web/ui-auth-ai/template/src/app/page.tsx +107 -193
  81. package/dist/templates/web/ui-auth-ai/template/src/app/signup/page.tsx +105 -0
  82. package/dist/templates/web/ui-auth-ai/template/src/components/ai/audio-generator.tsx +144 -140
  83. package/dist/templates/web/ui-auth-ai/template/src/components/ai/video-generator.tsx +156 -157
  84. package/dist/templates/web/ui-auth-ai/template/src/components/auth/login-form.tsx +7 -3
  85. package/dist/templates/web/ui-auth-ai/template/src/components/providers/app-providers.tsx +25 -0
  86. package/dist/templates/web/ui-auth-ai/template/src/components/shared/footer.tsx +36 -0
  87. package/dist/templates/web/ui-auth-ai/template/src/components/shared/header.tsx +228 -0
  88. package/dist/templates/web/ui-auth-ai/template/src/components/ui/button.tsx +5 -5
  89. package/dist/templates/web/ui-auth-ai/template/src/components/ui/input.tsx +1 -1
  90. package/dist/templates/web/ui-auth-ai/template/src/components/ui/select.tsx +1 -1
  91. package/dist/templates/web/ui-auth-ai/template/src/components/ui/textarea.tsx +1 -1
  92. package/dist/templates/web/ui-auth-ai/template/src/components/ui/theme-toggle.tsx +34 -0
  93. package/dist/templates/web/ui-auth-ai/template/src/lib/supabase.ts +6 -4
  94. package/dist/templates/web/ui-auth-ai/template/src/providers/auth-provider.tsx +7 -5
  95. package/dist/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +63 -192
  96. package/dist/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +104 -296
  97. package/dist/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +27 -27
  98. package/dist/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +70 -81
  99. package/dist/templates/web/ui-auth-payments/template/src/app/layout.tsx +38 -36
  100. package/dist/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +9 -9
  101. package/dist/templates/web/ui-auth-payments/template/src/app/login/page.tsx +4 -104
  102. package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +69 -337
  103. package/dist/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +55 -68
  104. package/dist/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +13 -13
  105. package/dist/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +4 -123
  106. package/dist/templates/web/ui-auth-payments/template/src/components/client/auth-status.tsx +37 -52
  107. package/dist/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +49 -103
  108. package/dist/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +4 -4
  109. package/dist/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +60 -140
  110. package/dist/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +25 -28
  111. package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +229 -230
  112. package/dist/templates/web/ui-auth-payments/template/src/lib/actions/auth.ts +245 -245
  113. package/dist/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +339 -339
  114. package/dist/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +305 -309
  115. package/dist/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +62 -312
  116. package/dist/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +109 -125
  117. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +27 -27
  118. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +68 -83
  119. package/dist/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +40 -38
  120. package/dist/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +20 -20
  121. package/dist/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +140 -394
  122. package/dist/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +28 -27
  123. package/dist/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +51 -66
  124. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +37 -52
  125. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +50 -79
  126. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +58 -111
  127. package/dist/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +8 -3
  128. package/dist/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +229 -252
  129. package/dist/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +245 -245
  130. package/dist/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +63 -192
  131. package/dist/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +109 -125
  132. package/dist/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +27 -27
  133. package/dist/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +40 -38
  134. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +122 -385
  135. package/dist/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +340 -344
  136. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/auth-status.tsx +37 -52
  137. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +49 -103
  138. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +60 -140
  139. package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +8 -3
  140. package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +229 -252
  141. package/dist/templates/web/ui-auth-payments-audio/template/src/lib/actions/auth.ts +3 -3
  142. package/dist/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +63 -192
  143. package/dist/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +109 -125
  144. package/dist/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +38 -36
  145. package/dist/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +9 -109
  146. package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +132 -392
  147. package/dist/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +346 -350
  148. package/dist/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +9 -128
  149. package/dist/templates/web/ui-auth-payments-video/template/src/components/client/login-form.tsx +90 -0
  150. package/dist/templates/web/ui-auth-payments-video/template/src/components/client/signup-form.tsx +105 -0
  151. package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +8 -3
  152. package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +229 -246
  153. package/dist/templates/web/ui-only/template/eslint.config.mjs +14 -0
  154. package/dist/templates/web/ui-only/template/src/app/checkout/page.tsx +2 -2
  155. package/dist/templates/web/ui-only/template/src/app/login/page.tsx +69 -63
  156. package/dist/templates/web/ui-only/template/src/app/page.tsx +69 -91
  157. package/dist/templates/web/ui-only/template/src/app/signup/page.tsx +94 -79
  158. package/dist/templates/web/ui-only/template/src/components/providers/app-providers.tsx +1 -6
  159. package/dist/templates/web/ui-only/template/src/components/shared/header.tsx +90 -53
  160. package/dist/templates/web/ui-package-test/template/package.json +19 -23
  161. package/dist/templates/web/ui-package-test/template/postcss.config.mjs +8 -0
  162. package/dist/templates/web/ui-package-test/template/src/app/globals.css +88 -0
  163. package/dist/templates/web/ui-package-test/template/src/app/layout.tsx +27 -0
  164. package/dist/templates/web/ui-package-test/template/src/app/page.tsx +46 -106
  165. package/package.json +1 -1
  166. package/src/templates/shared/admin/web/src/components/admin-nav.tsx +3 -3
  167. package/src/templates/shared/auth/supabase/web/src/lib/auth-session.ts +36 -16
  168. package/src/templates/shared/auth/supabase/web/src/middleware.ts +6 -0
  169. package/src/templates/shared/cookie-consent/web/components/cookie-consent.tsx +5 -5
  170. package/src/templates/shared/design/web/src/components/ui/button.tsx +56 -0
  171. package/src/templates/shared/email/web/src/lib/email/client.ts +1 -1
  172. package/src/templates/shared/error-pages/web/src/app/error.tsx +13 -11
  173. package/src/templates/shared/error-pages/web/src/app/global-error.tsx +2 -0
  174. package/src/templates/shared/error-pages/web/src/app/not-found.tsx +6 -6
  175. package/src/templates/shared/legal/web/src/app/(legal)/privacy/page.tsx +4 -4
  176. package/src/templates/shared/legal/web/src/app/(legal)/terms/page.tsx +4 -4
  177. package/src/templates/shared/loading/web/components/skeleton.tsx +4 -4
  178. package/src/templates/shared/mock/web/.env.local +55 -0
  179. package/src/templates/shared/mock/web/src/components/mock-auth-provider.tsx +72 -0
  180. package/src/templates/shared/mock/web/src/components/mock-banner.tsx +29 -0
  181. package/src/templates/shared/mock/web/src/lib/mock.ts +147 -0
  182. package/src/templates/shared/payments/web/src/app/api/webhooks/stripe/route.ts +10 -4
  183. package/src/templates/shared/redis/web/src/lib/redis.ts +1 -1
  184. package/src/templates/web/ai-platform/template/src/app/api/auth/route.ts +57 -0
  185. package/src/templates/web/ai-platform/template/src/app/login/page.tsx +112 -0
  186. package/src/templates/web/ai-platform/template/src/app/models/page.tsx +186 -0
  187. package/src/templates/web/ai-platform/template/src/app/playground/page.tsx +251 -0
  188. package/src/templates/web/ai-platform/template/src/app/settings/page.tsx +190 -0
  189. package/src/templates/web/ai-platform/template/src/app/signup/page.tsx +133 -0
  190. package/src/templates/web/ai-platform/template/src/lib/auth-session.ts +52 -0
  191. package/src/templates/web/base/template/eslint.config.mjs +14 -0
  192. package/src/templates/web/base/template/src/app/auth/callback/route.ts +1 -1
  193. package/src/templates/web/base/template/src/app/checkout/page.tsx +76 -103
  194. package/src/templates/web/base/template/src/app/dashboard/page.tsx +145 -329
  195. package/src/templates/web/base/template/src/app/layout.tsx +40 -38
  196. package/src/templates/web/base/template/src/app/login/page.tsx +116 -66
  197. package/src/templates/web/base/template/src/app/page.tsx +97 -193
  198. package/src/templates/web/base/template/src/app/settings/page.tsx +154 -0
  199. package/src/templates/web/base/template/src/app/signup/page.tsx +117 -66
  200. package/src/templates/web/base/template/src/components/providers/app-providers.tsx +8 -3
  201. package/src/templates/web/base/template/src/components/shared/header.tsx +229 -63
  202. package/src/templates/web/iot-dashboard/template/src/app/alerts/page.tsx +157 -0
  203. package/src/templates/web/iot-dashboard/template/src/app/api/auth/route.ts +57 -0
  204. package/src/templates/web/iot-dashboard/template/src/app/devices/[id]/page.tsx +204 -0
  205. package/src/templates/web/iot-dashboard/template/src/app/devices/new/page.tsx +139 -0
  206. package/src/templates/web/iot-dashboard/template/src/app/devices/page.tsx +171 -0
  207. package/src/templates/web/iot-dashboard/template/src/app/login/page.tsx +112 -0
  208. package/src/templates/web/iot-dashboard/template/src/app/settings/page.tsx +186 -0
  209. package/src/templates/web/iot-dashboard/template/src/app/signup/page.tsx +133 -0
  210. package/src/templates/web/iot-dashboard/template/src/lib/auth-session.ts +52 -0
  211. package/src/templates/web/marketplace/template/src/app/api/auth/route.ts +57 -0
  212. package/src/templates/web/marketplace/template/src/app/login/page.tsx +112 -0
  213. package/src/templates/web/marketplace/template/src/app/orders/page.tsx +160 -0
  214. package/src/templates/web/marketplace/template/src/app/products/[id]/page.tsx +218 -0
  215. package/src/templates/web/marketplace/template/src/app/settings/page.tsx +150 -0
  216. package/src/templates/web/marketplace/template/src/app/signup/page.tsx +133 -0
  217. package/src/templates/web/marketplace/template/src/lib/auth-session.ts +52 -0
  218. package/src/templates/web/micro-saas/template/src/app/api/auth/route.ts +57 -0
  219. package/src/templates/web/micro-saas/template/src/app/login/page.tsx +14 -3
  220. package/src/templates/web/micro-saas/template/src/app/signup/page.tsx +15 -4
  221. package/src/templates/web/micro-saas/template/src/lib/auth-session.ts +52 -0
  222. package/src/templates/web/ui-auth/template/eslint.config.mjs +14 -0
  223. package/src/templates/web/ui-auth/template/src/app/checkout/page.tsx +3 -3
  224. package/src/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +81 -91
  225. package/src/templates/web/ui-auth/template/src/app/layout.tsx +38 -36
  226. package/src/templates/web/ui-auth/template/src/app/login/page.tsx +22 -45
  227. package/src/templates/web/ui-auth/template/src/app/page.tsx +106 -306
  228. package/src/templates/web/ui-auth/template/src/app/setup/page.tsx +387 -402
  229. package/src/templates/web/ui-auth/template/src/app/signup/page.tsx +24 -47
  230. package/src/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +8 -3
  231. package/src/templates/web/ui-auth/template/src/components/shared/header.tsx +229 -94
  232. package/src/templates/web/ui-auth-ai/template/src/app/layout.tsx +38 -45
  233. package/src/templates/web/ui-auth-ai/template/src/app/login/page.tsx +86 -0
  234. package/src/templates/web/ui-auth-ai/template/src/app/page.tsx +107 -193
  235. package/src/templates/web/ui-auth-ai/template/src/app/signup/page.tsx +105 -0
  236. package/src/templates/web/ui-auth-ai/template/src/components/ai/audio-generator.tsx +144 -140
  237. package/src/templates/web/ui-auth-ai/template/src/components/ai/video-generator.tsx +156 -157
  238. package/src/templates/web/ui-auth-ai/template/src/components/auth/login-form.tsx +7 -3
  239. package/src/templates/web/ui-auth-ai/template/src/components/providers/app-providers.tsx +25 -0
  240. package/src/templates/web/ui-auth-ai/template/src/components/shared/footer.tsx +36 -0
  241. package/src/templates/web/ui-auth-ai/template/src/components/shared/header.tsx +228 -0
  242. package/src/templates/web/ui-auth-ai/template/src/components/ui/button.tsx +5 -5
  243. package/src/templates/web/ui-auth-ai/template/src/components/ui/input.tsx +1 -1
  244. package/src/templates/web/ui-auth-ai/template/src/components/ui/select.tsx +1 -1
  245. package/src/templates/web/ui-auth-ai/template/src/components/ui/textarea.tsx +1 -1
  246. package/src/templates/web/ui-auth-ai/template/src/components/ui/theme-toggle.tsx +34 -0
  247. package/src/templates/web/ui-auth-ai/template/src/lib/supabase.ts +6 -4
  248. package/src/templates/web/ui-auth-ai/template/src/providers/auth-provider.tsx +7 -5
  249. package/src/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +63 -192
  250. package/src/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +104 -296
  251. package/src/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +27 -27
  252. package/src/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +70 -81
  253. package/src/templates/web/ui-auth-payments/template/src/app/layout.tsx +38 -36
  254. package/src/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +9 -9
  255. package/src/templates/web/ui-auth-payments/template/src/app/login/page.tsx +4 -104
  256. package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +69 -337
  257. package/src/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +55 -68
  258. package/src/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +13 -13
  259. package/src/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +4 -123
  260. package/src/templates/web/ui-auth-payments/template/src/components/client/auth-status.tsx +37 -52
  261. package/src/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +49 -103
  262. package/src/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +4 -4
  263. package/src/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +60 -140
  264. package/src/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +25 -28
  265. package/src/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +229 -230
  266. package/src/templates/web/ui-auth-payments/template/src/lib/actions/auth.ts +245 -245
  267. package/src/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +339 -339
  268. package/src/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +305 -309
  269. package/src/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +62 -312
  270. package/src/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +109 -125
  271. package/src/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +27 -27
  272. package/src/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +68 -83
  273. package/src/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +40 -38
  274. package/src/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +20 -20
  275. package/src/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +140 -394
  276. package/src/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +28 -27
  277. package/src/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +51 -66
  278. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +37 -52
  279. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +50 -79
  280. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +58 -111
  281. package/src/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +8 -3
  282. package/src/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +229 -252
  283. package/src/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +245 -245
  284. package/src/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +63 -192
  285. package/src/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +109 -125
  286. package/src/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +27 -27
  287. package/src/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +40 -38
  288. package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +122 -385
  289. package/src/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +340 -344
  290. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/auth-status.tsx +37 -52
  291. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +49 -103
  292. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +60 -140
  293. package/src/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +8 -3
  294. package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +229 -252
  295. package/src/templates/web/ui-auth-payments-audio/template/src/lib/actions/auth.ts +3 -3
  296. package/src/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +63 -192
  297. package/src/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +109 -125
  298. package/src/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +38 -36
  299. package/src/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +9 -109
  300. package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +132 -392
  301. package/src/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +346 -350
  302. package/src/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +9 -128
  303. package/src/templates/web/ui-auth-payments-video/template/src/components/client/login-form.tsx +90 -0
  304. package/src/templates/web/ui-auth-payments-video/template/src/components/client/signup-form.tsx +105 -0
  305. package/src/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +8 -3
  306. package/src/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +229 -246
  307. package/src/templates/web/ui-only/template/eslint.config.mjs +14 -0
  308. package/src/templates/web/ui-only/template/src/app/checkout/page.tsx +2 -2
  309. package/src/templates/web/ui-only/template/src/app/login/page.tsx +69 -63
  310. package/src/templates/web/ui-only/template/src/app/page.tsx +69 -91
  311. package/src/templates/web/ui-only/template/src/app/signup/page.tsx +94 -79
  312. package/src/templates/web/ui-only/template/src/components/providers/app-providers.tsx +1 -6
  313. package/src/templates/web/ui-only/template/src/components/shared/header.tsx +90 -53
  314. package/src/templates/web/ui-package-test/template/package.json +19 -23
  315. package/src/templates/web/ui-package-test/template/postcss.config.mjs +8 -0
  316. package/src/templates/web/ui-package-test/template/src/app/globals.css +88 -0
  317. package/src/templates/web/ui-package-test/template/src/app/layout.tsx +27 -0
  318. package/src/templates/web/ui-package-test/template/src/app/page.tsx +46 -106
  319. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/README.md +0 -655
  320. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/(tabs)/ai.tsx +0 -683
  321. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +0 -124
  322. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app.json +0 -74
  323. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/babel.config.js +0 -25
  324. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/docs/MOBILE-SETUP.md +0 -787
  325. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/eas.json +0 -25
  326. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/expo-env.d.ts +0 -3
  327. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -346
  328. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/jest-setup.ts +0 -37
  329. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -180
  330. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/metro.config.js +0 -11
  331. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/package.json +0 -122
  332. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -599
  333. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/tsconfig.json +0 -32
  334. package/dist/templates/web/base/template/.eslintrc.js +0 -8
  335. package/dist/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
  336. package/dist/templates/web/base/template/src/test/setup.ts +0 -74
  337. package/dist/templates/web/base/template/vitest.config.ts +0 -17
  338. package/dist/templates/web/ui-auth/template/.eslintrc.js +0 -8
  339. package/dist/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
  340. package/dist/templates/web/ui-auth/template/src/test/setup.ts +0 -74
  341. package/dist/templates/web/ui-auth/template/vitest.config.ts +0 -17
  342. package/dist/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
  343. package/dist/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -74
  344. package/dist/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
  345. package/dist/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +0 -49
  346. package/dist/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +0 -74
  347. package/dist/templates/web/ui-auth-payments-ai/template/vitest.config.ts +0 -17
  348. package/dist/templates/web/ui-auth-payments-ai-rag/template/README.md +0 -434
  349. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/KnowledgeManager.tsx +0 -642
  350. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGAnalytics.tsx +0 -466
  351. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGChatInterface.tsx +0 -393
  352. package/dist/templates/web/ui-auth-payments-ai-rag/template/docs/GETTING-STARTED.md +0 -457
  353. package/dist/templates/web/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -478
  354. package/dist/templates/web/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -250
  355. package/dist/templates/web/ui-auth-payments-ai-rag/template/package.json +0 -73
  356. package/dist/templates/web/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -622
  357. package/dist/templates/web/ui-auth-payments-ai-rag/template/src/app/ai/page.tsx +0 -396
  358. package/dist/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
  359. package/dist/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -74
  360. package/dist/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
  361. package/dist/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
  362. package/dist/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -74
  363. package/dist/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
  364. package/dist/templates/web/ui-only/template/.eslintrc.js +0 -8
  365. package/dist/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
  366. package/dist/templates/web/ui-only/template/src/test/setup.ts +0 -74
  367. package/dist/templates/web/ui-only/template/vitest.config.ts +0 -17
  368. package/src/templates/mobile/ui-auth-payments-ai-rag/template/README.md +0 -655
  369. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/(tabs)/ai.tsx +0 -683
  370. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +0 -124
  371. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app.json +0 -74
  372. package/src/templates/mobile/ui-auth-payments-ai-rag/template/babel.config.js +0 -25
  373. package/src/templates/mobile/ui-auth-payments-ai-rag/template/docs/MOBILE-SETUP.md +0 -787
  374. package/src/templates/mobile/ui-auth-payments-ai-rag/template/eas.json +0 -25
  375. package/src/templates/mobile/ui-auth-payments-ai-rag/template/expo-env.d.ts +0 -3
  376. package/src/templates/mobile/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -346
  377. package/src/templates/mobile/ui-auth-payments-ai-rag/template/jest-setup.ts +0 -37
  378. package/src/templates/mobile/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -180
  379. package/src/templates/mobile/ui-auth-payments-ai-rag/template/metro.config.js +0 -11
  380. package/src/templates/mobile/ui-auth-payments-ai-rag/template/package.json +0 -122
  381. package/src/templates/mobile/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -599
  382. package/src/templates/mobile/ui-auth-payments-ai-rag/template/tsconfig.json +0 -32
  383. package/src/templates/web/base/template/.eslintrc.js +0 -8
  384. package/src/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
  385. package/src/templates/web/base/template/src/test/setup.ts +0 -74
  386. package/src/templates/web/base/template/vitest.config.ts +0 -17
  387. package/src/templates/web/ui-auth/template/.eslintrc.js +0 -8
  388. package/src/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
  389. package/src/templates/web/ui-auth/template/src/test/setup.ts +0 -74
  390. package/src/templates/web/ui-auth/template/vitest.config.ts +0 -17
  391. package/src/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
  392. package/src/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -74
  393. package/src/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
  394. package/src/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +0 -49
  395. package/src/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +0 -74
  396. package/src/templates/web/ui-auth-payments-ai/template/vitest.config.ts +0 -17
  397. package/src/templates/web/ui-auth-payments-ai-rag/template/README.md +0 -434
  398. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/KnowledgeManager.tsx +0 -642
  399. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGAnalytics.tsx +0 -466
  400. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGChatInterface.tsx +0 -393
  401. package/src/templates/web/ui-auth-payments-ai-rag/template/docs/GETTING-STARTED.md +0 -457
  402. package/src/templates/web/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -478
  403. package/src/templates/web/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -250
  404. package/src/templates/web/ui-auth-payments-ai-rag/template/package.json +0 -73
  405. package/src/templates/web/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -622
  406. package/src/templates/web/ui-auth-payments-ai-rag/template/src/app/ai/page.tsx +0 -396
  407. package/src/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
  408. package/src/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -74
  409. package/src/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
  410. package/src/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
  411. package/src/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -74
  412. package/src/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
  413. package/src/templates/web/ui-only/template/.eslintrc.js +0 -8
  414. package/src/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
  415. package/src/templates/web/ui-only/template/src/test/setup.ts +0 -74
  416. package/src/templates/web/ui-only/template/vitest.config.ts +0 -17
@@ -1,25 +0,0 @@
1
- {
2
- "cli": {
3
- "version": ">= 5.7.0"
4
- },
5
- "build": {
6
- "development": {
7
- "developmentClient": true,
8
- "distribution": "internal"
9
- },
10
- "preview": {
11
- "distribution": "internal",
12
- "ios": {
13
- "resourceClass": "m-medium"
14
- }
15
- },
16
- "production": {
17
- "ios": {
18
- "resourceClass": "m-medium"
19
- }
20
- }
21
- },
22
- "submit": {
23
- "production": {}
24
- }
25
- }
@@ -1,3 +0,0 @@
1
- /// <reference types="expo/types" />
2
-
3
- // NOTE: This file should not be edited and should be in your git ignore
@@ -1,346 +0,0 @@
1
- import { useState, useEffect, useCallback, useRef } from 'react';
2
- import { AppState } from 'react-native';
3
- import AsyncStorage from '@react-native-async-storage/async-storage';
4
- import NetInfo from '@react-native-community/netinfo';
5
- import { RAGSystem } from '@digilogiclabs/saas-factory-ai';
6
- import type {
7
- RAGQuery,
8
- RAGResponse,
9
- RAGDocument,
10
- RAGSearchResult,
11
- RAGDocumentSchema
12
- } from '@digilogiclabs/saas-factory-ai-types';
13
- import { getRAGConfigForDomain, mobileRAGOptions } from '../lib/rag/config';
14
-
15
- interface UseRAGSystemOptions {
16
- domain?: string;
17
- enableOffline?: boolean;
18
- autoSync?: boolean;
19
- cacheResults?: boolean;
20
- }
21
-
22
- interface RAGState {
23
- isInitialized: boolean;
24
- isOnline: boolean;
25
- isLoading: boolean;
26
- lastSyncAt: Date | null;
27
- cachedQueries: number;
28
- error: string | null;
29
- }
30
-
31
- export function useRAGSystem<TSchema extends RAGDocumentSchema>(
32
- options: UseRAGSystemOptions = {}
33
- ) {
34
- const {
35
- domain = 'generic',
36
- enableOffline = true,
37
- autoSync = true,
38
- cacheResults = true
39
- } = options;
40
-
41
- const [ragSystem, setRAGSystem] = useState<RAGSystem<TSchema> | null>(null);
42
- const [state, setState] = useState<RAGState>({
43
- isInitialized: false,
44
- isOnline: true,
45
- isLoading: false,
46
- lastSyncAt: null,
47
- cachedQueries: 0,
48
- error: null
49
- });
50
-
51
- const [recentQueries, setRecentQueries] = useState<RAGQuery[]>([]);
52
- const [cachedResponses, setCachedResponses] = useState<Map<string, RAGResponse>>(new Map());
53
- const offlineQueueRef = useRef<RAGQuery[]>([]);
54
-
55
- // Initialize RAG system
56
- useEffect(() => {
57
- const initRAG = async () => {
58
- try {
59
- setState(prev => ({ ...prev, isLoading: true, error: null }));
60
-
61
- const config = getRAGConfigForDomain(domain);
62
- const system = new RAGSystem<TSchema>(config);
63
-
64
- await system.initialize();
65
- setRAGSystem(system);
66
-
67
- // Load cached data
68
- if (enableOffline) {
69
- await loadCachedData();
70
- }
71
-
72
- setState(prev => ({
73
- ...prev,
74
- isInitialized: true,
75
- isLoading: false,
76
- lastSyncAt: new Date()
77
- }));
78
-
79
- } catch (error) {
80
- console.error('RAG initialization error:', error);
81
- setState(prev => ({
82
- ...prev,
83
- error: error instanceof Error ? error.message : 'Initialization failed',
84
- isLoading: false
85
- }));
86
- }
87
- };
88
-
89
- initRAG();
90
- }, [domain, enableOffline]);
91
-
92
- // Network state monitoring
93
- useEffect(() => {
94
- const unsubscribe = NetInfo.addEventListener(state => {
95
- setState(prev => ({ ...prev, isOnline: state.isConnected ?? false }));
96
-
97
- // Process offline queue when back online
98
- if (state.isConnected && offlineQueueRef.current.length > 0) {
99
- processOfflineQueue();
100
- }
101
- });
102
-
103
- return unsubscribe;
104
- }, []);
105
-
106
- // App state handling for sync
107
- useEffect(() => {
108
- if (!autoSync) return;
109
-
110
- const handleAppStateChange = (nextAppState: string) => {
111
- if (nextAppState === 'active' && ragSystem && state.isOnline) {
112
- syncKnowledgeBase();
113
- }
114
- };
115
-
116
- const subscription = AppState.addEventListener('change', handleAppStateChange);
117
- return () => subscription?.remove();
118
- }, [ragSystem, state.isOnline, autoSync]);
119
-
120
- // Query function with caching and offline support
121
- const query = useCallback(async (queryText: string, options?: {
122
- category?: string;
123
- maxResults?: number;
124
- includeMetadata?: boolean;
125
- }): Promise<RAGResponse> => {
126
- if (!ragSystem) {
127
- throw new Error('RAG system not initialized');
128
- }
129
-
130
- const ragQuery: RAGQuery = {
131
- query: queryText,
132
- category: options?.category,
133
- maxResults: options?.maxResults || 5,
134
- includeMetadata: options?.includeMetadata ?? true,
135
- timestamp: new Date()
136
- };
137
-
138
- // Check cache first
139
- const cacheKey = getCacheKey(ragQuery);
140
- if (cacheResults && cachedResponses.has(cacheKey)) {
141
- const cached = cachedResponses.get(cacheKey)!;
142
- return { ...cached, fromCache: true };
143
- }
144
-
145
- // Handle offline mode
146
- if (!state.isOnline && enableOffline) {
147
- return handleOfflineQuery(ragQuery);
148
- }
149
-
150
- try {
151
- setState(prev => ({ ...prev, isLoading: true }));
152
-
153
- const response = await ragSystem.query(ragQuery);
154
-
155
- // Cache successful responses
156
- if (cacheResults && response.confidence > 0.5) {
157
- const newCache = new Map(cachedResponses);
158
- newCache.set(cacheKey, response);
159
- setCachedResponses(newCache);
160
-
161
- // Persist to local storage
162
- await cacheResponseLocally(cacheKey, response);
163
- }
164
-
165
- // Update recent queries
166
- setRecentQueries(prev => [ragQuery, ...prev.slice(0, 9)]);
167
-
168
- setState(prev => ({ ...prev, isLoading: false }));
169
- return response;
170
-
171
- } catch (error) {
172
- setState(prev => ({ ...prev, isLoading: false }));
173
-
174
- if (enableOffline) {
175
- return handleOfflineQuery(ragQuery);
176
- }
177
-
178
- throw error;
179
- }
180
- }, [ragSystem, state.isOnline, cacheResults, enableOffline, cachedResponses]);
181
-
182
- // Search knowledge base
183
- const searchKnowledge = useCallback(async (
184
- searchText: string,
185
- filters?: { category?: string; limit?: number }
186
- ): Promise<RAGSearchResult[]> => {
187
- if (!ragSystem) return [];
188
-
189
- try {
190
- return await ragSystem.searchDocuments(searchText, filters);
191
- } catch (error) {
192
- console.error('Knowledge search error:', error);
193
- return [];
194
- }
195
- }, [ragSystem]);
196
-
197
- // Add document to knowledge base
198
- const addKnowledge = useCallback(async (
199
- document: Omit<RAGDocument<TSchema>, 'id' | 'createdAt' | 'updatedAt'>
200
- ): Promise<string | null> => {
201
- if (!ragSystem || !state.isOnline) return null;
202
-
203
- try {
204
- return await ragSystem.addDocument(document as RAGDocument<TSchema>);
205
- } catch (error) {
206
- console.error('Add knowledge error:', error);
207
- return null;
208
- }
209
- }, [ragSystem, state.isOnline]);
210
-
211
- // Update document
212
- const updateKnowledge = useCallback(async (
213
- id: string,
214
- updates: Partial<RAGDocument<TSchema>>
215
- ): Promise<boolean> => {
216
- if (!ragSystem || !state.isOnline) return false;
217
-
218
- try {
219
- await ragSystem.updateDocument(id, updates);
220
- return true;
221
- } catch (error) {
222
- console.error('Update knowledge error:', error);
223
- return false;
224
- }
225
- }, [ragSystem, state.isOnline]);
226
-
227
- // Sync knowledge base
228
- const syncKnowledgeBase = useCallback(async (): Promise<void> => {
229
- if (!ragSystem || !state.isOnline) return;
230
-
231
- try {
232
- setState(prev => ({ ...prev, isLoading: true }));
233
-
234
- // Implement incremental sync based on lastSyncAt
235
- await ragSystem.sync(state.lastSyncAt);
236
-
237
- setState(prev => ({
238
- ...prev,
239
- lastSyncAt: new Date(),
240
- isLoading: false
241
- }));
242
- } catch (error) {
243
- console.error('Sync error:', error);
244
- setState(prev => ({ ...prev, isLoading: false }));
245
- }
246
- }, [ragSystem, state.isOnline, state.lastSyncAt]);
247
-
248
- // Clear cache
249
- const clearCache = useCallback(async () => {
250
- setCachedResponses(new Map());
251
- setRecentQueries([]);
252
- await AsyncStorage.multiRemove(['rag_cache', 'rag_recent_queries']);
253
- setState(prev => ({ ...prev, cachedQueries: 0 }));
254
- }, []);
255
-
256
- // Helper functions
257
- const getCacheKey = (query: RAGQuery): string => {
258
- return `${query.query}:${query.category || 'all'}:${query.maxResults}`;
259
- };
260
-
261
- const handleOfflineQuery = async (query: RAGQuery): Promise<RAGResponse> => {
262
- // Add to offline queue
263
- offlineQueueRef.current.push(query);
264
-
265
- // Return fallback response
266
- return {
267
- query: query.query,
268
- response: "I'm currently offline. Your query has been saved and I'll respond when connection is restored.",
269
- sources: [],
270
- confidence: 0,
271
- metadata: { offline: true },
272
- timestamp: new Date()
273
- };
274
- };
275
-
276
- const processOfflineQueue = async () => {
277
- if (!ragSystem || offlineQueueRef.current.length === 0) return;
278
-
279
- const queue = [...offlineQueueRef.current];
280
- offlineQueueRef.current = [];
281
-
282
- for (const query of queue) {
283
- try {
284
- await ragSystem.query(query);
285
- } catch (error) {
286
- console.error('Offline queue processing error:', error);
287
- // Re-add failed queries to queue
288
- offlineQueueRef.current.push(query);
289
- }
290
- }
291
- };
292
-
293
- const loadCachedData = async () => {
294
- try {
295
- const [cacheData, recentData] = await AsyncStorage.multiGet([
296
- 'rag_cache',
297
- 'rag_recent_queries'
298
- ]);
299
-
300
- if (cacheData[1]) {
301
- const cache = JSON.parse(cacheData[1]);
302
- setCachedResponses(new Map(cache));
303
- setState(prev => ({ ...prev, cachedQueries: cache.length }));
304
- }
305
-
306
- if (recentData[1]) {
307
- const recent = JSON.parse(recentData[1]);
308
- setRecentQueries(recent);
309
- }
310
- } catch (error) {
311
- console.error('Cache loading error:', error);
312
- }
313
- };
314
-
315
- const cacheResponseLocally = async (key: string, response: RAGResponse) => {
316
- try {
317
- const current = await AsyncStorage.getItem('rag_cache');
318
- const cache = current ? JSON.parse(current) : {};
319
- cache[key] = response;
320
-
321
- await AsyncStorage.setItem('rag_cache', JSON.stringify(cache));
322
- } catch (error) {
323
- console.error('Cache storage error:', error);
324
- }
325
- };
326
-
327
- return {
328
- // State
329
- ...state,
330
- ragSystem,
331
- recentQueries,
332
- offlineQueueSize: offlineQueueRef.current.length,
333
-
334
- // Actions
335
- query,
336
- searchKnowledge,
337
- addKnowledge,
338
- updateKnowledge,
339
- syncKnowledgeBase,
340
- clearCache,
341
-
342
- // Utilities
343
- isReady: state.isInitialized && !state.isLoading,
344
- canQuery: state.isInitialized && (state.isOnline || enableOffline),
345
- };
346
- }
@@ -1,37 +0,0 @@
1
- import '@testing-library/jest-native/extend-expect';
2
-
3
- // Mock react-native-reanimated
4
- jest.mock('react-native-reanimated', () => {
5
- const Reanimated = require('react-native-reanimated/mock');
6
- Reanimated.default.call = () => {};
7
- return Reanimated;
8
- });
9
-
10
- // Mock expo modules
11
- jest.mock('expo-constants', () => ({
12
- default: {
13
- expoConfig: {
14
- extra: {}
15
- }
16
- }
17
- }));
18
-
19
- jest.mock('expo-status-bar', () => ({
20
- StatusBar: 'StatusBar'
21
- }));
22
-
23
- jest.mock('expo-router', () => ({
24
- router: {
25
- push: jest.fn(),
26
- replace: jest.fn(),
27
- back: jest.fn(),
28
- },
29
- Link: 'Link',
30
- useRouter: () => ({
31
- push: jest.fn(),
32
- replace: jest.fn(),
33
- back: jest.fn(),
34
- }),
35
- usePathname: () => '/',
36
- useLocalSearchParams: () => ({}),
37
- }));
@@ -1,180 +0,0 @@
1
- import {
2
- createGenericRAGConfig,
3
- createPlantCareRAGConfig,
4
- createEcommerceRAGConfig,
5
- createEducationRAGConfig
6
- } from '@digilogiclabs/saas-factory-ai';
7
- import type {
8
- RAGConfig,
9
- GenericRAGDocumentSchema,
10
- PlantKnowledgeSchema,
11
- EcommerceKnowledgeSchema,
12
- EducationKnowledgeSchema
13
- } from '@digilogiclabs/saas-factory-ai-types';
14
- import Constants from 'expo-constants';
15
-
16
- // Environment configuration
17
- const supabaseConfig = {
18
- url: Constants.expoConfig?.extra?.supabaseUrl || process.env.EXPO_PUBLIC_SUPABASE_URL,
19
- anonKey: Constants.expoConfig?.extra?.supabaseAnonKey || process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY,
20
- serviceRoleKey: process.env.SUPABASE_SERVICE_ROLE_KEY, // Server-only for embeddings
21
- };
22
-
23
- const openAIKey = Constants.expoConfig?.extra?.openaiApiKey || process.env.EXPO_PUBLIC_OPENAI_API_KEY;
24
-
25
- // RAG Configuration Templates
26
- export const createRAGConfigs = () => {
27
- const baseNamespace = '{{packageName}}';
28
-
29
- return {
30
- // Generic AI Assistant
31
- generic: createGenericRAGConfig<GenericRAGDocumentSchema>(
32
- baseNamespace,
33
- supabaseConfig,
34
- openAIKey,
35
- {
36
- retrieval: {
37
- topK: 5,
38
- confidenceThreshold: 0.75,
39
- hybridSearchWeight: { vector: 0.7, text: 0.3 }
40
- },
41
- generation: {
42
- systemPrompt: `You are an intelligent AI assistant for the ${baseNamespace} app.
43
- Use the provided knowledge base to give accurate, helpful responses.
44
- If information isn't in the knowledge base, say so clearly and provide general guidance.
45
- Keep responses concise and actionable for mobile users.`,
46
- temperature: 0.3,
47
- maxTokens: 500,
48
- },
49
- mobile: {
50
- caching: true,
51
- offlineMode: true,
52
- syncStrategy: 'incremental'
53
- }
54
- }
55
- ),
56
-
57
- // Plant Care Assistant
58
- plantCare: createPlantCareRAGConfig(
59
- `${baseNamespace}-plants`,
60
- supabaseConfig,
61
- openAIKey,
62
- {
63
- retrieval: {
64
- topK: 4,
65
- confidenceThreshold: 0.8,
66
- hybridSearchWeight: { vector: 0.8, text: 0.2 }
67
- },
68
- generation: {
69
- systemPrompt: `You are a botanical expert assistant helping users care for their plants.
70
- Use the plant knowledge base to provide specific care instructions, diagnose issues, and suggest solutions.
71
- Always consider the user's location, season, and plant type when giving advice.
72
- Focus on practical, actionable guidance.`,
73
- temperature: 0.2,
74
- maxTokens: 400,
75
- }
76
- }
77
- ),
78
-
79
- // E-commerce Assistant
80
- ecommerce: createEcommerceRAGConfig(
81
- `${baseNamespace}-store`,
82
- supabaseConfig,
83
- openAIKey,
84
- {
85
- retrieval: {
86
- topK: 6,
87
- confidenceThreshold: 0.7,
88
- hybridSearchWeight: { vector: 0.6, text: 0.4 }
89
- },
90
- generation: {
91
- systemPrompt: `You are a helpful shopping assistant for the ${baseNamespace} store.
92
- Help users find products, answer questions about specifications, pricing, and availability.
93
- Provide personalized recommendations based on their needs and preferences.
94
- Always mention stock status and current promotions if available.`,
95
- temperature: 0.4,
96
- maxTokens: 350,
97
- }
98
- }
99
- ),
100
-
101
- // Education Assistant
102
- education: createEducationRAGConfig(
103
- `${baseNamespace}-learning`,
104
- supabaseConfig,
105
- openAIKey,
106
- {
107
- retrieval: {
108
- topK: 5,
109
- confidenceThreshold: 0.8,
110
- hybridSearchWeight: { vector: 0.75, text: 0.25 }
111
- },
112
- generation: {
113
- systemPrompt: `You are an educational tutor assistant for the ${baseNamespace} learning platform.
114
- Help students understand concepts, answer questions, and provide study guidance.
115
- Adapt your explanations to the appropriate grade level and learning style.
116
- Encourage critical thinking and provide examples when helpful.`,
117
- temperature: 0.3,
118
- maxTokens: 600,
119
- }
120
- }
121
- )
122
- };
123
- };
124
-
125
- // Default configuration selector
126
- export const getRAGConfigForDomain = (domain: string): RAGConfig<any> => {
127
- const configs = createRAGConfigs();
128
-
129
- switch (domain.toLowerCase()) {
130
- case 'plants':
131
- case 'plant-care':
132
- case 'gardening':
133
- return configs.plantCare;
134
-
135
- case 'store':
136
- case 'shop':
137
- case 'ecommerce':
138
- case 'products':
139
- return configs.ecommerce;
140
-
141
- case 'education':
142
- case 'learning':
143
- case 'courses':
144
- case 'study':
145
- return configs.education;
146
-
147
- default:
148
- return configs.generic;
149
- }
150
- };
151
-
152
- // Mobile-specific optimizations
153
- export const mobileRAGOptions = {
154
- // Cache frequently accessed documents locally
155
- enableLocalCache: true,
156
- maxCacheSize: 100, // Max cached documents
157
-
158
- // Offline mode settings
159
- offlineMode: {
160
- enabled: true,
161
- fallbackResponses: true,
162
- queueQueries: true,
163
- },
164
-
165
- // Performance settings
166
- performance: {
167
- debounceMs: 300, // Debounce search queries
168
- maxConcurrentRequests: 2,
169
- timeout: 10000, // 10 second timeout
170
- },
171
-
172
- // Mobile UX settings
173
- ui: {
174
- showTypingIndicator: true,
175
- showConfidenceScores: false, // Hide on mobile for simplicity
176
- showSources: true,
177
- maxDisplaySources: 3,
178
- compactMode: true,
179
- }
180
- };
@@ -1,11 +0,0 @@
1
- const { getDefaultConfig } = require('expo/metro-config');
2
- const { withNativeWind } = require('nativewind/metro');
3
-
4
- const config = getDefaultConfig(__dirname);
5
-
6
- // Configure SVG support
7
- config.transformer.babelTransformerPath = require.resolve('react-native-svg-transformer');
8
- config.resolver.assetExts = config.resolver.assetExts.filter((ext) => ext !== 'svg');
9
- config.resolver.sourceExts = [...config.resolver.sourceExts, 'svg'];
10
-
11
- module.exports = withNativeWind(config, { input: './global.css' });