vibefast-cli 0.6.2 → 0.7.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 (857) hide show
  1. package/dist/__tests__/recipes.test.js +5 -5
  2. package/dist/__tests__/recipes.test.js.map +1 -1
  3. package/dist/commands/add.d.ts.map +1 -1
  4. package/dist/commands/add.js +136 -48
  5. package/dist/commands/add.js.map +1 -1
  6. package/dist/commands/init.d.ts.map +1 -1
  7. package/dist/commands/init.js +106 -89
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/remove.js +1 -1
  10. package/dist/commands/remove.js.map +1 -1
  11. package/dist/core/__tests__/fsx.test.js +3 -1
  12. package/dist/core/__tests__/fsx.test.js.map +1 -1
  13. package/dist/core/__tests__/prompt.test.js +12 -12
  14. package/dist/core/__tests__/prompt.test.js.map +1 -1
  15. package/dist/core/__tests__/validate.test.js +4 -3
  16. package/dist/core/__tests__/validate.test.js.map +1 -1
  17. package/dist/core/auth.d.ts.map +1 -1
  18. package/dist/core/auth.js +8 -0
  19. package/dist/core/auth.js.map +1 -1
  20. package/dist/core/codemod.d.ts +13 -0
  21. package/dist/core/codemod.d.ts.map +1 -1
  22. package/dist/core/codemod.js +50 -0
  23. package/dist/core/codemod.js.map +1 -1
  24. package/dist/core/errors.js +1 -1
  25. package/dist/core/fsx.js +1 -1
  26. package/dist/core/fsx.js.map +1 -1
  27. package/dist/core/recipes.d.ts.map +1 -1
  28. package/dist/core/recipes.js +71 -9
  29. package/dist/core/recipes.js.map +1 -1
  30. package/package.json +1 -1
  31. package/recipes/animated-chip/recipe.json +15 -0
  32. package/recipes/animated-chip@latest.zip +0 -0
  33. package/recipes/animated-switch/recipe.json +15 -0
  34. package/recipes/animated-switch@latest.zip +0 -0
  35. package/recipes/audio-recorder@latest.zip +0 -0
  36. package/recipes/charts/apps/native/src/features/charts/components/doughnut-chart.tsx +29 -18
  37. package/recipes/charts@latest.zip +0 -0
  38. package/recipes/chatbot/apps/native/src/features/chatbot/components/message-list.tsx +1 -1
  39. package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-smart-scroll-manager.ts +6 -0
  40. package/recipes/chatbot/recipe.json +21 -5
  41. package/recipes/chatbot@latest.zip +0 -0
  42. package/recipes/glowing-button/recipe.json +1 -3
  43. package/recipes/glowing-button@latest.zip +0 -0
  44. package/recipes/image-analysis/recipe.json +36 -19
  45. package/recipes/image-analysis@latest.zip +0 -0
  46. package/recipes/image-generator/apps/native/src/features/image-generator/app/_layout.tsx +1 -0
  47. package/recipes/image-generator/apps/native/src/features/image-generator/app/gallery.tsx +1 -1
  48. package/recipes/image-generator/apps/native/src/features/image-generator/components/gallery-image.tsx +2 -3
  49. package/recipes/image-generator/recipe.json +5 -3
  50. package/recipes/image-generator@latest.zip +0 -0
  51. package/recipes/ios-widget/recipe.json +24 -0
  52. package/recipes/ios-widget@latest.zip +0 -0
  53. package/recipes/number-stepper/recipe.json +15 -0
  54. package/recipes/number-stepper@latest.zip +0 -0
  55. package/recipes/payments/recipe.json +30 -0
  56. package/recipes/payments@latest.zip +0 -0
  57. package/recipes/posthog.json +2 -1
  58. package/recipes/progress-circle/recipe.json +15 -0
  59. package/recipes/progress-circle@latest.zip +0 -0
  60. package/recipes/quiz@latest.zip +0 -0
  61. package/recipes/sentry.json +2 -1
  62. package/recipes/swipe-slider/recipe.json +15 -0
  63. package/recipes/swipe-slider@latest.zip +0 -0
  64. package/recipes/{0 → timeline}/recipe.json +3 -6
  65. package/recipes/timeline@latest.zip +0 -0
  66. package/recipes/tracker-app@latest.zip +0 -0
  67. package/recipes/upload-all.sh +13 -2
  68. package/recipes/voice-bot/recipe.json +15 -2
  69. package/recipes/voice-bot@latest.zip +0 -0
  70. package/recipes/wake-word/apps/native/src/app/(root)/(protected)/test-wake-word.tsx +0 -2
  71. package/recipes/wake-word/recipe.json +2 -2
  72. package/recipes/wake-word@latest.zip +0 -0
  73. package/src/__tests__/recipes.test.ts +5 -5
  74. package/src/commands/add.ts +230 -54
  75. package/src/commands/init.ts +118 -102
  76. package/src/commands/remove.ts +1 -1
  77. package/src/core/__tests__/fsx.test.ts +3 -1
  78. package/src/core/__tests__/prompt.test.ts +12 -12
  79. package/src/core/__tests__/validate.test.ts +4 -3
  80. package/src/core/auth.ts +8 -0
  81. package/src/core/codemod.ts +66 -0
  82. package/src/core/errors.ts +1 -1
  83. package/src/core/fsx.ts +1 -1
  84. package/src/core/recipes.ts +73 -9
  85. package/2/.claude/agents/architect.md +0 -74
  86. package/2/.claude/agents/convex-reviewer.md +0 -267
  87. package/2/.claude/agents/debug-detective.md +0 -62
  88. package/2/.claude/agents/learner.md +0 -64
  89. package/2/.claude/agents/perf-optimizer.md +0 -71
  90. package/2/.claude/agents/security-researcher.md +0 -42
  91. package/2/.claude/agents/tech-researcher.md +0 -46
  92. package/2/.claude/agents/ux-designer.md +0 -45
  93. package/2/.claude/commands/create-app-design.md +0 -279
  94. package/2/.claude/commands/create-prd-interactive.md +0 -113
  95. package/2/.claude/commands/create-prd.md +0 -111
  96. package/2/.claude/commands/create-tech-stack.md +0 -345
  97. package/2/.claude/commands/update-app-design.md +0 -298
  98. package/2/.claude/commands/update-project-structure.md +0 -14
  99. package/2/.claude/commands/update-tech-stack.md +0 -325
  100. package/2/.claude/docs/CONVEX_FEATURES_PLAN.md +0 -249
  101. package/2/.claude/docs/app-design-document.md +0 -0
  102. package/2/.claude/docs/project-status.md +0 -25
  103. package/2/.claude/docs/project-structure.md +0 -7
  104. package/2/.claude/docs/tech-stack.md +0 -157
  105. package/2/.claude/scripts/tree.sh +0 -70
  106. package/2/.claude/settings.json +0 -30
  107. package/2/.cursor/commands/code-review-high.md +0 -190
  108. package/2/.cursorignore +0 -3
  109. package/2/.github/ISSUE_TEMPLATE.md +0 -13
  110. package/2/.github/PULL_REQUEST_TEMPLATE.md +0 -23
  111. package/2/.github/actions/eas-build/action.yml +0 -85
  112. package/2/.github/actions/setup-jdk-generate-apk/action.yml +0 -48
  113. package/2/.github/actions/setup-node-pnpm-install/action.yml +0 -29
  114. package/2/.github/scripts/expo-doctor.sh +0 -26
  115. package/2/.github/workflows/compress-images.yml +0 -48
  116. package/2/.github/workflows/e2e-android-eas-build.yml +0 -111
  117. package/2/.github/workflows/e2e-android-maestro.yml +0 -52
  118. package/2/.github/workflows/e2e-android.yml +0 -119
  119. package/2/.github/workflows/eas-build-prod.yml +0 -43
  120. package/2/.github/workflows/eas-build-qa.yml +0 -47
  121. package/2/.github/workflows/expo-doctor.yml +0 -61
  122. package/2/.github/workflows/lint-ts.yml +0 -49
  123. package/2/.github/workflows/new-app-version.yml +0 -65
  124. package/2/.github/workflows/new-github-release.yml +0 -34
  125. package/2/.github/workflows/stale.yml +0 -24
  126. package/2/.github/workflows/test.yml +0 -50
  127. package/2/.github/workflows/type-check.yml +0 -54
  128. package/2/.husky/commit-msg +0 -1
  129. package/2/.husky/common.sh +0 -8
  130. package/2/.husky/post-merge +0 -18
  131. package/2/.husky/pre-commit +0 -24
  132. package/2/.prettierignore +0 -14
  133. package/2/.prettierrc.json +0 -10
  134. package/2/.vibefast/README.md +0 -59
  135. package/2/.vibefast/config.json +0 -4
  136. package/2/.vibefast/journal.json +0 -234
  137. package/2/.vibefast/starter.json +0 -5
  138. package/2/AGENTS.md +0 -48
  139. package/2/LICENSE +0 -21
  140. package/2/README.md +0 -127
  141. package/2/apps/native/__mocks__/bottom-sheet.js +0 -6
  142. package/2/apps/native/__mocks__/expo-router.js +0 -16
  143. package/2/apps/native/__mocks__/react-native-gesture-handler.ts +0 -17
  144. package/2/apps/native/app-env.d.ts +0 -2
  145. package/2/apps/native/app.config.ts +0 -167
  146. package/2/apps/native/assets/adaptive-icon.png +0 -0
  147. package/2/apps/native/assets/favicon.png +0 -0
  148. package/2/apps/native/assets/fonts/Inter.ttf +0 -0
  149. package/2/apps/native/assets/fonts/SF-Pro-Display-Bold.otf +0 -0
  150. package/2/apps/native/assets/fonts/SF-Pro-Display-Medium.otf +0 -0
  151. package/2/apps/native/assets/fonts/SF-Pro-Display-Regular.otf +0 -0
  152. package/2/apps/native/assets/fonts/SF-Pro-Display-Semibold.otf +0 -0
  153. package/2/apps/native/assets/fonts/SpaceMono-Regular.ttf +0 -0
  154. package/2/apps/native/assets/icon.png +0 -0
  155. package/2/apps/native/assets/images/cover-image.png +0 -0
  156. package/2/apps/native/assets/lottie-animations/onboarding-1.json +0 -6504
  157. package/2/apps/native/assets/lottie-animations/onboarding-2.json +0 -1993
  158. package/2/apps/native/assets/lottie-animations/onboarding-3.json +0 -50159
  159. package/2/apps/native/assets/lottie-animations/onboarding-4.json +0 -735
  160. package/2/apps/native/assets/lottie-animations/onboarding-6.json +0 -2167
  161. package/2/apps/native/assets/splash-icon.png +0 -0
  162. package/2/apps/native/babel.config.js +0 -39
  163. package/2/apps/native/eas.json +0 -75
  164. package/2/apps/native/env.js +0 -196
  165. package/2/apps/native/global.css +0 -51
  166. package/2/apps/native/index.ts +0 -5
  167. package/2/apps/native/jest-setup.ts +0 -7
  168. package/2/apps/native/jest.config.js +0 -72
  169. package/2/apps/native/metro.config.js +0 -85
  170. package/2/apps/native/nativewind-env.d.ts +0 -1
  171. package/2/apps/native/package.json +0 -232
  172. package/2/apps/native/scripts/DRY_RUN_REPORT.md +0 -0
  173. package/2/apps/native/scripts/QUICK_START.md +0 -76
  174. package/2/apps/native/scripts/README.md +0 -187
  175. package/2/apps/native/scripts/convex-setup.js +0 -48
  176. package/2/apps/native/scripts/genrate-apk-and-install +0 -39
  177. package/2/apps/native/scripts/i18next-syntax-validation.js +0 -23
  178. package/2/apps/native/scripts/starter-setup.mjs +0 -246
  179. package/2/apps/native/src/api-client/auth.ts +0 -68
  180. package/2/apps/native/src/api-client/chatbot.ts +0 -83
  181. package/2/apps/native/src/api-client/client.ts +0 -4
  182. package/2/apps/native/src/api-client/image-generator.ts +0 -34
  183. package/2/apps/native/src/api-client/index.ts +0 -27
  184. package/2/apps/native/src/api-client/payments.ts +0 -44
  185. package/2/apps/native/src/api-client/reporting.ts +0 -29
  186. package/2/apps/native/src/api-client/shared.ts +0 -43
  187. package/2/apps/native/src/app/(root)/(protected)/(tabs)/_layout.tsx +0 -166
  188. package/2/apps/native/src/app/(root)/(protected)/(tabs)/index.tsx +0 -174
  189. package/2/apps/native/src/app/(root)/(protected)/(tabs)/profile.tsx +0 -320
  190. package/2/apps/native/src/app/(root)/(protected)/(tabs)/settings.tsx +0 -344
  191. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/_layout.tsx +0 -198
  192. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/accordion.tsx +0 -60
  193. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/advanced.tsx +0 -24
  194. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/avatar.tsx +0 -154
  195. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/badge-chips-toggle.tsx +0 -81
  196. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/buttons.tsx +0 -24
  197. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/charts.tsx +0 -3
  198. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/date-picker.tsx +0 -120
  199. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/file-picker.tsx +0 -133
  200. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/gallery-video.tsx +0 -119
  201. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/index.tsx +0 -69
  202. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/inputs-stepper.tsx +0 -78
  203. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/picker-dropdown.tsx +0 -56
  204. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/popover-bottomsheet.tsx +0 -229
  205. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/progress.tsx +0 -38
  206. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/searchbar.tsx +0 -70
  207. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/sliders.tsx +0 -93
  208. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/spinner.tsx +0 -80
  209. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/switch.tsx +0 -47
  210. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/table.tsx +0 -352
  211. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/tabs-timeline.tsx +0 -122
  212. package/2/apps/native/src/app/(root)/(protected)/_layout.tsx +0 -143
  213. package/2/apps/native/src/app/(root)/(protected)/audio-recorder/index.tsx +0 -5
  214. package/2/apps/native/src/app/(root)/(protected)/charts/index.tsx +0 -6
  215. package/2/apps/native/src/app/(root)/(protected)/chatbot/index.tsx +0 -2
  216. package/2/apps/native/src/app/(root)/(protected)/image-generator/gallery.tsx +0 -3
  217. package/2/apps/native/src/app/(root)/(protected)/image-generator/index.tsx +0 -3
  218. package/2/apps/native/src/app/(root)/(protected)/paywall/index.tsx +0 -74
  219. package/2/apps/native/src/app/(root)/(protected)/paywall/local.tsx +0 -25
  220. package/2/apps/native/src/app/(root)/(protected)/paywall/remote.tsx +0 -23
  221. package/2/apps/native/src/app/(root)/(protected)/quick-actions-demo/index.tsx +0 -32
  222. package/2/apps/native/src/app/(root)/(protected)/quiz/index.tsx +0 -47
  223. package/2/apps/native/src/app/(root)/(protected)/test-wake-word.tsx +0 -214
  224. package/2/apps/native/src/app/(root)/(protected)/tracker-app/index.tsx +0 -1
  225. package/2/apps/native/src/app/(root)/(protected)/voice-bot/index.tsx +0 -27
  226. package/2/apps/native/src/app/(root)/(public)/(auth)/_layout.tsx +0 -44
  227. package/2/apps/native/src/app/(root)/(public)/(auth)/forgot-password.tsx +0 -185
  228. package/2/apps/native/src/app/(root)/(public)/(auth)/login.tsx +0 -219
  229. package/2/apps/native/src/app/(root)/(public)/(auth)/otp-verification.tsx +0 -369
  230. package/2/apps/native/src/app/(root)/(public)/(auth)/reset-password.tsx +0 -247
  231. package/2/apps/native/src/app/(root)/(public)/(auth)/signup.tsx +0 -207
  232. package/2/apps/native/src/app/(root)/(public)/_layout.tsx +0 -60
  233. package/2/apps/native/src/app/(root)/(public)/onboarding/demo-one.tsx +0 -5
  234. package/2/apps/native/src/app/(root)/(public)/onboarding/demo-two.tsx +0 -52
  235. package/2/apps/native/src/app/(root)/(public)/onboarding/index.tsx +0 -82
  236. package/2/apps/native/src/app/(root)/_layout.tsx +0 -30
  237. package/2/apps/native/src/app/+html.tsx +0 -46
  238. package/2/apps/native/src/app/[...messing].tsx +0 -24
  239. package/2/apps/native/src/app/_layout.tsx +0 -56
  240. package/2/apps/native/src/app/tsconfig.json +0 -3
  241. package/2/apps/native/src/components/advanced-ui/buttons/glowing-button.tsx +0 -366
  242. package/2/apps/native/src/components/analytics/navigation-tracker.tsx +0 -10
  243. package/2/apps/native/src/components/demo/advanced-ui-components.tsx +0 -46
  244. package/2/apps/native/src/components/demo/buttons-demo.tsx +0 -56
  245. package/2/apps/native/src/components/demo/colors-demo.tsx +0 -52
  246. package/2/apps/native/src/components/demo/dropdown-picker-demo.tsx +0 -274
  247. package/2/apps/native/src/components/demo/inputs-demo.tsx +0 -99
  248. package/2/apps/native/src/components/demo/notification-demo.tsx +0 -434
  249. package/2/apps/native/src/components/demo/title-demo.tsx +0 -16
  250. package/2/apps/native/src/components/demo/toast-demo.tsx +0 -81
  251. package/2/apps/native/src/components/demo/typography-demo.tsx +0 -28
  252. package/2/apps/native/src/components/performance/render-performance-monitor.tsx +0 -36
  253. package/2/apps/native/src/components/ui/accordion.tsx +0 -138
  254. package/2/apps/native/src/components/ui/avatar.tsx +0 -66
  255. package/2/apps/native/src/components/ui/badge.tsx +0 -68
  256. package/2/apps/native/src/components/ui/bottom-sheet.tsx +0 -61
  257. package/2/apps/native/src/components/ui/colors.js +0 -290
  258. package/2/apps/native/src/components/ui/core/button.tsx +0 -317
  259. package/2/apps/native/src/components/ui/core/card.tsx +0 -40
  260. package/2/apps/native/src/components/ui/core/checkbox.tsx +0 -264
  261. package/2/apps/native/src/components/ui/core/feature-button.tsx +0 -162
  262. package/2/apps/native/src/components/ui/core/focus-aware-status-bar.tsx +0 -21
  263. package/2/apps/native/src/components/ui/core/image.tsx +0 -30
  264. package/2/apps/native/src/components/ui/core/inputs/floating-text-input.tsx +0 -369
  265. package/2/apps/native/src/components/ui/core/inputs/input-otp.tsx +0 -304
  266. package/2/apps/native/src/components/ui/core/inputs/input.tsx +0 -373
  267. package/2/apps/native/src/components/ui/core/list.tsx +0 -60
  268. package/2/apps/native/src/components/ui/core/navigation/animated-header.tsx +0 -87
  269. package/2/apps/native/src/components/ui/core/navigation/screen-footer.tsx +0 -67
  270. package/2/apps/native/src/components/ui/core/overlays/dropdown.tsx +0 -290
  271. package/2/apps/native/src/components/ui/core/overlays/full-screen-loading.tsx +0 -15
  272. package/2/apps/native/src/components/ui/core/overlays/modal-keyboard-aware-scroll-view.tsx +0 -46
  273. package/2/apps/native/src/components/ui/core/overlays/modal.tsx +0 -247
  274. package/2/apps/native/src/components/ui/core/pagination-dots.tsx +0 -231
  275. package/2/apps/native/src/components/ui/core/pressable.tsx +0 -48
  276. package/2/apps/native/src/components/ui/core/progress-bar.tsx +0 -47
  277. package/2/apps/native/src/components/ui/core/progress.tsx +0 -149
  278. package/2/apps/native/src/components/ui/core/select.tsx +0 -261
  279. package/2/apps/native/src/components/ui/core/spinner.tsx +0 -387
  280. package/2/apps/native/src/components/ui/core/text.tsx +0 -45
  281. package/2/apps/native/src/components/ui/core/toast.tsx +0 -190
  282. package/2/apps/native/src/components/ui/custom-switch.tsx +0 -90
  283. package/2/apps/native/src/components/ui/date-time-picker.tsx +0 -268
  284. package/2/apps/native/src/components/ui/debug.ts +0 -2
  285. package/2/apps/native/src/components/ui/extras/debug-credit-tester.tsx +0 -107
  286. package/2/apps/native/src/components/ui/extras/debug-mmkv-state.tsx +0 -53
  287. package/2/apps/native/src/components/ui/extras/handle-error.ts +0 -191
  288. package/2/apps/native/src/components/ui/extras/hello-wave.tsx +0 -70
  289. package/2/apps/native/src/components/ui/extras/icon.tsx +0 -36
  290. package/2/apps/native/src/components/ui/extras/network-connectivity-wrapper.tsx +0 -36
  291. package/2/apps/native/src/components/ui/extras/offline-indicator.tsx +0 -55
  292. package/2/apps/native/src/components/ui/extras/social-login-buttons.tsx +0 -296
  293. package/2/apps/native/src/components/ui/file-picker.tsx +0 -177
  294. package/2/apps/native/src/components/ui/gallery.tsx +0 -79
  295. package/2/apps/native/src/components/ui/icons/apple.tsx +0 -19
  296. package/2/apps/native/src/components/ui/icons/arrow-right.tsx +0 -26
  297. package/2/apps/native/src/components/ui/icons/camera.tsx +0 -26
  298. package/2/apps/native/src/components/ui/icons/caret-down.tsx +0 -20
  299. package/2/apps/native/src/components/ui/icons/chevron-up.tsx +0 -21
  300. package/2/apps/native/src/components/ui/icons/claude.tsx +0 -15
  301. package/2/apps/native/src/components/ui/icons/copy.tsx +0 -27
  302. package/2/apps/native/src/components/ui/icons/deepseek.tsx +0 -15
  303. package/2/apps/native/src/components/ui/icons/download.tsx +0 -32
  304. package/2/apps/native/src/components/ui/icons/feed.tsx +0 -12
  305. package/2/apps/native/src/components/ui/icons/gemini.tsx +0 -15
  306. package/2/apps/native/src/components/ui/icons/github.tsx +0 -30
  307. package/2/apps/native/src/components/ui/icons/google.tsx +0 -24
  308. package/2/apps/native/src/components/ui/icons/groq.tsx +0 -15
  309. package/2/apps/native/src/components/ui/icons/home.tsx +0 -19
  310. package/2/apps/native/src/components/ui/icons/index.tsx +0 -26
  311. package/2/apps/native/src/components/ui/icons/language.tsx +0 -33
  312. package/2/apps/native/src/components/ui/icons/llama.tsx +0 -15
  313. package/2/apps/native/src/components/ui/icons/microphone.tsx +0 -20
  314. package/2/apps/native/src/components/ui/icons/mistral.tsx +0 -22
  315. package/2/apps/native/src/components/ui/icons/nutrition.tsx +0 -15
  316. package/2/apps/native/src/components/ui/icons/openai.tsx +0 -15
  317. package/2/apps/native/src/components/ui/icons/perplexity.tsx +0 -22
  318. package/2/apps/native/src/components/ui/icons/qwen.tsx +0 -15
  319. package/2/apps/native/src/components/ui/icons/rate.tsx +0 -24
  320. package/2/apps/native/src/components/ui/icons/report.tsx +0 -20
  321. package/2/apps/native/src/components/ui/icons/send-horizontal.tsx +0 -26
  322. package/2/apps/native/src/components/ui/icons/settings.tsx +0 -12
  323. package/2/apps/native/src/components/ui/icons/share.tsx +0 -16
  324. package/2/apps/native/src/components/ui/icons/square.tsx +0 -9
  325. package/2/apps/native/src/components/ui/icons/style.tsx +0 -22
  326. package/2/apps/native/src/components/ui/icons/support.tsx +0 -27
  327. package/2/apps/native/src/components/ui/icons/trash2.tsx +0 -42
  328. package/2/apps/native/src/components/ui/icons/user.tsx +0 -12
  329. package/2/apps/native/src/components/ui/icons/website.tsx +0 -28
  330. package/2/apps/native/src/components/ui/icons/wifi-off.tsx +0 -17
  331. package/2/apps/native/src/components/ui/index.tsx +0 -14
  332. package/2/apps/native/src/components/ui/nav-item.tsx +0 -42
  333. package/2/apps/native/src/components/ui/patterns/index.ts +0 -16
  334. package/2/apps/native/src/components/ui/picker.tsx +0 -244
  335. package/2/apps/native/src/components/ui/popover.tsx +0 -313
  336. package/2/apps/native/src/components/ui/primitives/index.ts +0 -38
  337. package/2/apps/native/src/components/ui/radio-group.tsx +0 -47
  338. package/2/apps/native/src/components/ui/searchbar.tsx +0 -118
  339. package/2/apps/native/src/components/ui/sheet.tsx +0 -93
  340. package/2/apps/native/src/components/ui/switch.tsx +0 -37
  341. package/2/apps/native/src/components/ui/table.tsx +0 -296
  342. package/2/apps/native/src/components/ui/tabs.tsx +0 -115
  343. package/2/apps/native/src/components/ui/toggle.tsx +0 -50
  344. package/2/apps/native/src/components/ui/utils.tsx +0 -34
  345. package/2/apps/native/src/components/ui/video.tsx +0 -39
  346. package/2/apps/native/src/core/analytics/analytics-service.ts +0 -94
  347. package/2/apps/native/src/core/analytics/index.ts +0 -2
  348. package/2/apps/native/src/core/analytics/posthog-analytics-adapter.ts +0 -192
  349. package/2/apps/native/src/core/auth/auth-service.ts +0 -33
  350. package/2/apps/native/src/core/auth/index.ts +0 -1
  351. package/2/apps/native/src/core/cache/__tests__/cache-service.test.ts +0 -599
  352. package/2/apps/native/src/core/cache/cache-service.ts +0 -89
  353. package/2/apps/native/src/core/cache/index.ts +0 -45
  354. package/2/apps/native/src/core/config/config.service.ts +0 -153
  355. package/2/apps/native/src/core/config/index.ts +0 -2
  356. package/2/apps/native/src/core/config/telemetry.ts +0 -38
  357. package/2/apps/native/src/core/local-notifications/local-notification-manager.ts +0 -409
  358. package/2/apps/native/src/core/logging/custom-transports.ts +0 -126
  359. package/2/apps/native/src/core/logging/index.ts +0 -1
  360. package/2/apps/native/src/core/logging/logger.ts +0 -182
  361. package/2/apps/native/src/core/navigation/deep-link-handler.ts +0 -295
  362. package/2/apps/native/src/core/navigation/navigation-types.ts +0 -53
  363. package/2/apps/native/src/core/payments/index.ts +0 -1
  364. package/2/apps/native/src/core/payments/payment-service.ts +0 -32
  365. package/2/apps/native/src/core/quick-actions/index.ts +0 -2
  366. package/2/apps/native/src/core/quick-actions/quick-actions-adapter.ts +0 -54
  367. package/2/apps/native/src/core/quick-actions/types.ts +0 -29
  368. package/2/apps/native/src/core/storage/index.ts +0 -1
  369. package/2/apps/native/src/core/storage/mmkv.ts +0 -62
  370. package/2/apps/native/src/core/storage/notification-storage.ts +0 -312
  371. package/2/apps/native/src/core/types/common.ts +0 -0
  372. package/2/apps/native/src/core/utils/convex-http-api.ts +0 -30
  373. package/2/apps/native/src/features/audio-recorder/components/audio-player.tsx +0 -301
  374. package/2/apps/native/src/features/audio-recorder/components/audio-recorder.tsx +0 -373
  375. package/2/apps/native/src/features/audio-recorder/components/audio-waveform.tsx +0 -270
  376. package/2/apps/native/src/features/audio-recorder/components/index.ts +0 -4
  377. package/2/apps/native/src/features/audio-recorder/components/recording-list.tsx +0 -89
  378. package/2/apps/native/src/features/audio-recorder/demo/audio-player-demo.tsx +0 -66
  379. package/2/apps/native/src/features/audio-recorder/demo/audio-recorder-cloud.tsx +0 -68
  380. package/2/apps/native/src/features/audio-recorder/demo/audio-recorder-interview.tsx +0 -102
  381. package/2/apps/native/src/features/audio-recorder/demo/basic.tsx +0 -27
  382. package/2/apps/native/src/features/audio-recorder/demo/index.ts +0 -5
  383. package/2/apps/native/src/features/audio-recorder/demo/with-recording-list-demo.tsx +0 -82
  384. package/2/apps/native/src/features/authentication/components/auth-watcher.tsx +0 -115
  385. package/2/apps/native/src/features/authentication/components/login-form.tsx +0 -85
  386. package/2/apps/native/src/features/authentication/services/__tests__/convex-auth.adapter.test.ts +0 -399
  387. package/2/apps/native/src/features/authentication/services/convex-auth.adapter.ts +0 -497
  388. package/2/apps/native/src/features/authentication/services/index.ts +0 -2
  389. package/2/apps/native/src/features/charts/README.md +0 -185
  390. package/2/apps/native/src/features/charts/app/preview.tsx +0 -226
  391. package/2/apps/native/src/features/charts/components/area-chart.tsx +0 -43
  392. package/2/apps/native/src/features/charts/components/bar-chart.tsx +0 -146
  393. package/2/apps/native/src/features/charts/components/candlestick-chart.tsx +0 -199
  394. package/2/apps/native/src/features/charts/components/chart-card.tsx +0 -68
  395. package/2/apps/native/src/features/charts/components/column-chart.tsx +0 -146
  396. package/2/apps/native/src/features/charts/components/doughnut-chart.tsx +0 -260
  397. package/2/apps/native/src/features/charts/components/index.ts +0 -13
  398. package/2/apps/native/src/features/charts/components/line-chart.tsx +0 -311
  399. package/2/apps/native/src/features/charts/components/radar-chart.tsx +0 -183
  400. package/2/apps/native/src/features/charts/components/radial-bar-chart.tsx +0 -191
  401. package/2/apps/native/src/features/charts/components/stacked-area-chart.tsx +0 -268
  402. package/2/apps/native/src/features/charts/components/stacked-bar-chart.tsx +0 -325
  403. package/2/apps/native/src/features/charts/data/mock-data.ts +0 -186
  404. package/2/apps/native/src/features/charts/types/index.ts +0 -69
  405. package/2/apps/native/src/features/chatbot/app/index.tsx +0 -303
  406. package/2/apps/native/src/features/chatbot/components/chat-header-buttons.tsx +0 -60
  407. package/2/apps/native/src/features/chatbot/components/chat-input-bar.tsx +0 -470
  408. package/2/apps/native/src/features/chatbot/components/chat-markdown.tsx +0 -576
  409. package/2/apps/native/src/features/chatbot/components/chat-message-bubble.tsx +0 -247
  410. package/2/apps/native/src/features/chatbot/components/chat-settings-modal.tsx +0 -162
  411. package/2/apps/native/src/features/chatbot/components/image-preview-list.tsx +0 -116
  412. package/2/apps/native/src/features/chatbot/components/markdown/code-block.tsx +0 -166
  413. package/2/apps/native/src/features/chatbot/components/markdown/index.ts +0 -11
  414. package/2/apps/native/src/features/chatbot/components/markdown/table-renderer.tsx +0 -130
  415. package/2/apps/native/src/features/chatbot/components/message-error-boundary.tsx +0 -79
  416. package/2/apps/native/src/features/chatbot/components/message-list.tsx +0 -174
  417. package/2/apps/native/src/features/chatbot/components/model-selector.tsx +0 -284
  418. package/2/apps/native/src/features/chatbot/components/report-content-modal.tsx +0 -189
  419. package/2/apps/native/src/features/chatbot/components/suggested-messages.tsx +0 -68
  420. package/2/apps/native/src/features/chatbot/constants/models.ts +0 -21
  421. package/2/apps/native/src/features/chatbot/constants/report-reasons.ts +0 -10
  422. package/2/apps/native/src/features/chatbot/hooks/use-attachment-cache.ts +0 -144
  423. package/2/apps/native/src/features/chatbot/hooks/use-chat-config.ts +0 -665
  424. package/2/apps/native/src/features/chatbot/hooks/use-chat-handlers.ts +0 -360
  425. package/2/apps/native/src/features/chatbot/hooks/use-chatbot-settings.ts +0 -90
  426. package/2/apps/native/src/features/chatbot/hooks/use-conversation.ts +0 -80
  427. package/2/apps/native/src/features/chatbot/hooks/use-image-picker.ts +0 -123
  428. package/2/apps/native/src/features/chatbot/hooks/use-keyboard-coordinator.ts +0 -162
  429. package/2/apps/native/src/features/chatbot/hooks/use-smart-scroll-manager.ts +0 -214
  430. package/2/apps/native/src/features/chatbot/models/index.ts +0 -87
  431. package/2/apps/native/src/features/chatbot/models/models.ts +0 -163
  432. package/2/apps/native/src/features/chatbot/models/providers.ts +0 -63
  433. package/2/apps/native/src/features/chatbot/models/types.ts +0 -41
  434. package/2/apps/native/src/features/chatbot/services/file-uploader.ts +0 -239
  435. package/2/apps/native/src/features/chatbot/services/message-handler-service.ts +0 -181
  436. package/2/apps/native/src/features/chatbot/types/index.ts +0 -61
  437. package/2/apps/native/src/features/chatbot/utils/chat-telemetry.ts +0 -92
  438. package/2/apps/native/src/features/image-generator/app/_layout.tsx +0 -26
  439. package/2/apps/native/src/features/image-generator/app/gallery.tsx +0 -217
  440. package/2/apps/native/src/features/image-generator/app/index.tsx +0 -237
  441. package/2/apps/native/src/features/image-generator/components/gallery-image.tsx +0 -25
  442. package/2/apps/native/src/features/image-generator/components/image-detail-modal.tsx +0 -215
  443. package/2/apps/native/src/features/image-generator/components/image-model-selector.tsx +0 -210
  444. package/2/apps/native/src/features/image-generator/components/image-placeholder.tsx +0 -26
  445. package/2/apps/native/src/features/image-generator/hooks/use-image-gallery.ts +0 -71
  446. package/2/apps/native/src/features/image-generator/hooks/use-image-generator-settings.ts +0 -152
  447. package/2/apps/native/src/features/image-generator/hooks/use-image-generator.ts +0 -93
  448. package/2/apps/native/src/features/image-generator/models/models.ts +0 -66
  449. package/2/apps/native/src/features/image-generator/services/image-gallery-service.ts +0 -98
  450. package/2/apps/native/src/features/image-generator/services/image-save-service.ts +0 -121
  451. package/2/apps/native/src/features/onboarding/analytics/index.ts +0 -9
  452. package/2/apps/native/src/features/onboarding/components/onboarding-with-analytics.tsx +0 -141
  453. package/2/apps/native/src/features/onboarding/components/onboarding.tsx +0 -173
  454. package/2/apps/native/src/features/onboarding/config/onboarding-flow-config.ts +0 -189
  455. package/2/apps/native/src/features/onboarding/demo-one/app/index.tsx +0 -43
  456. package/2/apps/native/src/features/onboarding/demo-one/data.ts +0 -32
  457. package/2/apps/native/src/features/onboarding/hooks/use-onboarding-analytics.ts +0 -323
  458. package/2/apps/native/src/features/onboarding/services/onboarding-analytics.ts +0 -432
  459. package/2/apps/native/src/features/payments/README.md +0 -200
  460. package/2/apps/native/src/features/payments/app/local-paywall.tsx +0 -194
  461. package/2/apps/native/src/features/payments/app/remote-paywall.tsx +0 -79
  462. package/2/apps/native/src/features/payments/components/payment-initializer.tsx +0 -95
  463. package/2/apps/native/src/features/payments/components/paywall-error-state.tsx +0 -60
  464. package/2/apps/native/src/features/payments/components/paywall-local-mode.tsx +0 -116
  465. package/2/apps/native/src/features/payments/components/paywall-product-card.tsx +0 -133
  466. package/2/apps/native/src/features/payments/components/paywall-remote-mode.tsx +0 -146
  467. package/2/apps/native/src/features/payments/hooks/use-entitlement.ts +0 -63
  468. package/2/apps/native/src/features/payments/index.ts +0 -8
  469. package/2/apps/native/src/features/payments/services/revenuecat-adapter.ts +0 -407
  470. package/2/apps/native/src/features/quick-actions/components/quick-actions-demo.tsx +0 -139
  471. package/2/apps/native/src/features/quick-actions/config/default-actions.ts +0 -83
  472. package/2/apps/native/src/features/quick-actions/hooks/use-quick-actions.ts +0 -45
  473. package/2/apps/native/src/features/quick-actions/index.ts +0 -4
  474. package/2/apps/native/src/features/quick-actions/utils/quick-actions-manager.ts +0 -105
  475. package/2/apps/native/src/features/quiz/components/question.tsx +0 -67
  476. package/2/apps/native/src/features/quiz/config.ts +0 -11
  477. package/2/apps/native/src/features/quiz/index.tsx +0 -133
  478. package/2/apps/native/src/features/settings/ui/debug-info.tsx +0 -75
  479. package/2/apps/native/src/features/settings/ui/dev-tools.tsx +0 -1
  480. package/2/apps/native/src/features/settings/ui/item.tsx +0 -45
  481. package/2/apps/native/src/features/settings/ui/items-container.tsx +0 -23
  482. package/2/apps/native/src/features/settings/ui/language-item.tsx +0 -52
  483. package/2/apps/native/src/features/settings/ui/notification-item.tsx +0 -59
  484. package/2/apps/native/src/features/settings/ui/theme-item.tsx +0 -45
  485. package/2/apps/native/src/features/tracker-app/app/index.tsx +0 -108
  486. package/2/apps/native/src/features/tracker-app/components/animated-number.tsx +0 -102
  487. package/2/apps/native/src/features/tracker-app/components/calorie-card.tsx +0 -66
  488. package/2/apps/native/src/features/tracker-app/components/circular-progress.tsx +0 -97
  489. package/2/apps/native/src/features/tracker-app/components/floating-add-button.tsx +0 -27
  490. package/2/apps/native/src/features/tracker-app/components/macro-card.tsx +0 -80
  491. package/2/apps/native/src/features/tracker-app/components/promo-banner.tsx +0 -98
  492. package/2/apps/native/src/features/tracker-app/components/recently-logged.tsx +0 -64
  493. package/2/apps/native/src/features/tracker-app/components/week-calendar.tsx +0 -68
  494. package/2/apps/native/src/features/vibefast-features.ts +0 -42
  495. package/2/apps/native/src/features/voice-bot/README.md +0 -185
  496. package/2/apps/native/src/features/voice-bot/components/conversation-status.tsx +0 -76
  497. package/2/apps/native/src/features/voice-bot/components/index.ts +0 -4
  498. package/2/apps/native/src/features/voice-bot/components/message-input.tsx +0 -98
  499. package/2/apps/native/src/features/voice-bot/components/voice-bot-screen.tsx +0 -173
  500. package/2/apps/native/src/features/voice-bot/components/voice-controls.tsx +0 -73
  501. package/2/apps/native/src/features/voice-bot/index.ts +0 -3
  502. package/2/apps/native/src/features/voice-bot/services/index.ts +0 -1
  503. package/2/apps/native/src/features/voice-bot/services/use-voice-bot.ts +0 -161
  504. package/2/apps/native/src/features/voice-bot/types.ts +0 -29
  505. package/2/apps/native/src/features/wake-word/components/index.ts +0 -1
  506. package/2/apps/native/src/features/wake-word/components/wake-word-indicator.tsx +0 -61
  507. package/2/apps/native/src/features/wake-word/constants.ts +0 -10
  508. package/2/apps/native/src/features/wake-word/hooks/use-wake-word.ts +0 -181
  509. package/2/apps/native/src/features/wake-word/index.ts +0 -22
  510. package/2/apps/native/src/features/wake-word/services/audio-session.ts +0 -40
  511. package/2/apps/native/src/features/wake-word/services/event-bus.ts +0 -31
  512. package/2/apps/native/src/features/wake-word/services/keywords.ts +0 -88
  513. package/2/apps/native/src/features/wake-word/services/wake-word-manager.ts +0 -249
  514. package/2/apps/native/src/features/wake-word/types.ts +0 -22
  515. package/2/apps/native/src/lib/env.js +0 -13
  516. package/2/apps/native/src/lib/hooks/index.tsx +0 -6
  517. package/2/apps/native/src/lib/hooks/use-device-identifier.tsx +0 -80
  518. package/2/apps/native/src/lib/hooks/use-gradual-animation.ts +0 -28
  519. package/2/apps/native/src/lib/hooks/use-is-first-time.tsx +0 -25
  520. package/2/apps/native/src/lib/hooks/use-navigation-analytics.ts +0 -44
  521. package/2/apps/native/src/lib/hooks/use-navigation-options.tsx +0 -87
  522. package/2/apps/native/src/lib/hooks/use-push-notifications.ts +0 -250
  523. package/2/apps/native/src/lib/hooks/use-responsive-size.tsx +0 -37
  524. package/2/apps/native/src/lib/hooks/use-selected-theme.tsx +0 -38
  525. package/2/apps/native/src/lib/hooks/use-viewport-lazy-loading.tsx +0 -124
  526. package/2/apps/native/src/lib/i18n/index.tsx +0 -30
  527. package/2/apps/native/src/lib/i18n/react-i18next.d.ts +0 -9
  528. package/2/apps/native/src/lib/i18n/resources.ts +0 -25
  529. package/2/apps/native/src/lib/i18n/types.ts +0 -23
  530. package/2/apps/native/src/lib/i18n/utils.tsx +0 -112
  531. package/2/apps/native/src/lib/index.tsx +0 -3
  532. package/2/apps/native/src/lib/state/auth-client-slice.ts +0 -34
  533. package/2/apps/native/src/lib/state/index.ts +0 -1
  534. package/2/apps/native/src/lib/storage.tsx +0 -7
  535. package/2/apps/native/src/lib/test-utils.tsx +0 -43
  536. package/2/apps/native/src/lib/use-theme-config.tsx +0 -108
  537. package/2/apps/native/src/lib/utils.ts +0 -29
  538. package/2/apps/native/src/polyfills.ts +0 -61
  539. package/2/apps/native/src/providers/convex-provider.tsx +0 -31
  540. package/2/apps/native/src/providers/index.tsx +0 -6
  541. package/2/apps/native/src/providers/notification-provider.tsx +0 -168
  542. package/2/apps/native/src/providers/posthog-provider.tsx +0 -47
  543. package/2/apps/native/src/providers/root-providers.tsx +0 -46
  544. package/2/apps/native/src/providers/sentry-provider.tsx +0 -62
  545. package/2/apps/native/src/providers/splash-screen-provider.tsx +0 -122
  546. package/2/apps/native/src/providers/theme-provider.tsx +0 -67
  547. package/2/apps/native/src/translations/ar.json +0 -394
  548. package/2/apps/native/src/translations/de.json +0 -394
  549. package/2/apps/native/src/translations/en.json +0 -394
  550. package/2/apps/native/src/translations/es.json +0 -394
  551. package/2/apps/native/src/translations/fr.json +0 -394
  552. package/2/apps/native/src/types/flash-list.d.ts +0 -3
  553. package/2/apps/native/src/types/index.ts +0 -3
  554. package/2/apps/native/src/types/react-native-reanimated.d.ts +0 -5
  555. package/2/apps/native/tailwind.config.js +0 -57
  556. package/2/apps/native/targets/widget/AppIntent.swift +0 -46
  557. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png +0 -0
  558. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png +0 -0
  559. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png +0 -0
  560. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png +0 -0
  561. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png +0 -0
  562. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png +0 -0
  563. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png +0 -0
  564. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png +0 -0
  565. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png +0 -0
  566. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png +0 -0
  567. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png +0 -0
  568. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png +0 -0
  569. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png +0 -0
  570. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png +0 -0
  571. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -122
  572. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png +0 -0
  573. package/2/apps/native/targets/widget/CalorieTrackerWidget.swift +0 -424
  574. package/2/apps/native/targets/widget/HabitTrackerWidget.swift +0 -305
  575. package/2/apps/native/targets/widget/Info.plist +0 -11
  576. package/2/apps/native/targets/widget/WidgetLiveActivity.swift +0 -75
  577. package/2/apps/native/targets/widget/expo-target.config.js +0 -10
  578. package/2/apps/native/targets/widget/generated.entitlements +0 -5
  579. package/2/apps/native/targets/widget/index.swift +0 -18
  580. package/2/apps/native/targets/widget/widgets.swift +0 -96
  581. package/2/apps/native/tsconfig.json +0 -88
  582. package/2/apps/native/vitest.config.mts +0 -14
  583. package/2/apps/web/README.md +0 -36
  584. package/2/apps/web/app/favicon.ico +0 -0
  585. package/2/apps/web/app/globals.css +0 -122
  586. package/2/apps/web/app/layout.tsx +0 -38
  587. package/2/apps/web/app/page.tsx +0 -35
  588. package/2/apps/web/app/users/page.tsx +0 -301
  589. package/2/apps/web/components/AdminDashboard.tsx +0 -336
  590. package/2/apps/web/components/AppleLogo.tsx +0 -15
  591. package/2/apps/web/components/GitHubLogo.tsx +0 -11
  592. package/2/apps/web/components/GoogleLogo.tsx +0 -23
  593. package/2/apps/web/components/Layout.tsx +0 -77
  594. package/2/apps/web/components/ThemeToggle.tsx +0 -23
  595. package/2/apps/web/components/UserMenu.tsx +0 -66
  596. package/2/apps/web/components/auth/CodeInput.tsx +0 -24
  597. package/2/apps/web/components/auth/ResetPasswordWithEmailCode.tsx +0 -85
  598. package/2/apps/web/components/auth/SignInFormEmailCode.tsx +0 -72
  599. package/2/apps/web/components/auth/SignInFormEmailLink.tsx +0 -81
  600. package/2/apps/web/components/auth/SignInFormPassword.tsx +0 -17
  601. package/2/apps/web/components/auth/SignInFormPasswordAndCustomField.tsx +0 -42
  602. package/2/apps/web/components/auth/SignInFormPasswordAndResetViaCode.tsx +0 -32
  603. package/2/apps/web/components/auth/SignInFormPasswordAndVerifyViaCode.tsx +0 -86
  604. package/2/apps/web/components/auth/SignInFormPhoneCode.tsx +0 -89
  605. package/2/apps/web/components/auth/SignInFormsShowcase.tsx +0 -64
  606. package/2/apps/web/components/auth/SignInMethodDivider.tsx +0 -17
  607. package/2/apps/web/components/auth/SignInWithEmailCode.tsx +0 -49
  608. package/2/apps/web/components/auth/SignInWithOAuth.tsx +0 -16
  609. package/2/apps/web/components/auth/SignInWithPassword.tsx +0 -100
  610. package/2/apps/web/components/auth/oauth/SignInWithApple.tsx +0 -27
  611. package/2/apps/web/components/auth/oauth/SignInWithGitHub.tsx +0 -27
  612. package/2/apps/web/components/auth/oauth/SignInWithGoogle.tsx +0 -27
  613. package/2/apps/web/components/ui/button.tsx +0 -60
  614. package/2/apps/web/components/ui/card.tsx +0 -92
  615. package/2/apps/web/components/ui/dialog.tsx +0 -143
  616. package/2/apps/web/components/ui/dropdown-menu.tsx +0 -257
  617. package/2/apps/web/components/ui/input-otp.tsx +0 -77
  618. package/2/apps/web/components/ui/input.tsx +0 -21
  619. package/2/apps/web/components/ui/skeleton.tsx +0 -13
  620. package/2/apps/web/components/ui/tabs.tsx +0 -66
  621. package/2/apps/web/components/ui/toast.tsx +0 -130
  622. package/2/apps/web/components/ui/toaster.tsx +0 -36
  623. package/2/apps/web/components/ui/toggle-group.tsx +0 -83
  624. package/2/apps/web/components/ui/toggle.tsx +0 -47
  625. package/2/apps/web/components/ui/use-toast.ts +0 -192
  626. package/2/apps/web/components.json +0 -22
  627. package/2/apps/web/eslint.config.mjs +0 -18
  628. package/2/apps/web/lib/convex-provider.tsx +0 -18
  629. package/2/apps/web/lib/utils.ts +0 -6
  630. package/2/apps/web/next.config.ts +0 -7
  631. package/2/apps/web/package.json +0 -46
  632. package/2/apps/web/postcss.config.mjs +0 -7
  633. package/2/apps/web/public/file.svg +0 -1
  634. package/2/apps/web/public/globe.svg +0 -1
  635. package/2/apps/web/public/next.svg +0 -1
  636. package/2/apps/web/public/vercel.svg +0 -1
  637. package/2/apps/web/public/window.svg +0 -1
  638. package/2/apps/web/tsconfig.json +0 -34
  639. package/2/bts.jsonc +0 -21
  640. package/2/commitlint.config.js +0 -1
  641. package/2/eslint.config.mjs +0 -182
  642. package/2/lint-staged.config.js +0 -16
  643. package/2/package.json +0 -64
  644. package/2/packages/backend/.env.example +0 -20
  645. package/2/packages/backend/convex/README.md +0 -90
  646. package/2/packages/backend/convex/_generated/api.d.ts +0 -2599
  647. package/2/packages/backend/convex/_generated/api.js +0 -23
  648. package/2/packages/backend/convex/_generated/dataModel.d.ts +0 -60
  649. package/2/packages/backend/convex/_generated/server.d.ts +0 -149
  650. package/2/packages/backend/convex/_generated/server.js +0 -90
  651. package/2/packages/backend/convex/agents.ts +0 -116
  652. package/2/packages/backend/convex/auth.config.ts +0 -8
  653. package/2/packages/backend/convex/auth.ts +0 -103
  654. package/2/packages/backend/convex/authCustomEmailOtpProvider.ts +0 -175
  655. package/2/packages/backend/convex/authOtp.ts +0 -144
  656. package/2/packages/backend/convex/authPasswordReset.ts +0 -367
  657. package/2/packages/backend/convex/authPasswordResetActions.ts +0 -150
  658. package/2/packages/backend/convex/chatbot/index.ts +0 -30
  659. package/2/packages/backend/convex/chatbotAgent.ts +0 -1085
  660. package/2/packages/backend/convex/chatbotHistory.ts +0 -307
  661. package/2/packages/backend/convex/convex.config.ts +0 -13
  662. package/2/packages/backend/convex/deviceGrants.ts +0 -58
  663. package/2/packages/backend/convex/grantFunctions.ts +0 -444
  664. package/2/packages/backend/convex/http.ts +0 -8
  665. package/2/packages/backend/convex/imageGeneration/index.ts +0 -12
  666. package/2/packages/backend/convex/imageGeneratorFunctions.ts +0 -290
  667. package/2/packages/backend/convex/lib/ai/analysisConfigs.ts +0 -257
  668. package/2/packages/backend/convex/lib/ai/config.ts +0 -71
  669. package/2/packages/backend/convex/lib/ai/geminiAdapter.ts +0 -43
  670. package/2/packages/backend/convex/lib/ai/openaiAdapter.ts +0 -43
  671. package/2/packages/backend/convex/lib/ai/schemas.ts +0 -79
  672. package/2/packages/backend/convex/lib/config.ts +0 -111
  673. package/2/packages/backend/convex/lib/rateLimit.ts +0 -100
  674. package/2/packages/backend/convex/lib/telemetry.ts +0 -29
  675. package/2/packages/backend/convex/paymentFunctions.ts +0 -119
  676. package/2/packages/backend/convex/payments/index.ts +0 -13
  677. package/2/packages/backend/convex/pushNotificationFunctions.ts +0 -342
  678. package/2/packages/backend/convex/ragKnowledge.ts +0 -714
  679. package/2/packages/backend/convex/rateLimit.ts +0 -13
  680. package/2/packages/backend/convex/recordingFunctions.ts +0 -98
  681. package/2/packages/backend/convex/reportFunctions.ts +0 -344
  682. package/2/packages/backend/convex/reporting/index.ts +0 -9
  683. package/2/packages/backend/convex/router.ts +0 -81
  684. package/2/packages/backend/convex/schema.ts +0 -237
  685. package/2/packages/backend/convex/shared/email.ts +0 -172
  686. package/2/packages/backend/convex/shared/files.ts +0 -96
  687. package/2/packages/backend/convex/shared/index.ts +0 -17
  688. package/2/packages/backend/convex/shared/templates/PasswordResetEmail.tsx +0 -72
  689. package/2/packages/backend/convex/shared/templates/VerificationCodeEmail.tsx +0 -65
  690. package/2/packages/backend/convex/sharedUsers.ts +0 -48
  691. package/2/packages/backend/convex/tools/index.ts +0 -18
  692. package/2/packages/backend/convex/tools/knowledgeRetrieval.ts +0 -92
  693. package/2/packages/backend/convex/tools/tavilySearch.ts +0 -83
  694. package/2/packages/backend/convex/tools/userProfile.ts +0 -72
  695. package/2/packages/backend/convex/tsconfig.json +0 -25
  696. package/2/packages/backend/convex/users.ts +0 -54
  697. package/2/packages/backend/index.ts +0 -20
  698. package/2/packages/backend/package.json +0 -32
  699. package/2/packages/ui/README.md +0 -63
  700. package/2/packages/ui/index.ts +0 -1
  701. package/2/packages/ui/package.json +0 -21
  702. package/2/packages/ui/src/components/SharedButton.tsx +0 -31
  703. package/2/packages/ui/src/components/SharedCard.tsx +0 -48
  704. package/2/packages/ui/src/components/index.ts +0 -2
  705. package/2/packages/ui/tsconfig.json +0 -10
  706. package/2/pnpm-lock.yaml +0 -23292
  707. package/2/pnpm-workspace.yaml +0 -3
  708. package/2/scripts/i18next-syntax-validation.js +0 -1
  709. package/2/tsconfig.json +0 -43
  710. package/2/turbo.json +0 -33
  711. package/2/vercel.json +0 -6
  712. package/2/vf-agent/agent-teams/team-vibefast.yaml +0 -14
  713. package/2/vf-agent/agents/analyst.md +0 -53
  714. package/2/vf-agent/agents/architect.md +0 -105
  715. package/2/vf-agent/agents/dev.md +0 -40
  716. package/2/vf-agent/agents/orchestrator.md +0 -181
  717. package/2/vf-agent/agents/pm.md +0 -48
  718. package/2/vf-agent/agents/po.md +0 -38
  719. package/2/vf-agent/agents/qa.md +0 -30
  720. package/2/vf-agent/agents/sm.md +0 -38
  721. package/2/vf-agent/agents/ux-expert.md +0 -33
  722. package/2/vf-agent/checklists/po-master-checklist.md +0 -73
  723. package/2/vf-agent/checklists/story-dod-checklist.md +0 -37
  724. package/2/vf-agent/core-config.yaml +0 -43
  725. package/2/vf-agent/data/knowledge_base/backend/convex-advanced.md +0 -43
  726. package/2/vf-agent/data/knowledge_base/backend/convex-database.md +0 -53
  727. package/2/vf-agent/data/knowledge_base/backend/convex-main.md +0 -65
  728. package/2/vf-agent/data/knowledge_base/backend/full-guidelines.md +0 -795
  729. package/2/vf-agent/data/knowledge_base/coding-standards.md +0 -253
  730. package/2/vf-agent/data/knowledge_base/frontend/full-guidelines.md +0 -254
  731. package/2/vf-agent/data/knowledge_base/frontend/image-handling.md +0 -48
  732. package/2/vf-agent/data/knowledge_base/frontend/react-native-main.md +0 -24
  733. package/2/vf-agent/data/knowledge_base/frontend/ui-and-styling.md +0 -169
  734. package/2/vf-agent/data/knowledge_base/general-principles.md +0 -26
  735. package/2/vf-agent/data/knowledge_base/master-rulebook.md +0 -42
  736. package/2/vf-agent/data/knowledge_base/starter-docs/audio-recorder-reference.md +0 -98
  737. package/2/vf-agent/data/knowledge_base/starter-docs/authentication-reference.md +0 -155
  738. package/2/vf-agent/data/knowledge_base/starter-docs/charts-reference.md +0 -149
  739. package/2/vf-agent/data/knowledge_base/starter-docs/chatbot-reference.md +0 -123
  740. package/2/vf-agent/data/knowledge_base/starter-docs/feature-reference-index.md +0 -211
  741. package/2/vf-agent/data/knowledge_base/starter-docs/features-overview.md +0 -221
  742. package/2/vf-agent/data/knowledge_base/starter-docs/image-analyzer-reference.md +0 -118
  743. package/2/vf-agent/data/knowledge_base/starter-docs/image-generator-reference.md +0 -110
  744. package/2/vf-agent/data/knowledge_base/starter-docs/index.md +0 -28
  745. package/2/vf-agent/data/knowledge_base/starter-docs/onboarding-reference.md +0 -96
  746. package/2/vf-agent/data/knowledge_base/starter-docs/payments-reference.md +0 -148
  747. package/2/vf-agent/data/knowledge_base/starter-docs/prd.md +0 -82
  748. package/2/vf-agent/data/knowledge_base/starter-docs/push-notifications-reference.md +0 -453
  749. package/2/vf-agent/data/knowledge_base/starter-docs/quick-actions-reference.md +0 -253
  750. package/2/vf-agent/data/knowledge_base/starter-docs/quiz-reference.md +0 -169
  751. package/2/vf-agent/data/knowledge_base/starter-docs/settings-reference.md +0 -146
  752. package/2/vf-agent/data/knowledge_base/starter-docs/tech-stack.md +0 -159
  753. package/2/vf-agent/data/knowledge_base/starter-docs/tracker-app-reference.md +0 -150
  754. package/2/vf-agent/data/knowledge_base/starter-docs/unified-project-structure.md +0 -98
  755. package/2/vf-agent/data/knowledge_base/testing/backend-testing.md +0 -54
  756. package/2/vf-agent/data/knowledge_base/testing/frontend-testing.md +0 -71
  757. package/2/vf-agent/data/knowledge_base/testing/testing-strategy.md +0 -31
  758. package/2/vf-agent/tasks/advanced-elicitation.md +0 -117
  759. package/2/vf-agent/tasks/brownfield-create-epic.md +0 -160
  760. package/2/vf-agent/tasks/create-deep-research-prompt.md +0 -278
  761. package/2/vf-agent/tasks/create-doc.md +0 -42
  762. package/2/vf-agent/tasks/create-story.md +0 -43
  763. package/2/vf-agent/tasks/document-project.md +0 -343
  764. package/2/vf-agent/tasks/facilitate-brainstorming-session.md +0 -136
  765. package/2/vf-agent/tasks/index-docs.md +0 -173
  766. package/2/vf-agent/tasks/kb-mode-interaction.md +0 -75
  767. package/2/vf-agent/tasks/review-story.md +0 -154
  768. package/2/vf-agent/tasks/shard-doc.md +0 -185
  769. package/2/vf-agent/tasks/troubleshoot-issue.md +0 -65
  770. package/2/vf-agent/tasks/validate-next-story.md +0 -47
  771. package/2/vf-agent/templates/brainstorming-output-tmpl.yaml +0 -156
  772. package/2/vf-agent/templates/brownfield-architecture-tmpl.yaml +0 -111
  773. package/2/vf-agent/templates/brownfield-prd-tmpl.yaml +0 -247
  774. package/2/vf-agent/templates/competitor-analysis-tmpl.yaml +0 -293
  775. package/2/vf-agent/templates/market-research-tmpl.yaml +0 -252
  776. package/2/vf-agent/templates/project-brief-tmpl.yaml +0 -221
  777. package/2/vf-agent/templates/story-tmpl.yaml +0 -143
  778. package/recipes/0/apps/native/src/components/advanced-ui/timeline/demo.tsx +0 -444
  779. package/recipes/0/apps/native/src/components/advanced-ui/timeline/timeline-view.tsx +0 -355
  780. package/recipes/0/apps/native/src/components/advanced-ui/timeline/types.ts +0 -31
  781. package/recipes/wake-word/scripts/download-vosk-model.mjs +0 -121
  782. /package/{2 → recipes/animated-chip}/apps/native/src/components/advanced-ui/chip/animated-chip.tsx +0 -0
  783. /package/{2 → recipes/animated-chip}/apps/native/src/components/advanced-ui/chip/chip.tsx +0 -0
  784. /package/{2 → recipes/animated-chip}/apps/native/src/components/advanced-ui/chip/demo.tsx +0 -0
  785. /package/{2 → recipes/animated-chip}/apps/native/src/components/advanced-ui/chip/types.ts +0 -0
  786. /package/{2 → recipes/animated-switch}/apps/native/src/components/advanced-ui/switch/animated-switch.tsx +0 -0
  787. /package/{2 → recipes/animated-switch}/apps/native/src/components/advanced-ui/switch/demo.tsx +0 -0
  788. /package/{2 → recipes/animated-switch}/apps/native/src/components/advanced-ui/switch/types.ts +0 -0
  789. /package/{2 → recipes/glowing-button}/apps/native/src/components/advanced-ui/buttons/demo.tsx +0 -0
  790. /package/{2 → recipes/image-analysis}/apps/native/assets/features/image-analyzer/front.jpg +0 -0
  791. /package/{2 → recipes/image-analysis}/apps/native/assets/features/image-analyzer/side.jpg +0 -0
  792. /package/{2 → recipes/image-analysis}/apps/native/assets/features/image-analyzer/threeQuarter.jpg +0 -0
  793. /package/{2 → recipes/image-analysis}/apps/native/src/api-client/image-analyzer.ts +0 -0
  794. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/_layout.tsx +0 -0
  795. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/analysis-options.tsx +0 -0
  796. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/camera.tsx +0 -0
  797. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/index.tsx +0 -0
  798. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/loading.tsx +0 -0
  799. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/results.tsx +0 -0
  800. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/trait-details.tsx +0 -0
  801. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/analysis-options-screen.tsx +0 -0
  802. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/camera.tsx +0 -0
  803. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/image-capture-screen.tsx +0 -0
  804. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/loading-screen.tsx +0 -0
  805. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/loading.tsx +0 -0
  806. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/results.tsx +0 -0
  807. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/trait-details.tsx +0 -0
  808. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/use-analysis-data.ts +0 -0
  809. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/use-results-screen.ts +0 -0
  810. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/achievement-badge.tsx +0 -0
  811. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/achievement-card.tsx +0 -0
  812. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/achievement-unlocked-modal.tsx +0 -0
  813. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/achievements-section.tsx +0 -0
  814. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/advice-list.tsx +0 -0
  815. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/circular-progress.tsx +0 -0
  816. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/content-card.tsx +0 -0
  817. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/error-state.tsx +0 -0
  818. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/index.ts +0 -0
  819. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/loading-state.tsx +0 -0
  820. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/profile-image.tsx +0 -0
  821. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/results-header.tsx +0 -0
  822. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/score-display.tsx +0 -0
  823. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/share-options-modal.tsx +0 -0
  824. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/traits-grid.tsx +0 -0
  825. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/config/analysis-config.ts +0 -0
  826. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/config/master-analysis-config.ts +0 -0
  827. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/hooks/index.ts +0 -0
  828. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/hooks/use-analysis.ts +0 -0
  829. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/hooks/use-image-analysis.ts +0 -0
  830. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/services/analysis-service.ts +0 -0
  831. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/services/share-service.ts +0 -0
  832. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/services/trait-details-service.ts +0 -0
  833. /package/{2 → recipes/image-analysis}/packages/backend/convex/imageAnalysis/index.ts +0 -0
  834. /package/{2 → recipes/image-analysis}/packages/backend/convex/imageAnalysisFunctions.ts +0 -0
  835. /package/{2 → recipes/image-analysis}/packages/backend/convex/lib/ai/imageAnalysisAdapter.ts +0 -0
  836. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/button/stepper-button.tsx +0 -0
  837. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/button/types.ts +0 -0
  838. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/content/stepper-content.tsx +0 -0
  839. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/content/types.ts +0 -0
  840. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/value/stepper-value.tsx +0 -0
  841. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/value/types.ts +0 -0
  842. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/context/stepper-context.ts +0 -0
  843. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/context/types.ts +0 -0
  844. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/demo.tsx +0 -0
  845. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/index.ts +0 -0
  846. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/stepper.tsx +0 -0
  847. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/types.ts +0 -0
  848. /package/{2 → recipes/progress-circle}/apps/native/src/components/advanced-ui/progress-bars/animated-progress-bar.tsx +0 -0
  849. /package/{2 → recipes/progress-circle}/apps/native/src/components/advanced-ui/progress-bars/dropdown-picker-page.tsx +0 -0
  850. /package/{2 → recipes/progress-circle}/apps/native/src/components/advanced-ui/progress-bars/progress-circle-page.tsx +0 -0
  851. /package/{2 → recipes/progress-circle}/apps/native/src/components/advanced-ui/progress-bars/progress-circle.tsx +0 -0
  852. /package/{2 → recipes/swipe-slider}/apps/native/src/components/advanced-ui/sliders/swipe-slider-page.tsx +0 -0
  853. /package/{2 → recipes/swipe-slider}/apps/native/src/components/advanced-ui/sliders/swipe-slider.tsx +0 -0
  854. /package/{2 → recipes/timeline}/apps/native/src/components/advanced-ui/timeline/demo.tsx +0 -0
  855. /package/{2 → recipes/timeline}/apps/native/src/components/advanced-ui/timeline/timeline-view.tsx +0 -0
  856. /package/{2 → recipes/timeline}/apps/native/src/components/advanced-ui/timeline/types.ts +0 -0
  857. /package/{2 → recipes/wake-word}/apps/native/scripts/download-vosk-model.mjs +0 -0
@@ -1,123 +0,0 @@
1
- # Chatbot Reference
2
-
3
- > Frontend paths reference the Expo workspace (`apps/native/src/...`); backend paths reference `packages/backend/convex/...`.
4
-
5
- ## Overview
6
-
7
- The VibeFast starter kit includes a full-featured, streaming AI chatbot. It's built to be highly performant and easily extensible, leveraging the Vercel AI SDK for the frontend and a powerful Convex backend to connect with various AI models like OpenAI's GPT and Google's Gemini.
8
-
9
- ### Core Technologies
10
-
11
- - **[Vercel AI SDK](https://sdk.vercel.ai):** The `useChat` hook is the centerpiece of the frontend, managing message state, streaming UI updates, and handling user input.
12
- - **[Convex](https://convex.dev):** The backend is built entirely on Convex. A `httpAction` provides the streaming API endpoint, while standard mutations and queries handle conversation and message persistence.
13
- - **[AI Providers (OpenAI/Gemini)](https://openai.com/):** The backend is designed to be provider-agnostic. The `chatbotHttpActions.ts` file contains adapters for both OpenAI and Gemini, which can be selected dynamically.
14
- - **[Expo Image Picker](https://docs.expo.dev/versions/latest/sdk/imagepicker/):** Used for selecting and attaching images to messages, enabling multi-modal chat capabilities.
15
-
16
- ## Getting Started
17
-
18
- The chatbot is ready to use out-of-the-box. The main configuration step is to add your desired AI provider API keys to your environment variables.
19
-
20
- ### Environment Variables
21
-
22
- Add the following to your `.env.local` file:
23
-
24
- ```bash
25
- # For OpenAI
26
- OPENAI_API_KEY="sk-..."
27
-
28
- # For Google Gemini
29
- GEMINI_API_KEY="..."
30
- ```
31
-
32
- ### Chatbot Flow
33
-
34
- 1. **Conversation Start:** The `useChatConversation` hook ensures a default conversation exists for the user by calling the `getOrCreateDefaultConversation` mutation.
35
- 2. **User Input:** The user types a message or attaches an image using the `MessageInputBar` component. The `useChatInput` hook manages the local UI state.
36
- 3. **Submission:** When the user sends the message, the `useChat` hook from the Vercel AI SDK is triggered. It sends a POST request to the app's internal API route (`/api/chat/stream`).
37
- 4. **Backend HTTP Action:** The Convex `httpAction` at `chatbotHttpActions.ts` receives the request. It authenticates the user, retrieves image attachments from file storage if necessary, and formats the message history into the format required by the target AI provider (e.g., OpenAI).
38
- 5. **AI Stream:** The action calls the selected AI provider (e.g., `streamOpenAIChat`). The provider's response is streamed back to the client.
39
- 6. **UI Streaming:** The `useChat` hook receives the stream and continuously updates the message list, creating the real-time typing effect.
40
- 7. **Persistence:**
41
- - The user's message is saved to the database immediately via the `storeMessage` mutation.
42
- - Once the AI's response stream is complete, an `onFinishCallback` in the HTTP action triggers the `storeFinalBotMessage` mutation to save the complete bot message to the database.
43
-
44
- ## Key Components & Hooks
45
-
46
- ### Core Components
47
-
48
- - `ChatLayout`: Provides the main structure for the chat screen, including the message list and the input bar.
49
- - `ChatMessageList`: Renders the list of messages, handles infinite scrolling for history, and displays the `TypingIndicator`.
50
- - `ChatMessage`: The main component for a single message, composing the avatar, content, and actions.
51
- - `MessageInputBar`: The bottom input bar containing the text input, image picker, and send button.
52
- - `ChatMessageText`: Renders the message content using `react-native-markdown-display` to support rich text formatting.
53
-
54
- ### Core Hooks
55
-
56
- - `useChat` (from `ai/react`): The most important hook. It manages the entire client-side state of the conversation, including the message list, input state, and connection to the streaming API.
57
- - `useChatConversation`: Manages the lifecycle of a conversation, ensuring a default one is created and providing the ability to clear it.
58
- - `useChatHistory`: A separate hook that uses a `usePaginatedQuery` to load historical messages from the database.
59
- - `useSendMessage`: A hook that handles the initial part of sending a message: uploading attachments to Convex file storage and storing the user's message in the database.
60
- - `useImagePicker`: A utility hook that wraps `expo-image-picker` to provide a simple interface for selecting images from the device.
61
-
62
- ## How-To Guides
63
-
64
- ### 1. Change the System Prompt
65
-
66
- The AI's personality and instructions are defined in a system prompt. You can change it by editing the `chatbotHttpActions.ts` file.
67
-
68
- ```ts
69
- // packages/backend/convex/chatbotHttpActions.ts
70
-
71
- // ... inside the httpAction
72
-
73
- // ── 3 ▶ Inject System Message ──────────────────
74
- const systemMessage: ClientMessage = {
75
- role: 'system',
76
- content: `You are a helpful assistant. Your new persona goes here.`,
77
- };
78
-
79
- // ...
80
- ```
81
-
82
- ### 2. Change the Default AI Provider or Model
83
-
84
- You can change the default provider (OpenAI or Gemini) and the model used for responses in `chatbotHttpActions.ts`.
85
-
86
- ```ts
87
- // packages/backend/convex/chatbotHttpActions.ts
88
-
89
- // ... inside the httpAction
90
-
91
- // ── 5 ▶ Invoke the LLM stream ───────────────────────────
92
- const model =
93
- preferredModel ||
94
- (preferredProvider === 'openai' ? 'gpt-4o' : 'gemini-1.5-pro-latest'); // Change model here
95
-
96
- const result =
97
- preferredProvider === 'gemini' // Change default provider here
98
- ? await streamGeminiChat(coreMessages, { model }, onFinishCallback)
99
- : await streamOpenAIChat(coreMessages, { model }, onFinishCallback);
100
-
101
- // ...
102
- ```
103
-
104
- ### 3. Add a New AI Provider
105
-
106
- To add a new provider (e.g., Anthropic Claude):
107
-
108
- 1. **Create an Adapter:** Create a new file in `packages/backend/convex/lib/ai/` (e.g., `anthropicAdapter.ts`) that conforms to the same interface as `openaiAdapter.ts` and `geminiAdapter.ts`. It should handle converting messages to the provider's format and processing the streamed response.
109
- 2. **Import and Integrate:** Import your new adapter into `packages/backend/convex/chatbotHttpActions.ts`.
110
- 3. **Add Logic:** Add logic to the HTTP action to select your new provider based on the `preferredProvider` parameter.
111
-
112
- ### 4. Customize Chat Message Appearance
113
-
114
- You can change the styling of chat messages by modifying the components in `apps/native/src/features/chatbot/components/`.
115
-
116
- - **Colors & Fonts:** For text messages, the `ChatMessageText` component uses `react-native-markdown-display`. You can adjust the styles in `apps/native/src/features/chatbot/utils/markdown-styles.ts`.
117
- - **Layout:** The overall layout of a message bubble is controlled by `ChatMessageWrapper` and `ChatMessageContent`.
118
-
119
- ## Backend (Convex)
120
-
121
- - **`packages/backend/convex/chatbotHttpActions.ts`:** This is the heart of the backend. It's a Convex `httpAction` that provides a public API endpoint for the frontend to connect to. It handles authentication, data transformation, and calling the appropriate AI service.
122
- - **`packages/backend/convex/chatbotHistory.ts`:** This file contains all the standard Convex queries and mutations for managing chat data in the database. This includes creating conversations, storing messages, and listing message history.
123
- - **`packages/backend/convex/lib/ai/`:** This directory contains the provider-specific adapters (`openaiAdapter.ts`, `geminiAdapter.ts`). These files are responsible for the direct interaction with the AI APIs, keeping the main HTTP action clean and provider-agnostic.
@@ -1,211 +0,0 @@
1
- # VibeFast Feature Reference Index
2
-
3
- ## Quick Reference Guide
4
-
5
- This index provides quick access to all VibeFast starter features and their documentation. Paths reference the monorepo layout (e.g. `apps/native/src/...` for Expo code, `packages/backend/convex/...` for Convex).
6
-
7
- ## Core Features Documentation
8
-
9
- ### 🚀 Quick Actions
10
-
11
- - **Reference**: `quick-actions-reference.md`
12
- - **Implementation**: `apps/native/src/features/quick-actions/`
13
- - **Core Service**: `apps/native/src/core/quick-actions/`
14
- - **Key Capabilities**: Home screen shortcuts, deep linking, platform-specific icons
15
- - **Integration Points**: Settings management, demo screen, root layout routing
16
-
17
- ### 🤖 AI Chatbot
18
-
19
- - **Reference**: `chatbot-reference.md`
20
- - **Implementation**: `apps/native/src/features/chatbot/`
21
- - **Key Capabilities**: Streaming responses, conversation history, multiple AI providers
22
- - **Integration Points**: AI SDK, Convex backend, message persistence
23
-
24
- ### 🎨 AI Image Generator
25
-
26
- - **Reference**: `image-generator-reference.md`
27
- - **Implementation**: `apps/native/src/features/image-generator/`
28
- - **Key Capabilities**: AI image generation, gallery management, sharing
29
- - **Integration Points**: Multiple AI providers, local storage, image manipulation
30
-
31
- ### 🔐 Authentication System
32
-
33
- - **Reference**: `authentication-reference.md`
34
- - **Implementation**: `apps/native/src/features/authentication/`
35
- - **Core Service**: `apps/native/src/core/auth/`
36
- - **Key Capabilities**: Email/password, guest mode, OTP verification, password reset
37
- - **Integration Points**: Convex Auth, session management, protected routes
38
-
39
- ### 💳 Payments & Subscriptions
40
-
41
- - **Reference**: `payments-reference.md`
42
- - **Implementation**: `apps/native/src/features/payments/`
43
- - **Core Service**: `apps/native/src/core/payments/`
44
- - **Key Capabilities**: RevenueCat integration, subscription management, paywall UI
45
- - **Integration Points**: In-app purchases, receipt validation, cross-platform
46
-
47
- ### 🎵 Audio Recorder
48
-
49
- - **Reference**: `audio-recorder-reference.md`
50
- - **Implementation**: `apps/native/src/features/audio-recorder/`
51
- - **Key Capabilities**: Voice recording, playback, file management
52
- - **Integration Points**: Expo Audio, file system, waveform visualization
53
-
54
- ### 📊 Data Visualization (Charts)
55
-
56
- - **Reference**: `charts-reference.md`
57
- - **Implementation**: `apps/native/src/features/charts/`
58
- - **Key Capabilities**: Interactive charts, data visualization, animations
59
- - **Integration Points**: D3 shapes, responsive design, export functionality
60
-
61
- ### 🖼️ Image Analysis
62
-
63
- - **Reference**: `image-analyzer-reference.md`
64
- - **Implementation**: `apps/native/src/features/image-analyzer/`
65
- - **Key Capabilities**: AI-powered image analysis, facial feature detection
66
- - **Integration Points**: Camera, image picker, AI processing
67
-
68
- ### 🎯 Quiz System
69
-
70
- - **Reference**: `quiz-reference.md`
71
- - **Implementation**: `apps/native/src/features/quiz/`
72
- - **Key Capabilities**: Interactive quizzes, scoring, progress tracking
73
- - **Integration Points**: State management, result persistence
74
-
75
- ### 📱 Push Notifications
76
-
77
- - **Reference**: `push-notifications-reference.md`
78
- - **Implementation**: `apps/native/src/features/notifications/`
79
- - **Key Capabilities**: Local and remote notifications, scheduling
80
- - **Integration Points**: Expo Notifications, permission handling
81
-
82
- ### ⚙️ Settings Management
83
-
84
- - **Reference**: `settings-reference.md`
85
- - **Implementation**: `apps/native/src/features/settings/`
86
- - **Key Capabilities**: App configuration, theme switching, language selection
87
- - **Integration Points**: MMKV storage, i18n, system preferences
88
-
89
- ### 📈 Tracker App
90
-
91
- - **Reference**: `tracker-app-reference.md`
92
- - **Implementation**: `apps/native/src/features/tracker/`
93
- - **Key Capabilities**: Calorie tracking, nutrition monitoring, progress visualization
94
- - **Integration Points**: Data persistence, chart integration
95
-
96
- ### 🎓 Onboarding
97
-
98
- - **Reference**: `onboarding-reference.md`
99
- - **Implementation**: `apps/native/src/features/onboarding/`
100
- - **Key Capabilities**: Multi-step onboarding, progress tracking, skip functionality
101
- - **Integration Points**: First-time user detection, navigation flow
102
-
103
- ## Architecture Integration Points
104
-
105
- ### Core Services (`apps/native/src/core/`)
106
-
107
- All features integrate through abstraction layers:
108
-
109
- - **Authentication**: `apps/native/src/core/auth/`
110
- - **Analytics**: `apps/native/src/core/analytics/`
111
- - **Payments**: `apps/native/src/core/payments/`
112
- - **Quick Actions**: `apps/native/src/core/quick-actions/`
113
- - **Logging**: `apps/native/src/core/logging/`
114
- - **Cache**: `apps/native/src/core/cache/`
115
-
116
- ### UI Component System
117
-
118
- Features build upon the established UI hierarchy:
119
-
120
- - **Base Components**: `apps/native/src/components/ui/`
121
- - **Advanced Components**: `apps/native/src/components/advanced-ui/`
122
- - **Feature Components**: Within each feature directory
123
-
124
- ### Navigation Integration
125
-
126
- All features integrate with Expo Router:
127
-
128
- - **Tab Navigation**: `apps/native/src/app/(tabs)/`
129
- - **Feature Routes**: `apps/native/src/app/(root)/(protected)/`
130
- - **Authentication Routes**: `apps/native/src/app/(routes)/(auth)/`
131
-
132
- ### Backend Integration (Convex)
133
-
134
- Features connect to Convex backend:
135
-
136
- - **Schema**: `packages/backend/convex/schema.ts`
137
- - **Queries**: Feature-specific query functions
138
- - **Mutations**: Feature-specific mutation functions
139
- - **Actions**: Server-side logic and external API calls
140
-
141
- ## Development Guidelines
142
-
143
- ### When Extending Features
144
-
145
- 1. **Check Existing Implementation**: Review the feature's reference documentation
146
- 2. **Identify Reuse Opportunities**: Look for existing patterns and components
147
- 3. **Follow Architecture Patterns**: Maintain consistency with established patterns
148
- 4. **Update Documentation**: Keep feature documentation current
149
-
150
- ### When Creating New Features
151
-
152
- 1. **Follow Feature Structure**: Use established directory patterns
153
- 2. **Implement Core Services**: Create abstraction layers for external dependencies
154
- 3. **Build on UI System**: Extend existing UI components
155
- 4. **Add Navigation**: Integrate with Expo Router structure
156
- 5. **Document Thoroughly**: Create comprehensive reference documentation
157
-
158
- ### Integration Best Practices
159
-
160
- - **Modularity**: Keep features self-contained and loosely coupled
161
- - **Abstraction**: Use core services for external integrations
162
- - **Type Safety**: Maintain TypeScript throughout
163
- - **Testing**: Include comprehensive test coverage
164
- - **Performance**: Optimize for mobile constraints
165
- - **Accessibility**: Ensure inclusive design
166
-
167
- ## Quick Access Commands
168
-
169
- For agents working with features:
170
-
171
- ### Architect Agent
172
-
173
- - Reference `features-overview.md` for system integration
174
- - Use feature references for extension planning
175
- - Identify reuse opportunities across features
176
-
177
- ### SM Agent
178
-
179
- - Reference feature documentation for story context
180
- - Identify existing patterns for reuse analysis
181
- - Include feature integration requirements in stories
182
-
183
- ### Dev Agent
184
-
185
- - Use feature references for implementation guidance
186
- - Follow established patterns and conventions
187
- - Leverage existing components and services
188
-
189
- ### PO Agent
190
-
191
- - Validate stories against feature documentation
192
- - Ensure proper integration with existing features
193
- - Check for consistency with established patterns
194
-
195
- ## Documentation Maintenance
196
-
197
- This index should be updated when:
198
-
199
- - New features are added to the starter
200
- - Existing features are significantly modified
201
- - New integration points are established
202
- - Architecture patterns change
203
-
204
- Each feature reference document should include:
205
-
206
- - Implementation location and structure
207
- - Key capabilities and use cases
208
- - Integration points and dependencies
209
- - API reference and usage examples
210
- - Best practices and guidelines
211
- - Troubleshooting information
@@ -1,221 +0,0 @@
1
- # Features Overview
2
-
3
- ## Overview
4
-
5
- VibeFast comes with a comprehensive set of pre-built features that demonstrate best practices and provide a solid foundation for mobile app development. Each feature is implemented following the VibeFast architecture principles with proper abstraction layers, type safety, and modular design. Paths referenced below follow the monorepo layout (`apps/native/src/...`).
6
-
7
- ## Core Features
8
-
9
- ### 🚀 Quick Actions
10
-
11
- **Location**: `apps/native/src/features/quick-actions/`
12
-
13
- Home screen shortcuts for iOS and Android that provide instant access to key app functionality.
14
-
15
- **Key Components:**
16
-
17
- - **Core Adapter**: `apps/native/src/core/quick-actions/` - Abstraction layer over expo-quick-actions
18
- - **Hooks**: React hooks for routing and action management
19
- - **Manager**: Utility class for programmatic quick actions control
20
- - **Demo**: Interactive demo component showcasing all functionality
21
-
22
- **Features:**
23
-
24
- - ✅ Platform Support: iOS (4 actions max) and Android (variable max)
25
- - ✅ Icon Flexibility: System icons, SF Symbols, custom assets
26
- - ✅ Deep Linking: Automatic navigation via Expo Router
27
- - ✅ Management Tools: Add, remove, reset actions programmatically
28
- - ✅ Error Handling: Graceful degradation on unsupported devices
29
-
30
- **Usage:**
31
-
32
- ```tsx
33
- // Basic setup (auto-configured in root layout)
34
- useQuickActionRouting();
35
- useSetupQuickActions(DEFAULT_QUICK_ACTIONS);
36
-
37
- // Programmatic management
38
- await quickActionsManager.setActions([...]);
39
- await quickActionsManager.resetToDefaults();
40
- ```
41
-
42
- **Access Points:**
43
-
44
- - Settings → Quick Actions (management interface)
45
- - Demo screen at `/(root)/(protected)/quick-actions-demo/`
46
- - Long-press app icon on device to test
47
-
48
- ### 🤖 AI Chatbot
49
-
50
- **Location**: `apps/native/src/features/chatbot/`
51
-
52
- AI-powered conversational interface with streaming responses and conversation history.
53
-
54
- **Features:**
55
-
56
- - Real-time streaming responses
57
- - Conversation history persistence
58
- - Multiple AI provider support (OpenAI, Google, Replicate)
59
- - Message copying and reporting
60
- - Suggested conversation starters
61
-
62
- ### 🎨 AI Image Generator
63
-
64
- **Location**: `apps/native/src/features/image-generator/`
65
-
66
- AI-powered image generation with gallery management and sharing capabilities.
67
-
68
- **Features:**
69
-
70
- - Multiple AI model support
71
- - Image gallery with local storage
72
- - Share and export functionality
73
- - Batch generation support
74
- - Image metadata tracking
75
-
76
- ### 🔐 Authentication System
77
-
78
- **Location**: `apps/native/src/features/authentication/`
79
-
80
- Complete authentication flow with multiple sign-in options and security features.
81
-
82
- **Features:**
83
-
84
- - Email/password authentication
85
- - Guest mode support
86
- - OTP verification
87
- - Password reset flow
88
- - Session management with Convex Auth
89
-
90
- ### 📊 Analytics & Tracking
91
-
92
- **Location**: `apps/native/src/features/analytics/`
93
-
94
- Comprehensive analytics integration with privacy-focused tracking.
95
-
96
- **Features:**
97
-
98
- - PostHog integration
99
- - Event tracking
100
- - User behavior analytics
101
- - Performance monitoring
102
- - Privacy-compliant data collection
103
-
104
- ### 💳 Payment & Subscriptions
105
-
106
- **Location**: `apps/native/src/features/payments/`
107
-
108
- Complete payment and subscription management with RevenueCat integration.
109
-
110
- **Features:**
111
-
112
- - Subscription management
113
- - In-app purchases
114
- - Paywall UI components
115
- - Receipt validation
116
- - Cross-platform purchase restoration
117
-
118
- ### 🎵 Audio Recording
119
-
120
- **Location**: `apps/native/src/features/audio-recorder/`
121
-
122
- Voice note recording with playback and management capabilities.
123
-
124
- **Features:**
125
-
126
- - High-quality audio recording
127
- - Playback controls
128
- - Audio file management
129
- - Waveform visualization
130
- - Export functionality
131
-
132
- ### 📈 Data Visualization
133
-
134
- **Location**: `apps/native/src/features/charts/`
135
-
136
- Interactive charts and data visualization components.
137
-
138
- **Features:**
139
-
140
- - Multiple chart types
141
- - Interactive data exploration
142
- - Responsive design
143
- - Animation support
144
- - Export capabilities
145
-
146
- ## Feature Architecture
147
-
148
- Each feature follows the VibeFast architecture pattern:
149
-
150
- ```
151
- apps/native/src/features/[feature-name]/
152
- ├── components/ # Feature-specific UI components
153
- ├── hooks/ # Feature-specific React hooks
154
- ├── services/ # Business logic and API calls
155
- ├── types/ # TypeScript type definitions
156
- ├── utils/ # Feature-specific utilities
157
- └── index.ts # Barrel exports
158
- ```
159
-
160
- ## Integration Points
161
-
162
- ### Core Services
163
-
164
- All features integrate with core services through abstraction layers:
165
-
166
- - **Authentication**: `apps/native/src/core/auth/`
167
- - **Analytics**: `apps/native/src/core/analytics/`
168
- - **Payments**: `apps/native/src/core/payments/`
169
- - **Quick Actions**: `apps/native/src/core/quick-actions/`
170
-
171
- ### UI Components
172
-
173
- Features build upon the core UI component system:
174
-
175
- - **Base Components**: `apps/native/src/components/ui/`
176
- - **Advanced Components**: `apps/native/src/components/advanced-ui/`
177
-
178
- ### Navigation
179
-
180
- All features integrate seamlessly with Expo Router:
181
-
182
- - **Tab Navigation**: `apps/native/src/app/(tabs)/`
183
- - **Feature Routes**: `apps/native/src/app/(root)/(protected)/`
184
-
185
- ## Development Guidelines
186
-
187
- ### Adding New Features
188
-
189
- 1. **Create Feature Directory**: Follow the established structure in `apps/native/src/features/`
190
- 2. **Implement Core Logic**: Use proper abstraction layers for external services
191
- 3. **Add UI Components**: Build upon existing UI component system
192
- 4. **Create Routes**: Add navigation routes in the Expo Router tree under `apps/native/src/app/`
193
- 5. **Add Tests**: Include comprehensive test coverage
194
- 6. **Update Documentation**: Document the new feature in this file
195
-
196
- ### Best Practices
197
-
198
- - **Modularity**: Keep features self-contained and loosely coupled
199
- - **Type Safety**: Use TypeScript throughout for better developer experience
200
- - **Error Handling**: Implement comprehensive error handling and user feedback
201
- - **Performance**: Optimize for mobile performance and battery life
202
- - **Accessibility**: Ensure all features are accessible to users with disabilities
203
- - **Internationalization**: Support multiple languages from the start
204
-
205
- ## Testing Strategy
206
-
207
- Each feature includes:
208
-
209
- - **Unit Tests**: For individual functions and components
210
- - **Integration Tests**: For feature workflows and API interactions
211
- - **E2E Tests**: For complete user journeys using Maestro
212
- - **Performance Tests**: For critical user paths and animations
213
-
214
- ## Documentation
215
-
216
- Detailed documentation for each feature can be found in:
217
-
218
- - **Feature Guides**: `vf-agent/data/knowledge_base/starter-docs/[feature-name]-reference.md`
219
- - **API Documentation**: Inline code documentation
220
- - **Usage Examples**: In feature demo components inside `apps/native/src/features/[feature]/demo`
221
- - **Architecture Decisions**: In respective feature directories
@@ -1,118 +0,0 @@
1
- # Image Analyzer Reference
2
-
3
- > Frontend paths reference the Expo workspace (`apps/native/src/...`); backend paths reference `packages/backend/convex/...`.
4
-
5
- ## Overview
6
-
7
- The Image Analyzer is a powerful feature that allows users to upload images and receive AI-driven feedback based on specific goals. It's an asynchronous, multi-step process orchestrated by Convex actions, mutations, and its scheduler.
8
-
9
- ### Core Technologies
10
-
11
- - **[Convex Actions & Mutations](https://docs.convex.dev/functions/actions):** The entire workflow is managed by Convex functions. A public `action` serves as the entry point, which then calls `internalMutation`s to create records and schedules an `internalAction` for the heavy lifting.
12
- - **[Convex Scheduler](https://docs.convex.dev/scheduling):** Used to immediately queue a background job (`performAiAnalysis`) after the initial user request. This ensures the user gets an immediate response while the AI processing happens asynchronously.
13
- - **[Convex File Storage](https://docs.convex.dev/file-storage):** Images uploaded by the user are stored securely in Convex's file storage.
14
- - **[AI Providers (e.g., OpenAI, Gemini)](https://openai.com/):** The actual analysis is performed by a vision-capable AI model, which is called from the background action. The implementation is abstracted in `convex/lib/ai/imageAnalysisAdapter.ts`.
15
-
16
- ## Getting Started
17
-
18
- The feature is ready to use. The primary setup involves adding the necessary AI provider API keys to your environment variables.
19
-
20
- ### Environment Variables
21
-
22
- Add the API key for your chosen vision model (e.g., GPT-4o or Gemini Vision) to your `.env.local` file:
23
-
24
- ```bash
25
- # For OpenAI
26
- OPENAI_API_KEY="sk-..."
27
-
28
- # For Google Gemini
29
- GEMINI_API_KEY="..."
30
- ```
31
-
32
- ### Image Analysis Flow
33
-
34
- 1. **User Upload & Preferences:** The user selects up to 5 images and chooses their analysis goal (e.g., "Dating Profile") and feedback style (e.g., "Direct") using the `AnalysisForm` component.
35
- 2. **Action Trigger:** The `useImageAnalyzer` hook is called. It converts the selected images to base64 strings and calls the public Convex action `analyzeImages`.
36
- 3. **Initial Processing (Action):**
37
- - The `analyzeImages` action authenticates the user.
38
- - It stores the uploaded images in Convex file storage, getting back storage IDs.
39
- - It calls an internal mutation (`createAnalysisRecord`) to create a new document in the `imageAnalyses` table with a `status` of `"processing"`.
40
- - It schedules the `performAiAnalysis` internal action to run immediately in the background.
41
- - It returns the `analysisId` to the client, which then navigates to the results page.
42
- 4. **Background AI Analysis (Scheduled Action):**
43
- - The `performAiAnalysis` action wakes up.
44
- - It retrieves the analysis record and gets the URLs for the stored images.
45
- - It calls the AI provider (e.g., `generateImageAnalysis`) with the image data and user preferences.
46
- - The AI model returns a structured analysis.
47
- 5. **Update Record:**
48
- - The action calls the `updateAnalysisResults` internal mutation to update the analysis record with the AI-generated `results` and sets the `status` to `"completed"` or `"failed"`.
49
- 6. **Display Results:** The frontend, which is polling or subscribed to the `getAnalysisById` query, automatically updates to show the completed analysis in the `AnalysisDetailView` component.
50
-
51
- ## Key Components & Hooks
52
-
53
- ### Core Components
54
-
55
- - `AnalysisForm`: The main form for starting a new analysis, combining the image uploader and preference selectors.
56
- - `ImageUploadArea`: A component that allows users to select multiple images and see previews.
57
- - `GoalSelector` & `FeedbackStyleSelector`: Reusable form components for setting analysis preferences.
58
- - `AnalysisDetailView`: Displays the final results of an analysis, including the original images and the formatted AI feedback.
59
- - `AnalysisHistoryList`: Shows a list of the user's past analyses, their status, and allows navigation to the detail view.
60
- - `AnalysisInProgress`: A loading screen shown while the backend is processing the analysis.
61
-
62
- ### Core Hooks
63
-
64
- - `useImageAnalyzer`: The primary hook for the feature. It handles image-to-base64 conversion and calls the main `analyzeImages` action. It also handles navigation and user feedback via toasts.
65
- - `useImageSelection`: Manages the state of selected images on the client, including picking and removing images.
66
- - `useImageAnalysis`: Fetches a single, specific analysis record from the database, used by the detail view.
67
- - `useImageAnalysisHistory`: Fetches all analysis records for the current user.
68
-
69
- ## How-To Guides
70
-
71
- ### 1. Customize the AI Analysis Prompt
72
-
73
- The prompts sent to the AI model are located in the adapter file. You can modify the prompt to change the structure of the feedback.
74
-
75
- - Navigate to `convex/lib/ai/imageAnalysisAdapter.ts`.
76
- - Locate the `generateImageAnalysis` function.
77
- - Modify the `systemPrompt` or the user message content to tailor the AI's response.
78
-
79
- ### 2. Add a New Analysis Goal
80
-
81
- 1. **Update Frontend Component:** In `apps/native/src/features/image-analyzer/components/goal-selector.tsx`, add the new goal to the `goals` array.
82
-
83
- ```tsx
84
- const goals = [
85
- { value: 'dating', label: 'Dating Profile Pictures' },
86
- { value: 'professional', label: 'Professional Headshots' },
87
- { value: 'social', label: 'Social Media Presence' },
88
- { value: 'new_goal', label: 'My New Goal' }, // Add new goal here
89
- ];
90
- ```
91
-
92
- 2. **Update Zod Schema:** In `apps/native/src/features/image-analyzer/utils/analysis-schemas.ts`, add the new goal to the enum to ensure validation passes.
93
-
94
- ```ts
95
- export const AnalysisPreferencesSchema = z.object({
96
- goal: z.enum(['dating', 'professional', 'social', 'new_goal']), // Add here
97
- // ...
98
- });
99
- ```
100
-
101
- 3. **Update Backend Prompt (Optional):** If your new goal requires a different AI prompt, add conditional logic in the `imageAnalysisAdapter.ts` to use a different system message based on the `preferences.goal` value.
102
-
103
- ### 3. Change the Result Display
104
-
105
- The `AnalysisResultDisplay` component is responsible for rendering the AI's feedback. Currently, it handles both plain string and simple key-value object results.
106
-
107
- - To customize the display, edit `apps/native/src/features/image-analyzer/components/analysis-result-display.tsx`.
108
- - You can add custom rendering logic based on the structure of the `results` object you expect from your AI prompt.
109
-
110
- ## Backend (Convex)
111
-
112
- - **`imageAnalysisFunctions.ts`:** This file contains the entire backend logic for the feature.
113
- - `analyzeImages` (action): The public entry point.
114
- - `createAnalysisRecord` (internalMutation): Creates the initial record in the database.
115
- - `performAiAnalysis` (internalAction): The background job that does the core AI work.
116
- - `updateAnalysisResults` (internalMutation): Updates the record with the final results or an error message.
117
- - `getAnalysisById` / `getImageAnalysis` (queries): Public queries for the frontend to fetch analysis data.
118
- - **`lib/ai/imageAnalysisAdapter.ts`:** This file abstracts the interaction with the AI vision model. It's responsible for constructing the correct prompt and parsing the response. This is the main file to modify when changing AI providers or prompt logic.