vibefast-cli 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (892) hide show
  1. package/2/.claude/agents/architect.md +74 -0
  2. package/2/.claude/agents/convex-reviewer.md +267 -0
  3. package/2/.claude/agents/debug-detective.md +62 -0
  4. package/2/.claude/agents/learner.md +64 -0
  5. package/2/.claude/agents/perf-optimizer.md +71 -0
  6. package/2/.claude/agents/security-researcher.md +42 -0
  7. package/2/.claude/agents/tech-researcher.md +46 -0
  8. package/2/.claude/agents/ux-designer.md +45 -0
  9. package/2/.claude/commands/create-app-design.md +279 -0
  10. package/2/.claude/commands/create-prd-interactive.md +113 -0
  11. package/2/.claude/commands/create-prd.md +111 -0
  12. package/2/.claude/commands/create-tech-stack.md +345 -0
  13. package/2/.claude/commands/update-app-design.md +298 -0
  14. package/2/.claude/commands/update-project-structure.md +14 -0
  15. package/2/.claude/commands/update-tech-stack.md +325 -0
  16. package/2/.claude/docs/CONVEX_FEATURES_PLAN.md +249 -0
  17. package/2/.claude/docs/app-design-document.md +0 -0
  18. package/2/.claude/docs/project-status.md +25 -0
  19. package/2/.claude/docs/project-structure.md +7 -0
  20. package/2/.claude/docs/tech-stack.md +157 -0
  21. package/2/.claude/scripts/tree.sh +70 -0
  22. package/2/.claude/settings.json +30 -0
  23. package/2/.cursor/commands/code-review-high.md +190 -0
  24. package/2/.cursorignore +3 -0
  25. package/2/.github/ISSUE_TEMPLATE.md +13 -0
  26. package/2/.github/PULL_REQUEST_TEMPLATE.md +23 -0
  27. package/2/.github/actions/eas-build/action.yml +85 -0
  28. package/2/.github/actions/setup-jdk-generate-apk/action.yml +48 -0
  29. package/2/.github/actions/setup-node-pnpm-install/action.yml +29 -0
  30. package/2/.github/scripts/expo-doctor.sh +26 -0
  31. package/2/.github/workflows/compress-images.yml +48 -0
  32. package/2/.github/workflows/e2e-android-eas-build.yml +111 -0
  33. package/2/.github/workflows/e2e-android-maestro.yml +52 -0
  34. package/2/.github/workflows/e2e-android.yml +119 -0
  35. package/2/.github/workflows/eas-build-prod.yml +43 -0
  36. package/2/.github/workflows/eas-build-qa.yml +47 -0
  37. package/2/.github/workflows/expo-doctor.yml +61 -0
  38. package/2/.github/workflows/lint-ts.yml +49 -0
  39. package/2/.github/workflows/new-app-version.yml +65 -0
  40. package/2/.github/workflows/new-github-release.yml +34 -0
  41. package/2/.github/workflows/stale.yml +24 -0
  42. package/2/.github/workflows/test.yml +50 -0
  43. package/2/.github/workflows/type-check.yml +54 -0
  44. package/2/.husky/commit-msg +1 -0
  45. package/2/.husky/common.sh +8 -0
  46. package/2/.husky/post-merge +18 -0
  47. package/2/.husky/pre-commit +24 -0
  48. package/2/.prettierignore +14 -0
  49. package/2/.prettierrc.json +10 -0
  50. package/2/.vibefast/README.md +59 -0
  51. package/2/.vibefast/config.json +4 -0
  52. package/2/.vibefast/journal.json +234 -0
  53. package/2/.vibefast/starter.json +5 -0
  54. package/2/AGENTS.md +48 -0
  55. package/2/LICENSE +21 -0
  56. package/2/README.md +127 -0
  57. package/2/apps/native/__mocks__/bottom-sheet.js +6 -0
  58. package/2/apps/native/__mocks__/expo-router.js +16 -0
  59. package/2/apps/native/__mocks__/react-native-gesture-handler.ts +17 -0
  60. package/2/apps/native/app-env.d.ts +2 -0
  61. package/2/apps/native/app.config.ts +167 -0
  62. package/2/apps/native/assets/adaptive-icon.png +0 -0
  63. package/2/apps/native/assets/favicon.png +0 -0
  64. package/2/apps/native/assets/features/image-analyzer/front.jpg +0 -0
  65. package/2/apps/native/assets/features/image-analyzer/side.jpg +0 -0
  66. package/2/apps/native/assets/features/image-analyzer/threeQuarter.jpg +0 -0
  67. package/2/apps/native/assets/fonts/Inter.ttf +0 -0
  68. package/2/apps/native/assets/fonts/SF-Pro-Display-Bold.otf +0 -0
  69. package/2/apps/native/assets/fonts/SF-Pro-Display-Medium.otf +0 -0
  70. package/2/apps/native/assets/fonts/SF-Pro-Display-Regular.otf +0 -0
  71. package/2/apps/native/assets/fonts/SF-Pro-Display-Semibold.otf +0 -0
  72. package/2/apps/native/assets/fonts/SpaceMono-Regular.ttf +0 -0
  73. package/2/apps/native/assets/icon.png +0 -0
  74. package/2/apps/native/assets/images/cover-image.png +0 -0
  75. package/2/apps/native/assets/lottie-animations/onboarding-1.json +6504 -0
  76. package/2/apps/native/assets/lottie-animations/onboarding-2.json +1993 -0
  77. package/2/apps/native/assets/lottie-animations/onboarding-3.json +50159 -0
  78. package/2/apps/native/assets/lottie-animations/onboarding-4.json +735 -0
  79. package/2/apps/native/assets/lottie-animations/onboarding-6.json +2167 -0
  80. package/2/apps/native/assets/splash-icon.png +0 -0
  81. package/2/apps/native/babel.config.js +39 -0
  82. package/2/apps/native/eas.json +75 -0
  83. package/2/apps/native/env.js +196 -0
  84. package/2/apps/native/global.css +51 -0
  85. package/2/apps/native/index.ts +5 -0
  86. package/2/apps/native/jest-setup.ts +7 -0
  87. package/2/apps/native/jest.config.js +72 -0
  88. package/2/apps/native/metro.config.js +85 -0
  89. package/2/apps/native/nativewind-env.d.ts +1 -0
  90. package/2/apps/native/package.json +232 -0
  91. package/2/apps/native/scripts/DRY_RUN_REPORT.md +0 -0
  92. package/2/apps/native/scripts/QUICK_START.md +76 -0
  93. package/2/apps/native/scripts/README.md +187 -0
  94. package/2/apps/native/scripts/convex-setup.js +48 -0
  95. package/2/apps/native/scripts/download-vosk-model.mjs +121 -0
  96. package/2/apps/native/scripts/genrate-apk-and-install +39 -0
  97. package/2/apps/native/scripts/i18next-syntax-validation.js +23 -0
  98. package/2/apps/native/scripts/starter-setup.mjs +246 -0
  99. package/2/apps/native/src/api-client/auth.ts +68 -0
  100. package/2/apps/native/src/api-client/chatbot.ts +83 -0
  101. package/2/apps/native/src/api-client/client.ts +4 -0
  102. package/2/apps/native/src/api-client/image-analyzer.ts +62 -0
  103. package/2/apps/native/src/api-client/image-generator.ts +34 -0
  104. package/2/apps/native/src/api-client/index.ts +27 -0
  105. package/2/apps/native/src/api-client/payments.ts +44 -0
  106. package/2/apps/native/src/api-client/reporting.ts +29 -0
  107. package/2/apps/native/src/api-client/shared.ts +43 -0
  108. package/2/apps/native/src/app/(root)/(protected)/(tabs)/_layout.tsx +166 -0
  109. package/2/apps/native/src/app/(root)/(protected)/(tabs)/index.tsx +174 -0
  110. package/2/apps/native/src/app/(root)/(protected)/(tabs)/profile.tsx +320 -0
  111. package/2/apps/native/src/app/(root)/(protected)/(tabs)/settings.tsx +344 -0
  112. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/_layout.tsx +198 -0
  113. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/accordion.tsx +60 -0
  114. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/advanced.tsx +24 -0
  115. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/avatar.tsx +154 -0
  116. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/badge-chips-toggle.tsx +81 -0
  117. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/buttons.tsx +24 -0
  118. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/charts.tsx +3 -0
  119. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/date-picker.tsx +120 -0
  120. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/file-picker.tsx +133 -0
  121. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/gallery-video.tsx +119 -0
  122. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/index.tsx +69 -0
  123. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/inputs-stepper.tsx +78 -0
  124. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/picker-dropdown.tsx +56 -0
  125. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/popover-bottomsheet.tsx +229 -0
  126. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/progress.tsx +38 -0
  127. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/searchbar.tsx +70 -0
  128. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/sliders.tsx +93 -0
  129. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/spinner.tsx +80 -0
  130. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/switch.tsx +47 -0
  131. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/table.tsx +352 -0
  132. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/tabs-timeline.tsx +122 -0
  133. package/2/apps/native/src/app/(root)/(protected)/_layout.tsx +143 -0
  134. package/2/apps/native/src/app/(root)/(protected)/analysis/[type]/_layout.tsx +5 -0
  135. package/2/apps/native/src/app/(root)/(protected)/analysis/[type]/analysis-options.tsx +50 -0
  136. package/2/apps/native/src/app/(root)/(protected)/analysis/[type]/camera.tsx +2 -0
  137. package/2/apps/native/src/app/(root)/(protected)/analysis/[type]/index.tsx +50 -0
  138. package/2/apps/native/src/app/(root)/(protected)/analysis/[type]/loading.tsx +50 -0
  139. package/2/apps/native/src/app/(root)/(protected)/analysis/[type]/results.tsx +2 -0
  140. package/2/apps/native/src/app/(root)/(protected)/analysis/[type]/trait-details.tsx +3 -0
  141. package/2/apps/native/src/app/(root)/(protected)/audio-recorder/index.tsx +5 -0
  142. package/2/apps/native/src/app/(root)/(protected)/charts/index.tsx +6 -0
  143. package/2/apps/native/src/app/(root)/(protected)/chatbot/index.tsx +2 -0
  144. package/2/apps/native/src/app/(root)/(protected)/image-generator/gallery.tsx +3 -0
  145. package/2/apps/native/src/app/(root)/(protected)/image-generator/index.tsx +3 -0
  146. package/2/apps/native/src/app/(root)/(protected)/paywall/index.tsx +74 -0
  147. package/2/apps/native/src/app/(root)/(protected)/paywall/local.tsx +25 -0
  148. package/2/apps/native/src/app/(root)/(protected)/paywall/remote.tsx +23 -0
  149. package/2/apps/native/src/app/(root)/(protected)/quick-actions-demo/index.tsx +32 -0
  150. package/2/apps/native/src/app/(root)/(protected)/quiz/index.tsx +47 -0
  151. package/2/apps/native/src/app/(root)/(protected)/test-wake-word.tsx +214 -0
  152. package/2/apps/native/src/app/(root)/(protected)/tracker-app/index.tsx +1 -0
  153. package/2/apps/native/src/app/(root)/(protected)/voice-bot/index.tsx +27 -0
  154. package/2/apps/native/src/app/(root)/(public)/(auth)/_layout.tsx +44 -0
  155. package/2/apps/native/src/app/(root)/(public)/(auth)/forgot-password.tsx +185 -0
  156. package/2/apps/native/src/app/(root)/(public)/(auth)/login.tsx +219 -0
  157. package/2/apps/native/src/app/(root)/(public)/(auth)/otp-verification.tsx +369 -0
  158. package/2/apps/native/src/app/(root)/(public)/(auth)/reset-password.tsx +247 -0
  159. package/2/apps/native/src/app/(root)/(public)/(auth)/signup.tsx +207 -0
  160. package/2/apps/native/src/app/(root)/(public)/_layout.tsx +60 -0
  161. package/2/apps/native/src/app/(root)/(public)/onboarding/demo-one.tsx +5 -0
  162. package/2/apps/native/src/app/(root)/(public)/onboarding/demo-two.tsx +52 -0
  163. package/2/apps/native/src/app/(root)/(public)/onboarding/index.tsx +82 -0
  164. package/2/apps/native/src/app/(root)/_layout.tsx +30 -0
  165. package/2/apps/native/src/app/+html.tsx +46 -0
  166. package/2/apps/native/src/app/[...messing].tsx +24 -0
  167. package/2/apps/native/src/app/_layout.tsx +56 -0
  168. package/2/apps/native/src/app/tsconfig.json +3 -0
  169. package/2/apps/native/src/components/advanced-ui/buttons/demo.tsx +19 -0
  170. package/2/apps/native/src/components/advanced-ui/buttons/glowing-button.tsx +366 -0
  171. package/2/apps/native/src/components/advanced-ui/chip/animated-chip.tsx +118 -0
  172. package/2/apps/native/src/components/advanced-ui/chip/chip.tsx +49 -0
  173. package/2/apps/native/src/components/advanced-ui/chip/demo.tsx +191 -0
  174. package/2/apps/native/src/components/advanced-ui/chip/types.ts +21 -0
  175. package/2/apps/native/src/components/advanced-ui/progress-bars/animated-progress-bar.tsx +182 -0
  176. package/2/apps/native/src/components/advanced-ui/progress-bars/dropdown-picker-page.tsx +124 -0
  177. package/2/apps/native/src/components/advanced-ui/progress-bars/progress-circle-page.tsx +111 -0
  178. package/2/apps/native/src/components/advanced-ui/progress-bars/progress-circle.tsx +223 -0
  179. package/2/apps/native/src/components/advanced-ui/sliders/swipe-slider-page.tsx +203 -0
  180. package/2/apps/native/src/components/advanced-ui/sliders/swipe-slider.tsx +266 -0
  181. package/2/apps/native/src/components/advanced-ui/stepper/children/button/stepper-button.tsx +96 -0
  182. package/2/apps/native/src/components/advanced-ui/stepper/children/button/types.ts +16 -0
  183. package/2/apps/native/src/components/advanced-ui/stepper/children/content/stepper-content.tsx +19 -0
  184. package/2/apps/native/src/components/advanced-ui/stepper/children/content/types.ts +6 -0
  185. package/2/apps/native/src/components/advanced-ui/stepper/children/value/stepper-value.tsx +43 -0
  186. package/2/apps/native/src/components/advanced-ui/stepper/children/value/types.ts +25 -0
  187. package/2/apps/native/src/components/advanced-ui/stepper/context/stepper-context.ts +19 -0
  188. package/2/apps/native/src/components/advanced-ui/stepper/context/types.ts +9 -0
  189. package/2/apps/native/src/components/advanced-ui/stepper/demo.tsx +346 -0
  190. package/2/apps/native/src/components/advanced-ui/stepper/index.ts +4 -0
  191. package/2/apps/native/src/components/advanced-ui/stepper/stepper.tsx +96 -0
  192. package/2/apps/native/src/components/advanced-ui/stepper/types.ts +13 -0
  193. package/2/apps/native/src/components/advanced-ui/switch/animated-switch.tsx +312 -0
  194. package/2/apps/native/src/components/advanced-ui/switch/demo.tsx +851 -0
  195. package/2/apps/native/src/components/advanced-ui/switch/types.ts +32 -0
  196. package/2/apps/native/src/components/advanced-ui/timeline/demo.tsx +444 -0
  197. package/2/apps/native/src/components/advanced-ui/timeline/timeline-view.tsx +355 -0
  198. package/2/apps/native/src/components/advanced-ui/timeline/types.ts +31 -0
  199. package/2/apps/native/src/components/analytics/navigation-tracker.tsx +10 -0
  200. package/2/apps/native/src/components/demo/advanced-ui-components.tsx +46 -0
  201. package/2/apps/native/src/components/demo/buttons-demo.tsx +56 -0
  202. package/2/apps/native/src/components/demo/colors-demo.tsx +52 -0
  203. package/2/apps/native/src/components/demo/dropdown-picker-demo.tsx +274 -0
  204. package/2/apps/native/src/components/demo/inputs-demo.tsx +99 -0
  205. package/2/apps/native/src/components/demo/notification-demo.tsx +434 -0
  206. package/2/apps/native/src/components/demo/title-demo.tsx +16 -0
  207. package/2/apps/native/src/components/demo/toast-demo.tsx +81 -0
  208. package/2/apps/native/src/components/demo/typography-demo.tsx +28 -0
  209. package/2/apps/native/src/components/performance/render-performance-monitor.tsx +36 -0
  210. package/2/apps/native/src/components/ui/accordion.tsx +138 -0
  211. package/2/apps/native/src/components/ui/avatar.tsx +66 -0
  212. package/2/apps/native/src/components/ui/badge.tsx +68 -0
  213. package/2/apps/native/src/components/ui/bottom-sheet.tsx +61 -0
  214. package/2/apps/native/src/components/ui/colors.js +290 -0
  215. package/2/apps/native/src/components/ui/core/button.tsx +317 -0
  216. package/2/apps/native/src/components/ui/core/card.tsx +40 -0
  217. package/2/apps/native/src/components/ui/core/checkbox.tsx +264 -0
  218. package/2/apps/native/src/components/ui/core/feature-button.tsx +162 -0
  219. package/2/apps/native/src/components/ui/core/focus-aware-status-bar.tsx +21 -0
  220. package/2/apps/native/src/components/ui/core/image.tsx +30 -0
  221. package/2/apps/native/src/components/ui/core/inputs/floating-text-input.tsx +369 -0
  222. package/2/apps/native/src/components/ui/core/inputs/input-otp.tsx +304 -0
  223. package/2/apps/native/src/components/ui/core/inputs/input.tsx +373 -0
  224. package/2/apps/native/src/components/ui/core/list.tsx +60 -0
  225. package/2/apps/native/src/components/ui/core/navigation/animated-header.tsx +87 -0
  226. package/2/apps/native/src/components/ui/core/navigation/screen-footer.tsx +67 -0
  227. package/2/apps/native/src/components/ui/core/overlays/dropdown.tsx +290 -0
  228. package/2/apps/native/src/components/ui/core/overlays/full-screen-loading.tsx +15 -0
  229. package/2/apps/native/src/components/ui/core/overlays/modal-keyboard-aware-scroll-view.tsx +46 -0
  230. package/2/apps/native/src/components/ui/core/overlays/modal.tsx +247 -0
  231. package/2/apps/native/src/components/ui/core/pagination-dots.tsx +231 -0
  232. package/2/apps/native/src/components/ui/core/pressable.tsx +48 -0
  233. package/2/apps/native/src/components/ui/core/progress-bar.tsx +47 -0
  234. package/2/apps/native/src/components/ui/core/progress.tsx +149 -0
  235. package/2/apps/native/src/components/ui/core/select.tsx +261 -0
  236. package/2/apps/native/src/components/ui/core/spinner.tsx +387 -0
  237. package/2/apps/native/src/components/ui/core/text.tsx +45 -0
  238. package/2/apps/native/src/components/ui/core/toast.tsx +190 -0
  239. package/2/apps/native/src/components/ui/custom-switch.tsx +90 -0
  240. package/2/apps/native/src/components/ui/date-time-picker.tsx +268 -0
  241. package/2/apps/native/src/components/ui/debug.ts +2 -0
  242. package/2/apps/native/src/components/ui/extras/debug-credit-tester.tsx +107 -0
  243. package/2/apps/native/src/components/ui/extras/debug-mmkv-state.tsx +53 -0
  244. package/2/apps/native/src/components/ui/extras/handle-error.ts +191 -0
  245. package/2/apps/native/src/components/ui/extras/hello-wave.tsx +70 -0
  246. package/2/apps/native/src/components/ui/extras/icon.tsx +36 -0
  247. package/2/apps/native/src/components/ui/extras/network-connectivity-wrapper.tsx +36 -0
  248. package/2/apps/native/src/components/ui/extras/offline-indicator.tsx +55 -0
  249. package/2/apps/native/src/components/ui/extras/social-login-buttons.tsx +296 -0
  250. package/2/apps/native/src/components/ui/file-picker.tsx +177 -0
  251. package/2/apps/native/src/components/ui/gallery.tsx +79 -0
  252. package/2/apps/native/src/components/ui/icons/apple.tsx +19 -0
  253. package/2/apps/native/src/components/ui/icons/arrow-right.tsx +26 -0
  254. package/2/apps/native/src/components/ui/icons/camera.tsx +26 -0
  255. package/2/apps/native/src/components/ui/icons/caret-down.tsx +20 -0
  256. package/2/apps/native/src/components/ui/icons/chevron-up.tsx +21 -0
  257. package/2/apps/native/src/components/ui/icons/claude.tsx +15 -0
  258. package/2/apps/native/src/components/ui/icons/copy.tsx +27 -0
  259. package/2/apps/native/src/components/ui/icons/deepseek.tsx +15 -0
  260. package/2/apps/native/src/components/ui/icons/download.tsx +32 -0
  261. package/2/apps/native/src/components/ui/icons/feed.tsx +12 -0
  262. package/2/apps/native/src/components/ui/icons/gemini.tsx +15 -0
  263. package/2/apps/native/src/components/ui/icons/github.tsx +30 -0
  264. package/2/apps/native/src/components/ui/icons/google.tsx +24 -0
  265. package/2/apps/native/src/components/ui/icons/groq.tsx +15 -0
  266. package/2/apps/native/src/components/ui/icons/home.tsx +19 -0
  267. package/2/apps/native/src/components/ui/icons/index.tsx +26 -0
  268. package/2/apps/native/src/components/ui/icons/language.tsx +33 -0
  269. package/2/apps/native/src/components/ui/icons/llama.tsx +15 -0
  270. package/2/apps/native/src/components/ui/icons/microphone.tsx +20 -0
  271. package/2/apps/native/src/components/ui/icons/mistral.tsx +22 -0
  272. package/2/apps/native/src/components/ui/icons/nutrition.tsx +15 -0
  273. package/2/apps/native/src/components/ui/icons/openai.tsx +15 -0
  274. package/2/apps/native/src/components/ui/icons/perplexity.tsx +22 -0
  275. package/2/apps/native/src/components/ui/icons/qwen.tsx +15 -0
  276. package/2/apps/native/src/components/ui/icons/rate.tsx +24 -0
  277. package/2/apps/native/src/components/ui/icons/report.tsx +20 -0
  278. package/2/apps/native/src/components/ui/icons/send-horizontal.tsx +26 -0
  279. package/2/apps/native/src/components/ui/icons/settings.tsx +12 -0
  280. package/2/apps/native/src/components/ui/icons/share.tsx +16 -0
  281. package/2/apps/native/src/components/ui/icons/square.tsx +9 -0
  282. package/2/apps/native/src/components/ui/icons/style.tsx +22 -0
  283. package/2/apps/native/src/components/ui/icons/support.tsx +27 -0
  284. package/2/apps/native/src/components/ui/icons/trash2.tsx +42 -0
  285. package/2/apps/native/src/components/ui/icons/user.tsx +12 -0
  286. package/2/apps/native/src/components/ui/icons/website.tsx +28 -0
  287. package/2/apps/native/src/components/ui/icons/wifi-off.tsx +17 -0
  288. package/2/apps/native/src/components/ui/index.tsx +14 -0
  289. package/2/apps/native/src/components/ui/nav-item.tsx +42 -0
  290. package/2/apps/native/src/components/ui/patterns/index.ts +16 -0
  291. package/2/apps/native/src/components/ui/picker.tsx +244 -0
  292. package/2/apps/native/src/components/ui/popover.tsx +313 -0
  293. package/2/apps/native/src/components/ui/primitives/index.ts +38 -0
  294. package/2/apps/native/src/components/ui/radio-group.tsx +47 -0
  295. package/2/apps/native/src/components/ui/searchbar.tsx +118 -0
  296. package/2/apps/native/src/components/ui/sheet.tsx +93 -0
  297. package/2/apps/native/src/components/ui/switch.tsx +37 -0
  298. package/2/apps/native/src/components/ui/table.tsx +296 -0
  299. package/2/apps/native/src/components/ui/tabs.tsx +115 -0
  300. package/2/apps/native/src/components/ui/toggle.tsx +50 -0
  301. package/2/apps/native/src/components/ui/utils.tsx +34 -0
  302. package/2/apps/native/src/components/ui/video.tsx +39 -0
  303. package/2/apps/native/src/core/analytics/analytics-service.ts +94 -0
  304. package/2/apps/native/src/core/analytics/index.ts +2 -0
  305. package/2/apps/native/src/core/analytics/posthog-analytics-adapter.ts +192 -0
  306. package/2/apps/native/src/core/auth/auth-service.ts +33 -0
  307. package/2/apps/native/src/core/auth/index.ts +1 -0
  308. package/2/apps/native/src/core/cache/__tests__/cache-service.test.ts +599 -0
  309. package/2/apps/native/src/core/cache/cache-service.ts +89 -0
  310. package/2/apps/native/src/core/cache/index.ts +45 -0
  311. package/2/apps/native/src/core/config/config.service.ts +153 -0
  312. package/2/apps/native/src/core/config/index.ts +2 -0
  313. package/2/apps/native/src/core/config/telemetry.ts +38 -0
  314. package/2/apps/native/src/core/local-notifications/local-notification-manager.ts +409 -0
  315. package/2/apps/native/src/core/logging/custom-transports.ts +126 -0
  316. package/2/apps/native/src/core/logging/index.ts +1 -0
  317. package/2/apps/native/src/core/logging/logger.ts +182 -0
  318. package/2/apps/native/src/core/navigation/deep-link-handler.ts +295 -0
  319. package/2/apps/native/src/core/navigation/navigation-types.ts +53 -0
  320. package/2/apps/native/src/core/payments/index.ts +1 -0
  321. package/2/apps/native/src/core/payments/payment-service.ts +32 -0
  322. package/2/apps/native/src/core/quick-actions/index.ts +2 -0
  323. package/2/apps/native/src/core/quick-actions/quick-actions-adapter.ts +54 -0
  324. package/2/apps/native/src/core/quick-actions/types.ts +29 -0
  325. package/2/apps/native/src/core/storage/index.ts +1 -0
  326. package/2/apps/native/src/core/storage/mmkv.ts +62 -0
  327. package/2/apps/native/src/core/storage/notification-storage.ts +312 -0
  328. package/2/apps/native/src/core/types/common.ts +0 -0
  329. package/2/apps/native/src/core/utils/convex-http-api.ts +30 -0
  330. package/2/apps/native/src/features/audio-recorder/components/audio-player.tsx +301 -0
  331. package/2/apps/native/src/features/audio-recorder/components/audio-recorder.tsx +373 -0
  332. package/2/apps/native/src/features/audio-recorder/components/audio-waveform.tsx +270 -0
  333. package/2/apps/native/src/features/audio-recorder/components/index.ts +4 -0
  334. package/2/apps/native/src/features/audio-recorder/components/recording-list.tsx +89 -0
  335. package/2/apps/native/src/features/audio-recorder/demo/audio-player-demo.tsx +66 -0
  336. package/2/apps/native/src/features/audio-recorder/demo/audio-recorder-cloud.tsx +68 -0
  337. package/2/apps/native/src/features/audio-recorder/demo/audio-recorder-interview.tsx +102 -0
  338. package/2/apps/native/src/features/audio-recorder/demo/basic.tsx +27 -0
  339. package/2/apps/native/src/features/audio-recorder/demo/index.ts +5 -0
  340. package/2/apps/native/src/features/audio-recorder/demo/with-recording-list-demo.tsx +82 -0
  341. package/2/apps/native/src/features/authentication/components/auth-watcher.tsx +115 -0
  342. package/2/apps/native/src/features/authentication/components/login-form.tsx +85 -0
  343. package/2/apps/native/src/features/authentication/services/__tests__/convex-auth.adapter.test.ts +399 -0
  344. package/2/apps/native/src/features/authentication/services/convex-auth.adapter.ts +497 -0
  345. package/2/apps/native/src/features/authentication/services/index.ts +2 -0
  346. package/2/apps/native/src/features/charts/README.md +185 -0
  347. package/2/apps/native/src/features/charts/app/preview.tsx +226 -0
  348. package/2/apps/native/src/features/charts/components/area-chart.tsx +43 -0
  349. package/2/apps/native/src/features/charts/components/bar-chart.tsx +146 -0
  350. package/2/apps/native/src/features/charts/components/candlestick-chart.tsx +199 -0
  351. package/2/apps/native/src/features/charts/components/chart-card.tsx +68 -0
  352. package/2/apps/native/src/features/charts/components/column-chart.tsx +146 -0
  353. package/2/apps/native/src/features/charts/components/doughnut-chart.tsx +260 -0
  354. package/2/apps/native/src/features/charts/components/index.ts +13 -0
  355. package/2/apps/native/src/features/charts/components/line-chart.tsx +311 -0
  356. package/2/apps/native/src/features/charts/components/radar-chart.tsx +183 -0
  357. package/2/apps/native/src/features/charts/components/radial-bar-chart.tsx +191 -0
  358. package/2/apps/native/src/features/charts/components/stacked-area-chart.tsx +268 -0
  359. package/2/apps/native/src/features/charts/components/stacked-bar-chart.tsx +325 -0
  360. package/2/apps/native/src/features/charts/data/mock-data.ts +186 -0
  361. package/2/apps/native/src/features/charts/types/index.ts +69 -0
  362. package/2/apps/native/src/features/chatbot/app/index.tsx +303 -0
  363. package/2/apps/native/src/features/chatbot/components/chat-header-buttons.tsx +60 -0
  364. package/2/apps/native/src/features/chatbot/components/chat-input-bar.tsx +470 -0
  365. package/2/apps/native/src/features/chatbot/components/chat-markdown.tsx +576 -0
  366. package/2/apps/native/src/features/chatbot/components/chat-message-bubble.tsx +247 -0
  367. package/2/apps/native/src/features/chatbot/components/chat-settings-modal.tsx +162 -0
  368. package/2/apps/native/src/features/chatbot/components/image-preview-list.tsx +116 -0
  369. package/2/apps/native/src/features/chatbot/components/markdown/code-block.tsx +166 -0
  370. package/2/apps/native/src/features/chatbot/components/markdown/index.ts +11 -0
  371. package/2/apps/native/src/features/chatbot/components/markdown/table-renderer.tsx +130 -0
  372. package/2/apps/native/src/features/chatbot/components/message-error-boundary.tsx +79 -0
  373. package/2/apps/native/src/features/chatbot/components/message-list.tsx +174 -0
  374. package/2/apps/native/src/features/chatbot/components/model-selector.tsx +284 -0
  375. package/2/apps/native/src/features/chatbot/components/report-content-modal.tsx +189 -0
  376. package/2/apps/native/src/features/chatbot/components/suggested-messages.tsx +68 -0
  377. package/2/apps/native/src/features/chatbot/constants/models.ts +21 -0
  378. package/2/apps/native/src/features/chatbot/constants/report-reasons.ts +10 -0
  379. package/2/apps/native/src/features/chatbot/hooks/use-attachment-cache.ts +144 -0
  380. package/2/apps/native/src/features/chatbot/hooks/use-chat-config.ts +665 -0
  381. package/2/apps/native/src/features/chatbot/hooks/use-chat-handlers.ts +360 -0
  382. package/2/apps/native/src/features/chatbot/hooks/use-chatbot-settings.ts +90 -0
  383. package/2/apps/native/src/features/chatbot/hooks/use-conversation.ts +80 -0
  384. package/2/apps/native/src/features/chatbot/hooks/use-image-picker.ts +123 -0
  385. package/2/apps/native/src/features/chatbot/hooks/use-keyboard-coordinator.ts +162 -0
  386. package/2/apps/native/src/features/chatbot/hooks/use-smart-scroll-manager.ts +214 -0
  387. package/2/apps/native/src/features/chatbot/models/index.ts +87 -0
  388. package/2/apps/native/src/features/chatbot/models/models.ts +163 -0
  389. package/2/apps/native/src/features/chatbot/models/providers.ts +63 -0
  390. package/2/apps/native/src/features/chatbot/models/types.ts +41 -0
  391. package/2/apps/native/src/features/chatbot/services/file-uploader.ts +239 -0
  392. package/2/apps/native/src/features/chatbot/services/message-handler-service.ts +181 -0
  393. package/2/apps/native/src/features/chatbot/types/index.ts +61 -0
  394. package/2/apps/native/src/features/chatbot/utils/chat-telemetry.ts +92 -0
  395. package/2/apps/native/src/features/image-analyzer/app/analysis-options-screen.tsx +304 -0
  396. package/2/apps/native/src/features/image-analyzer/app/camera.tsx +221 -0
  397. package/2/apps/native/src/features/image-analyzer/app/image-capture-screen.tsx +333 -0
  398. package/2/apps/native/src/features/image-analyzer/app/loading-screen.tsx +217 -0
  399. package/2/apps/native/src/features/image-analyzer/app/loading.tsx +194 -0
  400. package/2/apps/native/src/features/image-analyzer/app/results.tsx +137 -0
  401. package/2/apps/native/src/features/image-analyzer/app/trait-details.tsx +172 -0
  402. package/2/apps/native/src/features/image-analyzer/app/use-analysis-data.ts +143 -0
  403. package/2/apps/native/src/features/image-analyzer/app/use-results-screen.ts +151 -0
  404. package/2/apps/native/src/features/image-analyzer/components/results/achievement-badge.tsx +77 -0
  405. package/2/apps/native/src/features/image-analyzer/components/results/achievement-card.tsx +75 -0
  406. package/2/apps/native/src/features/image-analyzer/components/results/achievement-unlocked-modal.tsx +162 -0
  407. package/2/apps/native/src/features/image-analyzer/components/results/achievements-section.tsx +44 -0
  408. package/2/apps/native/src/features/image-analyzer/components/results/advice-list.tsx +42 -0
  409. package/2/apps/native/src/features/image-analyzer/components/results/circular-progress.tsx +233 -0
  410. package/2/apps/native/src/features/image-analyzer/components/results/content-card.tsx +38 -0
  411. package/2/apps/native/src/features/image-analyzer/components/results/error-state.tsx +42 -0
  412. package/2/apps/native/src/features/image-analyzer/components/results/index.ts +9 -0
  413. package/2/apps/native/src/features/image-analyzer/components/results/loading-state.tsx +26 -0
  414. package/2/apps/native/src/features/image-analyzer/components/results/profile-image.tsx +60 -0
  415. package/2/apps/native/src/features/image-analyzer/components/results/results-header.tsx +62 -0
  416. package/2/apps/native/src/features/image-analyzer/components/results/score-display.tsx +54 -0
  417. package/2/apps/native/src/features/image-analyzer/components/results/share-options-modal.tsx +110 -0
  418. package/2/apps/native/src/features/image-analyzer/components/results/traits-grid.tsx +74 -0
  419. package/2/apps/native/src/features/image-analyzer/config/analysis-config.ts +80 -0
  420. package/2/apps/native/src/features/image-analyzer/config/master-analysis-config.ts +157 -0
  421. package/2/apps/native/src/features/image-analyzer/hooks/index.ts +1 -0
  422. package/2/apps/native/src/features/image-analyzer/hooks/use-analysis.ts +37 -0
  423. package/2/apps/native/src/features/image-analyzer/hooks/use-image-analysis.ts +202 -0
  424. package/2/apps/native/src/features/image-analyzer/services/analysis-service.ts +262 -0
  425. package/2/apps/native/src/features/image-analyzer/services/share-service.ts +176 -0
  426. package/2/apps/native/src/features/image-analyzer/services/trait-details-service.ts +289 -0
  427. package/2/apps/native/src/features/image-generator/app/_layout.tsx +26 -0
  428. package/2/apps/native/src/features/image-generator/app/gallery.tsx +217 -0
  429. package/2/apps/native/src/features/image-generator/app/index.tsx +237 -0
  430. package/2/apps/native/src/features/image-generator/components/gallery-image.tsx +25 -0
  431. package/2/apps/native/src/features/image-generator/components/image-detail-modal.tsx +215 -0
  432. package/2/apps/native/src/features/image-generator/components/image-model-selector.tsx +210 -0
  433. package/2/apps/native/src/features/image-generator/components/image-placeholder.tsx +26 -0
  434. package/2/apps/native/src/features/image-generator/hooks/use-image-gallery.ts +71 -0
  435. package/2/apps/native/src/features/image-generator/hooks/use-image-generator-settings.ts +152 -0
  436. package/2/apps/native/src/features/image-generator/hooks/use-image-generator.ts +93 -0
  437. package/2/apps/native/src/features/image-generator/models/models.ts +66 -0
  438. package/2/apps/native/src/features/image-generator/services/image-gallery-service.ts +98 -0
  439. package/2/apps/native/src/features/image-generator/services/image-save-service.ts +121 -0
  440. package/2/apps/native/src/features/onboarding/analytics/index.ts +9 -0
  441. package/2/apps/native/src/features/onboarding/components/onboarding-with-analytics.tsx +141 -0
  442. package/2/apps/native/src/features/onboarding/components/onboarding.tsx +173 -0
  443. package/2/apps/native/src/features/onboarding/config/onboarding-flow-config.ts +189 -0
  444. package/2/apps/native/src/features/onboarding/demo-one/app/index.tsx +43 -0
  445. package/2/apps/native/src/features/onboarding/demo-one/data.ts +32 -0
  446. package/2/apps/native/src/features/onboarding/hooks/use-onboarding-analytics.ts +323 -0
  447. package/2/apps/native/src/features/onboarding/services/onboarding-analytics.ts +432 -0
  448. package/2/apps/native/src/features/payments/README.md +200 -0
  449. package/2/apps/native/src/features/payments/app/local-paywall.tsx +194 -0
  450. package/2/apps/native/src/features/payments/app/remote-paywall.tsx +79 -0
  451. package/2/apps/native/src/features/payments/components/payment-initializer.tsx +95 -0
  452. package/2/apps/native/src/features/payments/components/paywall-error-state.tsx +60 -0
  453. package/2/apps/native/src/features/payments/components/paywall-local-mode.tsx +116 -0
  454. package/2/apps/native/src/features/payments/components/paywall-product-card.tsx +133 -0
  455. package/2/apps/native/src/features/payments/components/paywall-remote-mode.tsx +146 -0
  456. package/2/apps/native/src/features/payments/hooks/use-entitlement.ts +63 -0
  457. package/2/apps/native/src/features/payments/index.ts +8 -0
  458. package/2/apps/native/src/features/payments/services/revenuecat-adapter.ts +407 -0
  459. package/2/apps/native/src/features/quick-actions/components/quick-actions-demo.tsx +139 -0
  460. package/2/apps/native/src/features/quick-actions/config/default-actions.ts +83 -0
  461. package/2/apps/native/src/features/quick-actions/hooks/use-quick-actions.ts +45 -0
  462. package/2/apps/native/src/features/quick-actions/index.ts +4 -0
  463. package/2/apps/native/src/features/quick-actions/utils/quick-actions-manager.ts +105 -0
  464. package/2/apps/native/src/features/quiz/components/question.tsx +67 -0
  465. package/2/apps/native/src/features/quiz/config.ts +11 -0
  466. package/2/apps/native/src/features/quiz/index.tsx +133 -0
  467. package/2/apps/native/src/features/settings/ui/debug-info.tsx +75 -0
  468. package/2/apps/native/src/features/settings/ui/dev-tools.tsx +1 -0
  469. package/2/apps/native/src/features/settings/ui/item.tsx +45 -0
  470. package/2/apps/native/src/features/settings/ui/items-container.tsx +23 -0
  471. package/2/apps/native/src/features/settings/ui/language-item.tsx +52 -0
  472. package/2/apps/native/src/features/settings/ui/notification-item.tsx +59 -0
  473. package/2/apps/native/src/features/settings/ui/theme-item.tsx +45 -0
  474. package/2/apps/native/src/features/tracker-app/app/index.tsx +108 -0
  475. package/2/apps/native/src/features/tracker-app/components/animated-number.tsx +102 -0
  476. package/2/apps/native/src/features/tracker-app/components/calorie-card.tsx +66 -0
  477. package/2/apps/native/src/features/tracker-app/components/circular-progress.tsx +97 -0
  478. package/2/apps/native/src/features/tracker-app/components/floating-add-button.tsx +27 -0
  479. package/2/apps/native/src/features/tracker-app/components/macro-card.tsx +80 -0
  480. package/2/apps/native/src/features/tracker-app/components/promo-banner.tsx +98 -0
  481. package/2/apps/native/src/features/tracker-app/components/recently-logged.tsx +64 -0
  482. package/2/apps/native/src/features/tracker-app/components/week-calendar.tsx +68 -0
  483. package/2/apps/native/src/features/vibefast-features.ts +42 -0
  484. package/2/apps/native/src/features/voice-bot/README.md +185 -0
  485. package/2/apps/native/src/features/voice-bot/components/conversation-status.tsx +76 -0
  486. package/2/apps/native/src/features/voice-bot/components/index.ts +4 -0
  487. package/2/apps/native/src/features/voice-bot/components/message-input.tsx +98 -0
  488. package/2/apps/native/src/features/voice-bot/components/voice-bot-screen.tsx +173 -0
  489. package/2/apps/native/src/features/voice-bot/components/voice-controls.tsx +73 -0
  490. package/2/apps/native/src/features/voice-bot/index.ts +3 -0
  491. package/2/apps/native/src/features/voice-bot/services/index.ts +1 -0
  492. package/2/apps/native/src/features/voice-bot/services/use-voice-bot.ts +161 -0
  493. package/2/apps/native/src/features/voice-bot/types.ts +29 -0
  494. package/2/apps/native/src/features/wake-word/components/index.ts +1 -0
  495. package/2/apps/native/src/features/wake-word/components/wake-word-indicator.tsx +61 -0
  496. package/2/apps/native/src/features/wake-word/constants.ts +10 -0
  497. package/2/apps/native/src/features/wake-word/hooks/use-wake-word.ts +181 -0
  498. package/2/apps/native/src/features/wake-word/index.ts +22 -0
  499. package/2/apps/native/src/features/wake-word/services/audio-session.ts +40 -0
  500. package/2/apps/native/src/features/wake-word/services/event-bus.ts +31 -0
  501. package/2/apps/native/src/features/wake-word/services/keywords.ts +88 -0
  502. package/2/apps/native/src/features/wake-word/services/wake-word-manager.ts +249 -0
  503. package/2/apps/native/src/features/wake-word/types.ts +22 -0
  504. package/2/apps/native/src/lib/env.js +13 -0
  505. package/2/apps/native/src/lib/hooks/index.tsx +6 -0
  506. package/2/apps/native/src/lib/hooks/use-device-identifier.tsx +80 -0
  507. package/2/apps/native/src/lib/hooks/use-gradual-animation.ts +28 -0
  508. package/2/apps/native/src/lib/hooks/use-is-first-time.tsx +25 -0
  509. package/2/apps/native/src/lib/hooks/use-navigation-analytics.ts +44 -0
  510. package/2/apps/native/src/lib/hooks/use-navigation-options.tsx +87 -0
  511. package/2/apps/native/src/lib/hooks/use-push-notifications.ts +250 -0
  512. package/2/apps/native/src/lib/hooks/use-responsive-size.tsx +37 -0
  513. package/2/apps/native/src/lib/hooks/use-selected-theme.tsx +38 -0
  514. package/2/apps/native/src/lib/hooks/use-viewport-lazy-loading.tsx +124 -0
  515. package/2/apps/native/src/lib/i18n/index.tsx +30 -0
  516. package/2/apps/native/src/lib/i18n/react-i18next.d.ts +9 -0
  517. package/2/apps/native/src/lib/i18n/resources.ts +25 -0
  518. package/2/apps/native/src/lib/i18n/types.ts +23 -0
  519. package/2/apps/native/src/lib/i18n/utils.tsx +112 -0
  520. package/2/apps/native/src/lib/index.tsx +3 -0
  521. package/2/apps/native/src/lib/state/auth-client-slice.ts +34 -0
  522. package/2/apps/native/src/lib/state/index.ts +1 -0
  523. package/2/apps/native/src/lib/storage.tsx +7 -0
  524. package/2/apps/native/src/lib/test-utils.tsx +43 -0
  525. package/2/apps/native/src/lib/use-theme-config.tsx +108 -0
  526. package/2/apps/native/src/lib/utils.ts +29 -0
  527. package/2/apps/native/src/polyfills.ts +61 -0
  528. package/2/apps/native/src/providers/convex-provider.tsx +31 -0
  529. package/2/apps/native/src/providers/index.tsx +6 -0
  530. package/2/apps/native/src/providers/notification-provider.tsx +168 -0
  531. package/2/apps/native/src/providers/posthog-provider.tsx +47 -0
  532. package/2/apps/native/src/providers/root-providers.tsx +46 -0
  533. package/2/apps/native/src/providers/sentry-provider.tsx +62 -0
  534. package/2/apps/native/src/providers/splash-screen-provider.tsx +122 -0
  535. package/2/apps/native/src/providers/theme-provider.tsx +67 -0
  536. package/2/apps/native/src/translations/ar.json +394 -0
  537. package/2/apps/native/src/translations/de.json +394 -0
  538. package/2/apps/native/src/translations/en.json +394 -0
  539. package/2/apps/native/src/translations/es.json +394 -0
  540. package/2/apps/native/src/translations/fr.json +394 -0
  541. package/2/apps/native/src/types/flash-list.d.ts +3 -0
  542. package/2/apps/native/src/types/index.ts +3 -0
  543. package/2/apps/native/src/types/react-native-reanimated.d.ts +5 -0
  544. package/2/apps/native/tailwind.config.js +57 -0
  545. package/2/apps/native/targets/widget/AppIntent.swift +46 -0
  546. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png +0 -0
  547. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png +0 -0
  548. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png +0 -0
  549. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png +0 -0
  550. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png +0 -0
  551. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png +0 -0
  552. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png +0 -0
  553. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png +0 -0
  554. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png +0 -0
  555. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png +0 -0
  556. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png +0 -0
  557. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png +0 -0
  558. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png +0 -0
  559. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png +0 -0
  560. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/Contents.json +122 -0
  561. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png +0 -0
  562. package/2/apps/native/targets/widget/CalorieTrackerWidget.swift +424 -0
  563. package/2/apps/native/targets/widget/HabitTrackerWidget.swift +305 -0
  564. package/2/apps/native/targets/widget/Info.plist +11 -0
  565. package/2/apps/native/targets/widget/WidgetLiveActivity.swift +75 -0
  566. package/2/apps/native/targets/widget/expo-target.config.js +10 -0
  567. package/2/apps/native/targets/widget/generated.entitlements +5 -0
  568. package/2/apps/native/targets/widget/index.swift +18 -0
  569. package/2/apps/native/targets/widget/widgets.swift +96 -0
  570. package/2/apps/native/tsconfig.json +88 -0
  571. package/2/apps/native/vitest.config.mts +14 -0
  572. package/2/apps/web/README.md +36 -0
  573. package/2/apps/web/app/favicon.ico +0 -0
  574. package/2/apps/web/app/globals.css +122 -0
  575. package/2/apps/web/app/layout.tsx +38 -0
  576. package/2/apps/web/app/page.tsx +35 -0
  577. package/2/apps/web/app/users/page.tsx +301 -0
  578. package/2/apps/web/components/AdminDashboard.tsx +336 -0
  579. package/2/apps/web/components/AppleLogo.tsx +15 -0
  580. package/2/apps/web/components/GitHubLogo.tsx +11 -0
  581. package/2/apps/web/components/GoogleLogo.tsx +23 -0
  582. package/2/apps/web/components/Layout.tsx +77 -0
  583. package/2/apps/web/components/ThemeToggle.tsx +23 -0
  584. package/2/apps/web/components/UserMenu.tsx +66 -0
  585. package/2/apps/web/components/auth/CodeInput.tsx +24 -0
  586. package/2/apps/web/components/auth/ResetPasswordWithEmailCode.tsx +85 -0
  587. package/2/apps/web/components/auth/SignInFormEmailCode.tsx +72 -0
  588. package/2/apps/web/components/auth/SignInFormEmailLink.tsx +81 -0
  589. package/2/apps/web/components/auth/SignInFormPassword.tsx +17 -0
  590. package/2/apps/web/components/auth/SignInFormPasswordAndCustomField.tsx +42 -0
  591. package/2/apps/web/components/auth/SignInFormPasswordAndResetViaCode.tsx +32 -0
  592. package/2/apps/web/components/auth/SignInFormPasswordAndVerifyViaCode.tsx +86 -0
  593. package/2/apps/web/components/auth/SignInFormPhoneCode.tsx +89 -0
  594. package/2/apps/web/components/auth/SignInFormsShowcase.tsx +64 -0
  595. package/2/apps/web/components/auth/SignInMethodDivider.tsx +17 -0
  596. package/2/apps/web/components/auth/SignInWithEmailCode.tsx +49 -0
  597. package/2/apps/web/components/auth/SignInWithOAuth.tsx +16 -0
  598. package/2/apps/web/components/auth/SignInWithPassword.tsx +100 -0
  599. package/2/apps/web/components/auth/oauth/SignInWithApple.tsx +27 -0
  600. package/2/apps/web/components/auth/oauth/SignInWithGitHub.tsx +27 -0
  601. package/2/apps/web/components/auth/oauth/SignInWithGoogle.tsx +27 -0
  602. package/2/apps/web/components/ui/button.tsx +60 -0
  603. package/2/apps/web/components/ui/card.tsx +92 -0
  604. package/2/apps/web/components/ui/dialog.tsx +143 -0
  605. package/2/apps/web/components/ui/dropdown-menu.tsx +257 -0
  606. package/2/apps/web/components/ui/input-otp.tsx +77 -0
  607. package/2/apps/web/components/ui/input.tsx +21 -0
  608. package/2/apps/web/components/ui/skeleton.tsx +13 -0
  609. package/2/apps/web/components/ui/tabs.tsx +66 -0
  610. package/2/apps/web/components/ui/toast.tsx +130 -0
  611. package/2/apps/web/components/ui/toaster.tsx +36 -0
  612. package/2/apps/web/components/ui/toggle-group.tsx +83 -0
  613. package/2/apps/web/components/ui/toggle.tsx +47 -0
  614. package/2/apps/web/components/ui/use-toast.ts +192 -0
  615. package/2/apps/web/components.json +22 -0
  616. package/2/apps/web/eslint.config.mjs +18 -0
  617. package/2/apps/web/lib/convex-provider.tsx +18 -0
  618. package/2/apps/web/lib/utils.ts +6 -0
  619. package/2/apps/web/next.config.ts +7 -0
  620. package/2/apps/web/package.json +46 -0
  621. package/2/apps/web/postcss.config.mjs +7 -0
  622. package/2/apps/web/public/file.svg +1 -0
  623. package/2/apps/web/public/globe.svg +1 -0
  624. package/2/apps/web/public/next.svg +1 -0
  625. package/2/apps/web/public/vercel.svg +1 -0
  626. package/2/apps/web/public/window.svg +1 -0
  627. package/2/apps/web/tsconfig.json +34 -0
  628. package/2/bts.jsonc +21 -0
  629. package/2/commitlint.config.js +1 -0
  630. package/2/eslint.config.mjs +182 -0
  631. package/2/lint-staged.config.js +16 -0
  632. package/2/package.json +64 -0
  633. package/2/packages/backend/.env.example +20 -0
  634. package/2/packages/backend/convex/README.md +90 -0
  635. package/2/packages/backend/convex/_generated/api.d.ts +2599 -0
  636. package/2/packages/backend/convex/_generated/api.js +23 -0
  637. package/2/packages/backend/convex/_generated/dataModel.d.ts +60 -0
  638. package/2/packages/backend/convex/_generated/server.d.ts +149 -0
  639. package/2/packages/backend/convex/_generated/server.js +90 -0
  640. package/2/packages/backend/convex/agents.ts +116 -0
  641. package/2/packages/backend/convex/auth.config.ts +8 -0
  642. package/2/packages/backend/convex/auth.ts +103 -0
  643. package/2/packages/backend/convex/authCustomEmailOtpProvider.ts +175 -0
  644. package/2/packages/backend/convex/authOtp.ts +144 -0
  645. package/2/packages/backend/convex/authPasswordReset.ts +367 -0
  646. package/2/packages/backend/convex/authPasswordResetActions.ts +150 -0
  647. package/2/packages/backend/convex/chatbot/index.ts +30 -0
  648. package/2/packages/backend/convex/chatbotAgent.ts +1085 -0
  649. package/2/packages/backend/convex/chatbotHistory.ts +307 -0
  650. package/2/packages/backend/convex/convex.config.ts +13 -0
  651. package/2/packages/backend/convex/deviceGrants.ts +58 -0
  652. package/2/packages/backend/convex/grantFunctions.ts +444 -0
  653. package/2/packages/backend/convex/http.ts +8 -0
  654. package/2/packages/backend/convex/imageAnalysis/index.ts +18 -0
  655. package/2/packages/backend/convex/imageAnalysisFunctions.ts +325 -0
  656. package/2/packages/backend/convex/imageGeneration/index.ts +12 -0
  657. package/2/packages/backend/convex/imageGeneratorFunctions.ts +290 -0
  658. package/2/packages/backend/convex/lib/ai/analysisConfigs.ts +257 -0
  659. package/2/packages/backend/convex/lib/ai/config.ts +71 -0
  660. package/2/packages/backend/convex/lib/ai/geminiAdapter.ts +43 -0
  661. package/2/packages/backend/convex/lib/ai/imageAnalysisAdapter.ts +200 -0
  662. package/2/packages/backend/convex/lib/ai/openaiAdapter.ts +43 -0
  663. package/2/packages/backend/convex/lib/ai/schemas.ts +79 -0
  664. package/2/packages/backend/convex/lib/config.ts +111 -0
  665. package/2/packages/backend/convex/lib/rateLimit.ts +100 -0
  666. package/2/packages/backend/convex/lib/telemetry.ts +29 -0
  667. package/2/packages/backend/convex/paymentFunctions.ts +119 -0
  668. package/2/packages/backend/convex/payments/index.ts +13 -0
  669. package/2/packages/backend/convex/pushNotificationFunctions.ts +342 -0
  670. package/2/packages/backend/convex/ragKnowledge.ts +714 -0
  671. package/2/packages/backend/convex/rateLimit.ts +13 -0
  672. package/2/packages/backend/convex/recordingFunctions.ts +98 -0
  673. package/2/packages/backend/convex/reportFunctions.ts +344 -0
  674. package/2/packages/backend/convex/reporting/index.ts +9 -0
  675. package/2/packages/backend/convex/router.ts +81 -0
  676. package/2/packages/backend/convex/schema.ts +237 -0
  677. package/2/packages/backend/convex/shared/email.ts +172 -0
  678. package/2/packages/backend/convex/shared/files.ts +96 -0
  679. package/2/packages/backend/convex/shared/index.ts +17 -0
  680. package/2/packages/backend/convex/shared/templates/PasswordResetEmail.tsx +72 -0
  681. package/2/packages/backend/convex/shared/templates/VerificationCodeEmail.tsx +65 -0
  682. package/2/packages/backend/convex/sharedUsers.ts +48 -0
  683. package/2/packages/backend/convex/tools/index.ts +18 -0
  684. package/2/packages/backend/convex/tools/knowledgeRetrieval.ts +92 -0
  685. package/2/packages/backend/convex/tools/tavilySearch.ts +83 -0
  686. package/2/packages/backend/convex/tools/userProfile.ts +72 -0
  687. package/2/packages/backend/convex/tsconfig.json +25 -0
  688. package/2/packages/backend/convex/users.ts +54 -0
  689. package/2/packages/backend/index.ts +20 -0
  690. package/2/packages/backend/package.json +32 -0
  691. package/2/packages/ui/README.md +63 -0
  692. package/2/packages/ui/index.ts +1 -0
  693. package/2/packages/ui/package.json +21 -0
  694. package/2/packages/ui/src/components/SharedButton.tsx +31 -0
  695. package/2/packages/ui/src/components/SharedCard.tsx +48 -0
  696. package/2/packages/ui/src/components/index.ts +2 -0
  697. package/2/packages/ui/tsconfig.json +10 -0
  698. package/2/pnpm-lock.yaml +23292 -0
  699. package/2/pnpm-workspace.yaml +3 -0
  700. package/2/scripts/i18next-syntax-validation.js +1 -0
  701. package/2/tsconfig.json +43 -0
  702. package/2/turbo.json +33 -0
  703. package/2/vercel.json +6 -0
  704. package/2/vf-agent/agent-teams/team-vibefast.yaml +14 -0
  705. package/2/vf-agent/agents/analyst.md +53 -0
  706. package/2/vf-agent/agents/architect.md +105 -0
  707. package/2/vf-agent/agents/dev.md +40 -0
  708. package/2/vf-agent/agents/orchestrator.md +181 -0
  709. package/2/vf-agent/agents/pm.md +48 -0
  710. package/2/vf-agent/agents/po.md +38 -0
  711. package/2/vf-agent/agents/qa.md +30 -0
  712. package/2/vf-agent/agents/sm.md +38 -0
  713. package/2/vf-agent/agents/ux-expert.md +33 -0
  714. package/2/vf-agent/checklists/po-master-checklist.md +73 -0
  715. package/2/vf-agent/checklists/story-dod-checklist.md +37 -0
  716. package/2/vf-agent/core-config.yaml +43 -0
  717. package/2/vf-agent/data/knowledge_base/backend/convex-advanced.md +43 -0
  718. package/2/vf-agent/data/knowledge_base/backend/convex-database.md +53 -0
  719. package/2/vf-agent/data/knowledge_base/backend/convex-main.md +65 -0
  720. package/2/vf-agent/data/knowledge_base/backend/full-guidelines.md +795 -0
  721. package/2/vf-agent/data/knowledge_base/coding-standards.md +253 -0
  722. package/2/vf-agent/data/knowledge_base/frontend/full-guidelines.md +254 -0
  723. package/2/vf-agent/data/knowledge_base/frontend/image-handling.md +48 -0
  724. package/2/vf-agent/data/knowledge_base/frontend/react-native-main.md +24 -0
  725. package/2/vf-agent/data/knowledge_base/frontend/ui-and-styling.md +169 -0
  726. package/2/vf-agent/data/knowledge_base/general-principles.md +26 -0
  727. package/2/vf-agent/data/knowledge_base/master-rulebook.md +42 -0
  728. package/2/vf-agent/data/knowledge_base/starter-docs/audio-recorder-reference.md +98 -0
  729. package/2/vf-agent/data/knowledge_base/starter-docs/authentication-reference.md +155 -0
  730. package/2/vf-agent/data/knowledge_base/starter-docs/charts-reference.md +149 -0
  731. package/2/vf-agent/data/knowledge_base/starter-docs/chatbot-reference.md +123 -0
  732. package/2/vf-agent/data/knowledge_base/starter-docs/feature-reference-index.md +211 -0
  733. package/2/vf-agent/data/knowledge_base/starter-docs/features-overview.md +221 -0
  734. package/2/vf-agent/data/knowledge_base/starter-docs/image-analyzer-reference.md +118 -0
  735. package/2/vf-agent/data/knowledge_base/starter-docs/image-generator-reference.md +110 -0
  736. package/2/vf-agent/data/knowledge_base/starter-docs/index.md +28 -0
  737. package/2/vf-agent/data/knowledge_base/starter-docs/onboarding-reference.md +96 -0
  738. package/2/vf-agent/data/knowledge_base/starter-docs/payments-reference.md +148 -0
  739. package/2/vf-agent/data/knowledge_base/starter-docs/prd.md +82 -0
  740. package/2/vf-agent/data/knowledge_base/starter-docs/push-notifications-reference.md +453 -0
  741. package/2/vf-agent/data/knowledge_base/starter-docs/quick-actions-reference.md +253 -0
  742. package/2/vf-agent/data/knowledge_base/starter-docs/quiz-reference.md +169 -0
  743. package/2/vf-agent/data/knowledge_base/starter-docs/settings-reference.md +146 -0
  744. package/2/vf-agent/data/knowledge_base/starter-docs/tech-stack.md +159 -0
  745. package/2/vf-agent/data/knowledge_base/starter-docs/tracker-app-reference.md +150 -0
  746. package/2/vf-agent/data/knowledge_base/starter-docs/unified-project-structure.md +98 -0
  747. package/2/vf-agent/data/knowledge_base/testing/backend-testing.md +54 -0
  748. package/2/vf-agent/data/knowledge_base/testing/frontend-testing.md +71 -0
  749. package/2/vf-agent/data/knowledge_base/testing/testing-strategy.md +31 -0
  750. package/2/vf-agent/tasks/advanced-elicitation.md +117 -0
  751. package/2/vf-agent/tasks/brownfield-create-epic.md +160 -0
  752. package/2/vf-agent/tasks/create-deep-research-prompt.md +278 -0
  753. package/2/vf-agent/tasks/create-doc.md +42 -0
  754. package/2/vf-agent/tasks/create-story.md +43 -0
  755. package/2/vf-agent/tasks/document-project.md +343 -0
  756. package/2/vf-agent/tasks/facilitate-brainstorming-session.md +136 -0
  757. package/2/vf-agent/tasks/index-docs.md +173 -0
  758. package/2/vf-agent/tasks/kb-mode-interaction.md +75 -0
  759. package/2/vf-agent/tasks/review-story.md +154 -0
  760. package/2/vf-agent/tasks/shard-doc.md +185 -0
  761. package/2/vf-agent/tasks/troubleshoot-issue.md +65 -0
  762. package/2/vf-agent/tasks/validate-next-story.md +47 -0
  763. package/2/vf-agent/templates/brainstorming-output-tmpl.yaml +156 -0
  764. package/2/vf-agent/templates/brownfield-architecture-tmpl.yaml +111 -0
  765. package/2/vf-agent/templates/brownfield-prd-tmpl.yaml +247 -0
  766. package/2/vf-agent/templates/competitor-analysis-tmpl.yaml +293 -0
  767. package/2/vf-agent/templates/market-research-tmpl.yaml +252 -0
  768. package/2/vf-agent/templates/project-brief-tmpl.yaml +221 -0
  769. package/2/vf-agent/templates/story-tmpl.yaml +143 -0
  770. package/BEFORE-AFTER.md +327 -0
  771. package/CHANGELOG.md +73 -0
  772. package/CLI-ROADMAP.md +415 -0
  773. package/COMMAND-REFERENCE.md +341 -0
  774. package/IMPLEMENTATION-STATUS.md +316 -0
  775. package/MANUAL-TEST-CHECKLIST.md +264 -0
  776. package/OPTIONS-GLOSSARY.md +308 -0
  777. package/PHASE-1-2-3-COMPLETE.md +435 -0
  778. package/PHASE-1-2-IMPLEMENTATION.md +280 -0
  779. package/PHASE-1-2-SUMMARY.md +183 -0
  780. package/QUICK-START.md +352 -0
  781. package/RECIPES-GUIDE.md +325 -0
  782. package/RELEASE-CHECKLIST.md +269 -0
  783. package/VF-INIT-FLOW.md +446 -0
  784. package/dist/commands/add.d.ts.map +1 -1
  785. package/dist/commands/add.js +328 -66
  786. package/dist/commands/add.js.map +1 -1
  787. package/dist/commands/checklist.d.ts.map +1 -1
  788. package/dist/commands/checklist.js +69 -5
  789. package/dist/commands/checklist.js.map +1 -1
  790. package/dist/commands/env.d.ts +3 -0
  791. package/dist/commands/env.d.ts.map +1 -0
  792. package/dist/commands/env.js +130 -0
  793. package/dist/commands/env.js.map +1 -0
  794. package/dist/commands/health.d.ts +3 -0
  795. package/dist/commands/health.d.ts.map +1 -0
  796. package/dist/commands/health.js +214 -0
  797. package/dist/commands/health.js.map +1 -0
  798. package/dist/commands/init.d.ts +3 -0
  799. package/dist/commands/init.d.ts.map +1 -0
  800. package/dist/commands/init.js +310 -0
  801. package/dist/commands/init.js.map +1 -0
  802. package/dist/commands/list.d.ts.map +1 -1
  803. package/dist/commands/list.js +36 -16
  804. package/dist/commands/list.js.map +1 -1
  805. package/dist/commands/login.d.ts.map +1 -1
  806. package/dist/commands/login.js +5 -0
  807. package/dist/commands/login.js.map +1 -1
  808. package/dist/commands/remove.d.ts.map +1 -1
  809. package/dist/commands/remove.js +11 -0
  810. package/dist/commands/remove.js.map +1 -1
  811. package/dist/core/__tests__/detect.test.d.ts +2 -0
  812. package/dist/core/__tests__/detect.test.d.ts.map +1 -0
  813. package/dist/core/__tests__/detect.test.js +73 -0
  814. package/dist/core/__tests__/detect.test.js.map +1 -0
  815. package/dist/core/detect.d.ts +10 -0
  816. package/dist/core/detect.d.ts.map +1 -0
  817. package/dist/core/detect.js +58 -0
  818. package/dist/core/detect.js.map +1 -0
  819. package/dist/core/env.d.ts +24 -0
  820. package/dist/core/env.d.ts.map +1 -0
  821. package/dist/core/env.js +83 -0
  822. package/dist/core/env.js.map +1 -0
  823. package/dist/core/errors.d.ts +13 -0
  824. package/dist/core/errors.d.ts.map +1 -0
  825. package/dist/core/errors.js +111 -0
  826. package/dist/core/errors.js.map +1 -0
  827. package/dist/core/prompt.d.ts +46 -2
  828. package/dist/core/prompt.d.ts.map +1 -1
  829. package/dist/core/prompt.js +179 -15
  830. package/dist/core/prompt.js.map +1 -1
  831. package/dist/core/prompts.d.ts +23 -0
  832. package/dist/core/prompts.d.ts.map +1 -0
  833. package/dist/core/prompts.js +85 -0
  834. package/dist/core/prompts.js.map +1 -0
  835. package/dist/core/recipes.d.ts +31 -0
  836. package/dist/core/recipes.d.ts.map +1 -0
  837. package/dist/core/recipes.js +138 -0
  838. package/dist/core/recipes.js.map +1 -0
  839. package/dist/core/spinner.d.ts +20 -0
  840. package/dist/core/spinner.d.ts.map +1 -0
  841. package/dist/core/spinner.js +72 -0
  842. package/dist/core/spinner.js.map +1 -0
  843. package/dist/core/vosk.d.ts +7 -0
  844. package/dist/core/vosk.d.ts.map +1 -0
  845. package/dist/core/vosk.js +94 -0
  846. package/dist/core/vosk.js.map +1 -0
  847. package/dist/index.js +40 -0
  848. package/dist/index.js.map +1 -1
  849. package/package.json +6 -1
  850. package/recipes/README.md +156 -0
  851. package/recipes/image-analysis/recipe.json +61 -0
  852. package/recipes/image-analysis@latest.zip +0 -0
  853. package/recipes/image-generator/recipe.json +7 -12
  854. package/recipes/posthog.json +46 -0
  855. package/recipes/revenuecat.json +43 -0
  856. package/recipes/sentry.json +46 -0
  857. package/recipes/voice-bot/recipe.json +10 -7
  858. package/recipes/wake-word/apps/native/assets/vosk-model/README.md +103 -0
  859. package/recipes/wake-word/apps/native/src/app/(root)/(protected)/test-wake-word.tsx +216 -0
  860. package/recipes/wake-word/apps/native/src/features/wake-word/components/index.ts +1 -0
  861. package/recipes/wake-word/apps/native/src/features/wake-word/components/wake-word-indicator.tsx +61 -0
  862. package/recipes/wake-word/apps/native/src/features/wake-word/constants.ts +10 -0
  863. package/recipes/wake-word/apps/native/src/features/wake-word/hooks/use-wake-word.ts +181 -0
  864. package/recipes/wake-word/apps/native/src/features/wake-word/index.ts +22 -0
  865. package/recipes/wake-word/apps/native/src/features/wake-word/services/audio-session.ts +40 -0
  866. package/recipes/wake-word/apps/native/src/features/wake-word/services/event-bus.ts +31 -0
  867. package/recipes/wake-word/apps/native/src/features/wake-word/services/keywords.ts +88 -0
  868. package/recipes/wake-word/apps/native/src/features/wake-word/services/wake-word-manager.ts +249 -0
  869. package/recipes/wake-word/apps/native/src/features/wake-word/types.ts +22 -0
  870. package/recipes/wake-word/recipe.json +50 -0
  871. package/recipes/wake-word/scripts/download-vosk-model.mjs +121 -0
  872. package/recipes/wake-word@latest.zip +0 -0
  873. package/scripts/sync-recipes.js +93 -0
  874. package/src/commands/add.ts +401 -68
  875. package/src/commands/checklist.ts +81 -6
  876. package/src/commands/env.ts +163 -0
  877. package/src/commands/health.ts +225 -0
  878. package/src/commands/init.ts +390 -0
  879. package/src/commands/list.ts +42 -16
  880. package/src/commands/login.ts +6 -0
  881. package/src/commands/remove.ts +12 -0
  882. package/src/core/__tests__/detect.test.ts +91 -0
  883. package/src/core/detect.ts +60 -0
  884. package/src/core/env.ts +109 -0
  885. package/src/core/errors.ts +122 -0
  886. package/src/core/prompt.ts +227 -16
  887. package/src/core/prompts.ts +115 -0
  888. package/src/core/recipes.ts +152 -0
  889. package/src/core/spinner.ts +87 -0
  890. package/src/core/vosk.ts +111 -0
  891. package/src/index.ts +50 -0
  892. package/test-locally.sh +145 -0
@@ -0,0 +1,156 @@
1
+ # VibeFast Service Configuration Recipes
2
+
3
+ This directory contains configuration guides for third-party services that are **already integrated** in VibeFast. These services just need your API keys and credentials to work.
4
+
5
+ ## What are Recipes?
6
+
7
+ Recipes are JSON files that provide:
8
+ - **Configuration steps** - How to get API keys and set them up
9
+ - **Environment variables** - Which .env vars you need
10
+ - **File locations** - Where to add your credentials in the codebase
11
+ - **Documentation links** - Official service documentation
12
+
13
+ ## Available Recipes
14
+
15
+ ### Analytics & Monitoring
16
+ - **sentry.json** - Error tracking (already integrated, just add DSN)
17
+ - **posthog.json** - Product analytics (already integrated, just add API key)
18
+
19
+ ### Payments & Subscriptions
20
+ - **revenuecat.json** - In-app purchases (already integrated, just add API keys)
21
+
22
+ ## Recipe Structure
23
+
24
+ ```json
25
+ {
26
+ "name": "service-name",
27
+ "version": "1.0.0",
28
+ "description": "Service description",
29
+ "target": "service",
30
+ "manualSteps": [
31
+ {
32
+ "title": "Step Title",
33
+ "description": "Step description",
34
+ "link": "https://docs.example.com",
35
+ "file": ".env.local",
36
+ "content": "ENV_VAR=value"
37
+ }
38
+ ],
39
+ "env": [
40
+ {
41
+ "key": "ENV_VAR_NAME",
42
+ "description": "Variable description",
43
+ "example": "example-value",
44
+ "required": true,
45
+ "link": "https://docs.example.com"
46
+ }
47
+ ],
48
+ "postInstall": {
49
+ "message": "Success message"
50
+ }
51
+ }
52
+ ```
53
+
54
+ ## Fields
55
+
56
+ ### Root Level
57
+ - `name` - Service identifier (lowercase, no spaces)
58
+ - `version` - Recipe version (semver)
59
+ - `description` - Short description of the service
60
+ - `target` - Type of recipe (usually "service")
61
+ - `manualSteps` - Array of setup steps
62
+ - `env` - Array of environment variables
63
+ - `postInstall` - Post-installation message
64
+
65
+ ### Manual Steps
66
+ - `title` - Step title
67
+ - `description` - Step description
68
+ - `link` - (Optional) Documentation link
69
+ - `file` - (Optional) File to edit
70
+ - `content` - (Optional) Content to add
71
+
72
+ ### Environment Variables
73
+ - `key` - Variable name
74
+ - `description` - What the variable is for
75
+ - `example` - Example value
76
+ - `required` - Whether it's required
77
+ - `link` - (Optional) Where to get the value
78
+
79
+ ## How to Use
80
+
81
+ ### View Setup Steps
82
+ ```bash
83
+ vf checklist sentry
84
+ vf checklist posthog
85
+ vf checklist stripe
86
+ ```
87
+
88
+ ### List All Services
89
+ ```bash
90
+ vf list
91
+ ```
92
+
93
+ ## Adding New Recipes
94
+
95
+ 1. Create a new JSON file in this directory
96
+ 2. Follow the recipe structure above
97
+ 3. Include clear setup steps and documentation links
98
+ 4. Test with `vf checklist <service-name>`
99
+
100
+ ## Recipe Guidelines
101
+
102
+ ### Setup Steps
103
+ - Keep steps clear and actionable
104
+ - Include links to official documentation
105
+ - Specify which files need to be edited
106
+ - Provide example values
107
+
108
+ ### Environment Variables
109
+ - Use clear, descriptive names
110
+ - Include example values
111
+ - Mark required vs optional
112
+ - Provide links to where users can get values
113
+ - Never include actual secrets in examples
114
+
115
+ ### Documentation
116
+ - Link to official service documentation
117
+ - Link to relevant setup guides
118
+ - Include links to dashboards/settings pages
119
+
120
+ ## Integration with CLI
121
+
122
+ Recipes are automatically discovered by the CLI through the VibeFast API. When users run:
123
+
124
+ ```bash
125
+ vf list # Shows all available services
126
+ vf checklist <name> # Shows setup steps for a service
127
+ vf env # Prompts for environment variables
128
+ ```
129
+
130
+ The CLI fetches recipe data from the API and displays it to users.
131
+
132
+ ## Testing Recipes
133
+
134
+ To test a recipe locally:
135
+
136
+ 1. Ensure the recipe JSON is valid
137
+ 2. Run `vf checklist <service-name>`
138
+ 3. Verify all steps display correctly
139
+ 4. Check that environment variables are listed
140
+ 5. Verify documentation links work
141
+
142
+ ## Best Practices
143
+
144
+ 1. **Be Specific** - Clear, actionable steps
145
+ 2. **Provide Examples** - Show what values should look like
146
+ 3. **Link to Docs** - Always provide official documentation
147
+ 4. **Test Thoroughly** - Verify all links work
148
+ 5. **Keep Updated** - Update recipes when services change
149
+ 6. **Security** - Never include real secrets or API keys
150
+
151
+ ## Support
152
+
153
+ For issues or questions about recipes:
154
+ - 📧 Email: support@vibefast.pro
155
+ - 📚 Docs: https://vibefast.pro/docs
156
+ - 🐛 Issues: https://github.com/vibefast/vibefast-cli/issues
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "image-analysis",
3
+ "version": "1.0.0",
4
+ "description": "AI-powered image analysis with trait detection",
5
+ "copy": [
6
+ {
7
+ "from": "apps/native/src/app/image-analysis",
8
+ "to": "apps/native/src/app/(root)/(protected)/image-analysis"
9
+ },
10
+ {
11
+ "from": "apps/native/src/features/image-analysis",
12
+ "to": "apps/native/src/features/image-analysis"
13
+ },
14
+ {
15
+ "from": "apps/native/src/api-client/image-analysis.ts",
16
+ "to": "apps/native/src/api-client/image-analysis.ts"
17
+ },
18
+ {
19
+ "from": "packages/backend/convex/image-analysis",
20
+ "to": "packages/backend/convex/image-analysis"
21
+ },
22
+ {
23
+ "from": "packages/backend/convex/imageAnalysisFunctions.ts",
24
+ "to": "packages/backend/convex/imageAnalysisFunctions.ts"
25
+ }
26
+ ],
27
+ "nav": {
28
+ "href": "/(root)/(protected)/image-analysis",
29
+ "label": "Image Analysis",
30
+ "icon": "🔍",
31
+ "color": "#06B6D4"
32
+ },
33
+ "target": "native",
34
+ "env": [
35
+ {
36
+ "key": "OPENAI_API_KEY",
37
+ "description": "OpenAI API key for image analysis (optional - use this OR Gemini, not both).",
38
+ "example": "sk-abc123def456",
39
+ "link": "https://platform.openai.com/account/api-keys"
40
+ },
41
+ {
42
+ "key": "GEMINI_API_KEY",
43
+ "description": "Google Generative AI key for image analysis (optional - use this OR OpenAI, not both).",
44
+ "example": "AIzaSyExampleGeminiKey",
45
+ "link": "https://console.cloud.google.com/apis/credentials"
46
+ }
47
+ ],
48
+ "manualSteps": [
49
+ {
50
+ "title": "Get ONE LLM API key (choose your provider)",
51
+ "description": "You only need ONE of these:\n\n Option A: OpenAI\n Visit https://platform.openai.com/account/api-keys and create an API key\n\n Option B: Google Gemini\n Visit https://console.cloud.google.com/apis/credentials and create an API key",
52
+ "link": "https://platform.openai.com/account/api-keys"
53
+ },
54
+ {
55
+ "title": "Add key to .env file",
56
+ "description": "Open your .env file and add the API key you chose. Only add ONE:\n\n For OpenAI: OPENAI_API_KEY=sk-...\n For Gemini: GEMINI_API_KEY=AIzaSy...",
57
+ "file": ".env",
58
+ "content": "# Choose ONE provider:\nOPENAI_API_KEY=sk-...\n# OR\nGEMINI_API_KEY=AIzaSy...\n"
59
+ }
60
+ ]
61
+ }
@@ -30,33 +30,28 @@
30
30
  "env": [
31
31
  {
32
32
  "key": "OPENAI_API_KEY",
33
- "description": "OpenAI key to call DALL·E or other text-to-image models.",
33
+ "description": "OpenAI key for DALL-E image generation (optional - use this OR Gemini, not both).",
34
34
  "example": "sk-abc123def456",
35
35
  "link": "https://platform.openai.com/account/api-keys"
36
36
  },
37
37
  {
38
38
  "key": "GEMINI_API_KEY",
39
- "description": "Google Generative AI key used to access Gemini image models.",
39
+ "description": "Google Generative AI key for Gemini image generation (optional - use this OR OpenAI, not both).",
40
40
  "example": "AIzaSyExampleGeminiKey",
41
41
  "link": "https://console.cloud.google.com/apis/credentials"
42
42
  }
43
43
  ],
44
44
  "manualSteps": [
45
45
  {
46
- "title": "Create an OpenAI API key",
47
- "description": "Sign into the OpenAI dashboard and create a server API key for image generation.",
46
+ "title": "Get ONE LLM API key (choose your provider)",
47
+ "description": "You only need ONE of these:\n\n Option A: OpenAI (DALL-E)\n Visit https://platform.openai.com/account/api-keys and create an API key\n\n Option B: Google Gemini\n Visit https://console.cloud.google.com/apis/credentials and create an API key",
48
48
  "link": "https://platform.openai.com/account/api-keys"
49
49
  },
50
50
  {
51
- "title": "Create a Gemini API key",
52
- "description": "Enable Generative AI APIs in Google Cloud and copy a key for Gemini image models.",
53
- "link": "https://console.cloud.google.com/apis/credentials"
54
- },
55
- {
56
- "title": "Store the keys in .env",
57
- "description": "Add whichever providers you plan to use to your environment so Convex can authenticate.",
51
+ "title": "Add key to .env file",
52
+ "description": "Open your .env file and add the API key you chose. Only add ONE:\n\n For OpenAI: OPENAI_API_KEY=sk-...\n For Gemini: GEMINI_API_KEY=AIzaSy...",
58
53
  "file": ".env",
59
- "content": "OPENAI_API_KEY=sk-...\nGEMINI_API_KEY=AIzaSy...\n"
54
+ "content": "# Choose ONE provider:\nOPENAI_API_KEY=sk-...\n# OR\nGEMINI_API_KEY=AIzaSy...\n"
60
55
  }
61
56
  ]
62
57
  }
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "posthog",
3
+ "version": "1.0.0",
4
+ "description": "Product analytics and feature flags (already integrated in VibeFast)",
5
+ "target": "service",
6
+ "manualSteps": [
7
+ {
8
+ "title": "Create PostHog Project",
9
+ "description": "Sign up at posthog.com and create a new project",
10
+ "link": "https://posthog.com/signup"
11
+ },
12
+ {
13
+ "title": "Get Your API Key",
14
+ "description": "Copy your project API key from PostHog settings",
15
+ "link": "https://app.posthog.com/project/settings"
16
+ },
17
+ {
18
+ "title": "Add API Key to Environment Files",
19
+ "description": "Add POSTHOG_API_KEY to all your .env files",
20
+ "file": "apps/native/.env.local",
21
+ "content": "POSTHOG_API_KEY=phc_your_api_key_here"
22
+ },
23
+ {
24
+ "title": "Restart Development Server",
25
+ "description": "Restart your Expo dev server to load the new environment variable",
26
+ "content": "pnpm dev:native"
27
+ },
28
+ {
29
+ "title": "Verify Analytics",
30
+ "description": "PostHog is already integrated via core/analytics. Check your PostHog dashboard for events",
31
+ "link": "https://app.posthog.com/events"
32
+ }
33
+ ],
34
+ "env": [
35
+ {
36
+ "key": "POSTHOG_API_KEY",
37
+ "description": "PostHog project API key - get from your PostHog project settings",
38
+ "example": "phc_abc123def456ghi789",
39
+ "required": true,
40
+ "link": "https://app.posthog.com/project/settings"
41
+ }
42
+ ],
43
+ "postInstall": {
44
+ "message": "✅ PostHog is already integrated! Just add your API key to .env files"
45
+ }
46
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "revenuecat",
3
+ "version": "1.0.0",
4
+ "description": "In-app purchases and subscriptions (already integrated in VibeFast)",
5
+ "target": "service",
6
+ "manualSteps": [
7
+ {
8
+ "title": "Create RevenueCat Project",
9
+ "description": "Sign up at revenuecat.com and create a new project",
10
+ "link": "https://app.revenuecat.com/signup"
11
+ },
12
+ {
13
+ "title": "Configure App Stores",
14
+ "description": "Link your iOS (App Store Connect) and Android (Google Play) apps to RevenueCat",
15
+ "link": "https://www.revenuecat.com/docs/getting-started"
16
+ },
17
+ {
18
+ "title": "Get API Keys",
19
+ "description": "Copy your public API keys (iOS and Android) from RevenueCat settings",
20
+ "link": "https://app.revenuecat.com/settings/api-keys"
21
+ },
22
+ {
23
+ "title": "Update Payment Service",
24
+ "description": "Replace mock API keys in payment-service.ts with your real keys",
25
+ "file": "apps/native/src/features/payments/services/payment-service.ts",
26
+ "content": "// Find and replace:\nconst REVENUECAT_API_KEY_IOS = 'your_actual_ios_key';\nconst REVENUECAT_API_KEY_ANDROID = 'your_actual_android_key';"
27
+ },
28
+ {
29
+ "title": "Create Products & Entitlements",
30
+ "description": "Set up your subscription products and entitlements in RevenueCat dashboard",
31
+ "link": "https://www.revenuecat.com/docs/entitlements"
32
+ },
33
+ {
34
+ "title": "Test Purchases",
35
+ "description": "Use sandbox accounts to test purchases. RevenueCat integration is already complete in VibeFast",
36
+ "link": "https://www.revenuecat.com/docs/test-and-launch"
37
+ }
38
+ ],
39
+ "env": [],
40
+ "postInstall": {
41
+ "message": "✅ RevenueCat is already integrated! Just update API keys in payment-service.ts"
42
+ }
43
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "sentry",
3
+ "version": "1.0.0",
4
+ "description": "Error tracking and performance monitoring (already integrated in VibeFast)",
5
+ "target": "service",
6
+ "manualSteps": [
7
+ {
8
+ "title": "Create Sentry Project",
9
+ "description": "Sign up at sentry.io and create a React Native project",
10
+ "link": "https://sentry.io/signup/"
11
+ },
12
+ {
13
+ "title": "Get Your DSN",
14
+ "description": "Copy your project's DSN from Sentry dashboard",
15
+ "link": "https://sentry.io/settings/projects/"
16
+ },
17
+ {
18
+ "title": "Add DSN to Environment Files",
19
+ "description": "Add SENTRY_DSN to all your .env files",
20
+ "file": "apps/native/.env.local",
21
+ "content": "SENTRY_DSN=https://your-key@o0.ingest.sentry.io/your-project-id"
22
+ },
23
+ {
24
+ "title": "Restart Development Server",
25
+ "description": "Restart your Expo dev server to load the new environment variable",
26
+ "content": "pnpm dev:native"
27
+ },
28
+ {
29
+ "title": "Test Error Tracking",
30
+ "description": "Sentry is already initialized in your app. Trigger a test error to verify it's working",
31
+ "link": "https://docs.sentry.io/platforms/react-native/usage/"
32
+ }
33
+ ],
34
+ "env": [
35
+ {
36
+ "key": "SENTRY_DSN",
37
+ "description": "Sentry Data Source Name - get from your Sentry project settings",
38
+ "example": "https://abc123@o0.ingest.sentry.io/123456",
39
+ "required": true,
40
+ "link": "https://sentry.io/settings/projects/"
41
+ }
42
+ ],
43
+ "postInstall": {
44
+ "message": "✅ Sentry is already integrated! Just add your DSN to .env files"
45
+ }
46
+ }
@@ -49,21 +49,24 @@
49
49
  "manualSteps": [
50
50
  {
51
51
  "title": "Create an ElevenLabs Conversational AI agent",
52
- "description": "Sign up at ElevenLabs, enable the Conversational AI tab, and provision an agent with speech capabilities."
52
+ "description": "Visit https://elevenlabs.io, sign up, go to the Conversational AI tab, and create a new agent with speech capabilities enabled.",
53
+ "link": "https://elevenlabs.io/"
53
54
  },
54
55
  {
55
- "title": "Copy your agent ID and API key",
56
- "description": "Copy the agent ID and the API key from the ElevenLabs dashboard so the backend token route can authenticate."
56
+ "title": "Get your ElevenLabs API key and Agent ID",
57
+ "description": "From the ElevenLabs dashboard, copy your API key (from Account settings) and your Agent ID (from the agent you just created).",
58
+ "link": "https://elevenlabs.io/account"
57
59
  },
58
60
  {
59
- "title": "Store env variables",
60
- "description": "Add the agent ID and API key to your `.env` file to unlock the voice route.",
61
+ "title": "Add keys to .env file",
62
+ "description": "Open your .env file and add the API key and Agent ID you just copied.",
61
63
  "file": ".env",
62
64
  "content": "ELEVENLABS_AGENT_ID=agent-...\nELEVENLABS_API_KEY=elevenlabs_...\n"
63
65
  },
64
66
  {
65
- "title": "Install native dependencies and build a dev client",
66
- "description": "Voice bot requires a dev client (WebRTC/native modules), so run `pnpx expo prebuild` and start a native build (`pnpm ios -d` or `pnpm android -d`)."
67
+ "title": "Build a dev client with native modules",
68
+ "description": "Voice bot requires native WebRTC modules. Run: pnpx expo prebuild && pnpm ios -d (or pnpm android -d for Android)",
69
+ "link": "https://docs.expo.dev/build/setup/"
67
70
  }
68
71
  ]
69
72
  }
@@ -0,0 +1,103 @@
1
+ # Vosk Model for Wake Word Detection
2
+
3
+ This directory contains the Vosk speech recognition model for on-device wake word detection.
4
+
5
+ ## Required Model
6
+
7
+ You need to download and place a Vosk model here.
8
+
9
+ ### Recommended Model
10
+
11
+ **vosk-model-small-en-us-0.15** (~40 MB)
12
+
13
+ - Optimized for mobile devices
14
+ - Good accuracy for wake word detection
15
+ - Low memory footprint
16
+
17
+ ## How to Download
18
+
19
+ ### Automated (Recommended)
20
+
21
+ Run this command from the project root:
22
+
23
+ ```bash
24
+ pnpm setup:vosk
25
+ ```
26
+
27
+ This will automatically download, extract, and configure the model.
28
+
29
+ ### Manual Setup
30
+
31
+ 1. Go to [Vosk Models Page](https://alphacephei.com/vosk/models)
32
+ 2. Download `vosk-model-small-en-us-0.15.zip`
33
+ 3. Extract the ZIP file
34
+ 4. Rename the extracted folder to `model-en-us`
35
+ 5. Place the entire folder in this directory
36
+
37
+ ## Directory Structure
38
+
39
+ After setup, you should have:
40
+
41
+ ```
42
+ assets/vosk-model/
43
+ └── vosk-model-small-en-us-0.15/
44
+ ├── am/
45
+ ├── conf/
46
+ ├── graph/
47
+ ├── ivector/
48
+ └── README
49
+ ```
50
+
51
+ ## Important Notes
52
+
53
+ - **Do NOT commit the model** to git (it's in .gitignore)
54
+ - Each developer needs to download their own model
55
+ - The model is ~40 MB uncompressed
56
+ - Model works offline (no internet required)
57
+ - Model is free and open source
58
+
59
+ ## Alternative Models
60
+
61
+ If you need a different language or size:
62
+
63
+ - **Smaller** (~10 MB): `vosk-model-small-en-us-0.15` (less accurate)
64
+ - **Larger** (~1.8 GB): `vosk-model-en-us-0.22` (more accurate, not recommended for mobile)
65
+ - **Other languages**: See [Vosk Models](https://alphacephei.com/vosk/models)
66
+
67
+ ## Configuration
68
+
69
+ The model path is configured in `app.config.ts`:
70
+
71
+ ```typescript
72
+ [
73
+ 'react-native-vosk',
74
+ {
75
+ models: ['assets/vosk-model'],
76
+ iOSMicrophonePermission:
77
+ 'We use the mic for on-device wake-phrase detection.',
78
+ },
79
+ ];
80
+ ```
81
+
82
+ ## No API Key Required
83
+
84
+ Unlike Picovoice, Vosk is completely free and open source. No API key or account needed!
85
+
86
+ ## Troubleshooting
87
+
88
+ ### Model not found error
89
+
90
+ - Verify the model folder exists in `assets/vosk-model/`
91
+ - Check the folder name matches what's in `app.config.ts`
92
+ - Run `pnpm prebuild` after adding the model
93
+
94
+ ### Build size too large
95
+
96
+ - Use the "small" model variant
97
+ - Ensure you're not including multiple models
98
+
99
+ ### Recognition not working
100
+
101
+ - Verify model is for English (if using English wake words)
102
+ - Check microphone permissions are granted
103
+ - Test with clear speech at normal volume