@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,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' });