vibefast-cli 0.7.0 → 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.
- package/dist/__tests__/recipes.test.js +5 -5
- package/dist/__tests__/recipes.test.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +136 -48
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +106 -89
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/remove.js +1 -1
- package/dist/commands/remove.js.map +1 -1
- package/dist/core/__tests__/fsx.test.js +3 -1
- package/dist/core/__tests__/fsx.test.js.map +1 -1
- package/dist/core/__tests__/prompt.test.js +12 -12
- package/dist/core/__tests__/prompt.test.js.map +1 -1
- package/dist/core/__tests__/validate.test.js +4 -3
- package/dist/core/__tests__/validate.test.js.map +1 -1
- package/dist/core/auth.d.ts.map +1 -1
- package/dist/core/auth.js +8 -0
- package/dist/core/auth.js.map +1 -1
- package/dist/core/codemod.d.ts +13 -0
- package/dist/core/codemod.d.ts.map +1 -1
- package/dist/core/codemod.js +50 -0
- package/dist/core/codemod.js.map +1 -1
- package/dist/core/errors.js +1 -1
- package/dist/core/fsx.js +1 -1
- package/dist/core/fsx.js.map +1 -1
- package/dist/core/recipes.d.ts.map +1 -1
- package/dist/core/recipes.js +65 -10
- package/dist/core/recipes.js.map +1 -1
- package/package.json +1 -1
- package/recipes/animated-chip/recipe.json +15 -0
- package/recipes/animated-chip@latest.zip +0 -0
- package/recipes/animated-switch/recipe.json +15 -0
- package/recipes/animated-switch@latest.zip +0 -0
- package/recipes/audio-recorder@latest.zip +0 -0
- package/recipes/charts/apps/native/src/features/charts/components/doughnut-chart.tsx +29 -18
- package/recipes/charts@latest.zip +0 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/message-list.tsx +1 -1
- package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-smart-scroll-manager.ts +6 -0
- package/recipes/chatbot/recipe.json +21 -5
- package/recipes/chatbot@latest.zip +0 -0
- package/recipes/glowing-button@latest.zip +0 -0
- package/recipes/image-analysis/recipe.json +36 -19
- package/recipes/image-analysis@latest.zip +0 -0
- package/recipes/image-generator/apps/native/src/features/image-generator/app/_layout.tsx +1 -0
- package/recipes/image-generator/apps/native/src/features/image-generator/app/gallery.tsx +1 -1
- package/recipes/image-generator/apps/native/src/features/image-generator/components/gallery-image.tsx +2 -3
- package/recipes/image-generator/recipe.json +5 -3
- package/recipes/image-generator@latest.zip +0 -0
- package/recipes/ios-widget/recipe.json +24 -0
- package/recipes/ios-widget@latest.zip +0 -0
- package/recipes/number-stepper/recipe.json +15 -0
- package/recipes/number-stepper@latest.zip +0 -0
- package/recipes/payments/recipe.json +30 -0
- package/recipes/payments@latest.zip +0 -0
- package/recipes/posthog.json +2 -1
- package/recipes/progress-circle/recipe.json +15 -0
- package/recipes/progress-circle@latest.zip +0 -0
- package/recipes/quiz@latest.zip +0 -0
- package/recipes/sentry.json +2 -1
- package/recipes/swipe-slider/recipe.json +15 -0
- package/recipes/swipe-slider@latest.zip +0 -0
- package/recipes/{0 → timeline}/recipe.json +3 -6
- package/recipes/timeline@latest.zip +0 -0
- package/recipes/tracker-app@latest.zip +0 -0
- package/recipes/upload-all.sh +13 -2
- package/recipes/voice-bot/recipe.json +15 -2
- package/recipes/voice-bot@latest.zip +0 -0
- package/recipes/wake-word/apps/native/src/app/(root)/(protected)/test-wake-word.tsx +0 -2
- package/recipes/wake-word/recipe.json +2 -2
- package/recipes/wake-word@latest.zip +0 -0
- package/src/__tests__/recipes.test.ts +5 -5
- package/src/commands/add.ts +230 -54
- package/src/commands/init.ts +118 -102
- package/src/commands/remove.ts +1 -1
- package/src/core/__tests__/fsx.test.ts +3 -1
- package/src/core/__tests__/prompt.test.ts +12 -12
- package/src/core/__tests__/validate.test.ts +4 -3
- package/src/core/auth.ts +8 -0
- package/src/core/codemod.ts +66 -0
- package/src/core/errors.ts +1 -1
- package/src/core/fsx.ts +1 -1
- package/src/core/recipes.ts +67 -11
- package/2/.claude/agents/architect.md +0 -74
- package/2/.claude/agents/convex-reviewer.md +0 -267
- package/2/.claude/agents/debug-detective.md +0 -62
- package/2/.claude/agents/learner.md +0 -64
- package/2/.claude/agents/perf-optimizer.md +0 -71
- package/2/.claude/agents/security-researcher.md +0 -42
- package/2/.claude/agents/tech-researcher.md +0 -46
- package/2/.claude/agents/ux-designer.md +0 -45
- package/2/.claude/commands/create-app-design.md +0 -279
- package/2/.claude/commands/create-prd-interactive.md +0 -113
- package/2/.claude/commands/create-prd.md +0 -111
- package/2/.claude/commands/create-tech-stack.md +0 -345
- package/2/.claude/commands/update-app-design.md +0 -298
- package/2/.claude/commands/update-project-structure.md +0 -14
- package/2/.claude/commands/update-tech-stack.md +0 -325
- package/2/.claude/docs/CONVEX_FEATURES_PLAN.md +0 -249
- package/2/.claude/docs/app-design-document.md +0 -0
- package/2/.claude/docs/project-status.md +0 -25
- package/2/.claude/docs/project-structure.md +0 -7
- package/2/.claude/docs/tech-stack.md +0 -157
- package/2/.claude/scripts/tree.sh +0 -70
- package/2/.claude/settings.json +0 -30
- package/2/.cursor/commands/code-review-high.md +0 -190
- package/2/.cursorignore +0 -3
- package/2/.github/ISSUE_TEMPLATE.md +0 -13
- package/2/.github/PULL_REQUEST_TEMPLATE.md +0 -23
- package/2/.github/actions/eas-build/action.yml +0 -85
- package/2/.github/actions/setup-jdk-generate-apk/action.yml +0 -48
- package/2/.github/actions/setup-node-pnpm-install/action.yml +0 -29
- package/2/.github/scripts/expo-doctor.sh +0 -26
- package/2/.github/workflows/compress-images.yml +0 -48
- package/2/.github/workflows/e2e-android-eas-build.yml +0 -111
- package/2/.github/workflows/e2e-android-maestro.yml +0 -52
- package/2/.github/workflows/e2e-android.yml +0 -119
- package/2/.github/workflows/eas-build-prod.yml +0 -43
- package/2/.github/workflows/eas-build-qa.yml +0 -47
- package/2/.github/workflows/expo-doctor.yml +0 -61
- package/2/.github/workflows/lint-ts.yml +0 -49
- package/2/.github/workflows/new-app-version.yml +0 -65
- package/2/.github/workflows/new-github-release.yml +0 -34
- package/2/.github/workflows/stale.yml +0 -24
- package/2/.github/workflows/test.yml +0 -50
- package/2/.github/workflows/type-check.yml +0 -54
- package/2/.husky/commit-msg +0 -1
- package/2/.husky/common.sh +0 -8
- package/2/.husky/post-merge +0 -18
- package/2/.husky/pre-commit +0 -24
- package/2/.prettierignore +0 -14
- package/2/.prettierrc.json +0 -10
- package/2/.vibefast/README.md +0 -59
- package/2/.vibefast/config.json +0 -4
- package/2/.vibefast/journal.json +0 -234
- package/2/.vibefast/starter.json +0 -5
- package/2/AGENTS.md +0 -48
- package/2/LICENSE +0 -21
- package/2/README.md +0 -127
- package/2/apps/native/__mocks__/bottom-sheet.js +0 -6
- package/2/apps/native/__mocks__/expo-router.js +0 -16
- package/2/apps/native/__mocks__/react-native-gesture-handler.ts +0 -17
- package/2/apps/native/app-env.d.ts +0 -2
- package/2/apps/native/app.config.ts +0 -167
- package/2/apps/native/assets/adaptive-icon.png +0 -0
- package/2/apps/native/assets/favicon.png +0 -0
- package/2/apps/native/assets/fonts/Inter.ttf +0 -0
- package/2/apps/native/assets/fonts/SF-Pro-Display-Bold.otf +0 -0
- package/2/apps/native/assets/fonts/SF-Pro-Display-Medium.otf +0 -0
- package/2/apps/native/assets/fonts/SF-Pro-Display-Regular.otf +0 -0
- package/2/apps/native/assets/fonts/SF-Pro-Display-Semibold.otf +0 -0
- package/2/apps/native/assets/fonts/SpaceMono-Regular.ttf +0 -0
- package/2/apps/native/assets/icon.png +0 -0
- package/2/apps/native/assets/images/cover-image.png +0 -0
- package/2/apps/native/assets/lottie-animations/onboarding-1.json +0 -6504
- package/2/apps/native/assets/lottie-animations/onboarding-2.json +0 -1993
- package/2/apps/native/assets/lottie-animations/onboarding-3.json +0 -50159
- package/2/apps/native/assets/lottie-animations/onboarding-4.json +0 -735
- package/2/apps/native/assets/lottie-animations/onboarding-6.json +0 -2167
- package/2/apps/native/assets/splash-icon.png +0 -0
- package/2/apps/native/babel.config.js +0 -39
- package/2/apps/native/eas.json +0 -75
- package/2/apps/native/env.js +0 -196
- package/2/apps/native/global.css +0 -51
- package/2/apps/native/index.ts +0 -5
- package/2/apps/native/jest-setup.ts +0 -7
- package/2/apps/native/jest.config.js +0 -72
- package/2/apps/native/metro.config.js +0 -85
- package/2/apps/native/nativewind-env.d.ts +0 -1
- package/2/apps/native/package.json +0 -232
- package/2/apps/native/scripts/DRY_RUN_REPORT.md +0 -0
- package/2/apps/native/scripts/QUICK_START.md +0 -76
- package/2/apps/native/scripts/README.md +0 -187
- package/2/apps/native/scripts/convex-setup.js +0 -48
- package/2/apps/native/scripts/genrate-apk-and-install +0 -39
- package/2/apps/native/scripts/i18next-syntax-validation.js +0 -23
- package/2/apps/native/scripts/starter-setup.mjs +0 -246
- package/2/apps/native/src/api-client/auth.ts +0 -68
- package/2/apps/native/src/api-client/chatbot.ts +0 -83
- package/2/apps/native/src/api-client/client.ts +0 -4
- package/2/apps/native/src/api-client/image-generator.ts +0 -34
- package/2/apps/native/src/api-client/index.ts +0 -27
- package/2/apps/native/src/api-client/payments.ts +0 -44
- package/2/apps/native/src/api-client/reporting.ts +0 -29
- package/2/apps/native/src/api-client/shared.ts +0 -43
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/_layout.tsx +0 -166
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/index.tsx +0 -174
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/profile.tsx +0 -320
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/settings.tsx +0 -344
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/_layout.tsx +0 -198
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/accordion.tsx +0 -60
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/advanced.tsx +0 -24
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/avatar.tsx +0 -154
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/badge-chips-toggle.tsx +0 -81
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/buttons.tsx +0 -24
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/charts.tsx +0 -3
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/date-picker.tsx +0 -120
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/file-picker.tsx +0 -133
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/gallery-video.tsx +0 -119
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/index.tsx +0 -69
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/inputs-stepper.tsx +0 -78
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/picker-dropdown.tsx +0 -56
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/popover-bottomsheet.tsx +0 -229
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/progress.tsx +0 -38
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/searchbar.tsx +0 -70
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/sliders.tsx +0 -93
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/spinner.tsx +0 -80
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/switch.tsx +0 -47
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/table.tsx +0 -352
- package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/tabs-timeline.tsx +0 -122
- package/2/apps/native/src/app/(root)/(protected)/_layout.tsx +0 -143
- package/2/apps/native/src/app/(root)/(protected)/audio-recorder/index.tsx +0 -5
- package/2/apps/native/src/app/(root)/(protected)/charts/index.tsx +0 -6
- package/2/apps/native/src/app/(root)/(protected)/chatbot/index.tsx +0 -2
- package/2/apps/native/src/app/(root)/(protected)/image-generator/gallery.tsx +0 -3
- package/2/apps/native/src/app/(root)/(protected)/image-generator/index.tsx +0 -3
- package/2/apps/native/src/app/(root)/(protected)/paywall/index.tsx +0 -74
- package/2/apps/native/src/app/(root)/(protected)/paywall/local.tsx +0 -25
- package/2/apps/native/src/app/(root)/(protected)/paywall/remote.tsx +0 -23
- package/2/apps/native/src/app/(root)/(protected)/quick-actions-demo/index.tsx +0 -32
- package/2/apps/native/src/app/(root)/(protected)/quiz/index.tsx +0 -47
- package/2/apps/native/src/app/(root)/(protected)/test-wake-word.tsx +0 -214
- package/2/apps/native/src/app/(root)/(protected)/tracker-app/index.tsx +0 -1
- package/2/apps/native/src/app/(root)/(protected)/voice-bot/index.tsx +0 -27
- package/2/apps/native/src/app/(root)/(public)/(auth)/_layout.tsx +0 -44
- package/2/apps/native/src/app/(root)/(public)/(auth)/forgot-password.tsx +0 -185
- package/2/apps/native/src/app/(root)/(public)/(auth)/login.tsx +0 -219
- package/2/apps/native/src/app/(root)/(public)/(auth)/otp-verification.tsx +0 -369
- package/2/apps/native/src/app/(root)/(public)/(auth)/reset-password.tsx +0 -247
- package/2/apps/native/src/app/(root)/(public)/(auth)/signup.tsx +0 -207
- package/2/apps/native/src/app/(root)/(public)/_layout.tsx +0 -60
- package/2/apps/native/src/app/(root)/(public)/onboarding/demo-one.tsx +0 -5
- package/2/apps/native/src/app/(root)/(public)/onboarding/demo-two.tsx +0 -52
- package/2/apps/native/src/app/(root)/(public)/onboarding/index.tsx +0 -82
- package/2/apps/native/src/app/(root)/_layout.tsx +0 -30
- package/2/apps/native/src/app/+html.tsx +0 -46
- package/2/apps/native/src/app/[...messing].tsx +0 -24
- package/2/apps/native/src/app/_layout.tsx +0 -56
- package/2/apps/native/src/app/tsconfig.json +0 -3
- package/2/apps/native/src/components/advanced-ui/buttons/glowing-button.tsx +0 -366
- package/2/apps/native/src/components/analytics/navigation-tracker.tsx +0 -10
- package/2/apps/native/src/components/demo/advanced-ui-components.tsx +0 -46
- package/2/apps/native/src/components/demo/buttons-demo.tsx +0 -56
- package/2/apps/native/src/components/demo/colors-demo.tsx +0 -52
- package/2/apps/native/src/components/demo/dropdown-picker-demo.tsx +0 -274
- package/2/apps/native/src/components/demo/inputs-demo.tsx +0 -99
- package/2/apps/native/src/components/demo/notification-demo.tsx +0 -434
- package/2/apps/native/src/components/demo/title-demo.tsx +0 -16
- package/2/apps/native/src/components/demo/toast-demo.tsx +0 -81
- package/2/apps/native/src/components/demo/typography-demo.tsx +0 -28
- package/2/apps/native/src/components/performance/render-performance-monitor.tsx +0 -36
- package/2/apps/native/src/components/ui/accordion.tsx +0 -138
- package/2/apps/native/src/components/ui/avatar.tsx +0 -66
- package/2/apps/native/src/components/ui/badge.tsx +0 -68
- package/2/apps/native/src/components/ui/bottom-sheet.tsx +0 -61
- package/2/apps/native/src/components/ui/colors.js +0 -290
- package/2/apps/native/src/components/ui/core/button.tsx +0 -317
- package/2/apps/native/src/components/ui/core/card.tsx +0 -40
- package/2/apps/native/src/components/ui/core/checkbox.tsx +0 -264
- package/2/apps/native/src/components/ui/core/feature-button.tsx +0 -162
- package/2/apps/native/src/components/ui/core/focus-aware-status-bar.tsx +0 -21
- package/2/apps/native/src/components/ui/core/image.tsx +0 -30
- package/2/apps/native/src/components/ui/core/inputs/floating-text-input.tsx +0 -369
- package/2/apps/native/src/components/ui/core/inputs/input-otp.tsx +0 -304
- package/2/apps/native/src/components/ui/core/inputs/input.tsx +0 -373
- package/2/apps/native/src/components/ui/core/list.tsx +0 -60
- package/2/apps/native/src/components/ui/core/navigation/animated-header.tsx +0 -87
- package/2/apps/native/src/components/ui/core/navigation/screen-footer.tsx +0 -67
- package/2/apps/native/src/components/ui/core/overlays/dropdown.tsx +0 -290
- package/2/apps/native/src/components/ui/core/overlays/full-screen-loading.tsx +0 -15
- package/2/apps/native/src/components/ui/core/overlays/modal-keyboard-aware-scroll-view.tsx +0 -46
- package/2/apps/native/src/components/ui/core/overlays/modal.tsx +0 -247
- package/2/apps/native/src/components/ui/core/pagination-dots.tsx +0 -231
- package/2/apps/native/src/components/ui/core/pressable.tsx +0 -48
- package/2/apps/native/src/components/ui/core/progress-bar.tsx +0 -47
- package/2/apps/native/src/components/ui/core/progress.tsx +0 -149
- package/2/apps/native/src/components/ui/core/select.tsx +0 -261
- package/2/apps/native/src/components/ui/core/spinner.tsx +0 -387
- package/2/apps/native/src/components/ui/core/text.tsx +0 -45
- package/2/apps/native/src/components/ui/core/toast.tsx +0 -190
- package/2/apps/native/src/components/ui/custom-switch.tsx +0 -90
- package/2/apps/native/src/components/ui/date-time-picker.tsx +0 -268
- package/2/apps/native/src/components/ui/debug.ts +0 -2
- package/2/apps/native/src/components/ui/extras/debug-credit-tester.tsx +0 -107
- package/2/apps/native/src/components/ui/extras/debug-mmkv-state.tsx +0 -53
- package/2/apps/native/src/components/ui/extras/handle-error.ts +0 -191
- package/2/apps/native/src/components/ui/extras/hello-wave.tsx +0 -70
- package/2/apps/native/src/components/ui/extras/icon.tsx +0 -36
- package/2/apps/native/src/components/ui/extras/network-connectivity-wrapper.tsx +0 -36
- package/2/apps/native/src/components/ui/extras/offline-indicator.tsx +0 -55
- package/2/apps/native/src/components/ui/extras/social-login-buttons.tsx +0 -296
- package/2/apps/native/src/components/ui/file-picker.tsx +0 -177
- package/2/apps/native/src/components/ui/gallery.tsx +0 -79
- package/2/apps/native/src/components/ui/icons/apple.tsx +0 -19
- package/2/apps/native/src/components/ui/icons/arrow-right.tsx +0 -26
- package/2/apps/native/src/components/ui/icons/camera.tsx +0 -26
- package/2/apps/native/src/components/ui/icons/caret-down.tsx +0 -20
- package/2/apps/native/src/components/ui/icons/chevron-up.tsx +0 -21
- package/2/apps/native/src/components/ui/icons/claude.tsx +0 -15
- package/2/apps/native/src/components/ui/icons/copy.tsx +0 -27
- package/2/apps/native/src/components/ui/icons/deepseek.tsx +0 -15
- package/2/apps/native/src/components/ui/icons/download.tsx +0 -32
- package/2/apps/native/src/components/ui/icons/feed.tsx +0 -12
- package/2/apps/native/src/components/ui/icons/gemini.tsx +0 -15
- package/2/apps/native/src/components/ui/icons/github.tsx +0 -30
- package/2/apps/native/src/components/ui/icons/google.tsx +0 -24
- package/2/apps/native/src/components/ui/icons/groq.tsx +0 -15
- package/2/apps/native/src/components/ui/icons/home.tsx +0 -19
- package/2/apps/native/src/components/ui/icons/index.tsx +0 -26
- package/2/apps/native/src/components/ui/icons/language.tsx +0 -33
- package/2/apps/native/src/components/ui/icons/llama.tsx +0 -15
- package/2/apps/native/src/components/ui/icons/microphone.tsx +0 -20
- package/2/apps/native/src/components/ui/icons/mistral.tsx +0 -22
- package/2/apps/native/src/components/ui/icons/nutrition.tsx +0 -15
- package/2/apps/native/src/components/ui/icons/openai.tsx +0 -15
- package/2/apps/native/src/components/ui/icons/perplexity.tsx +0 -22
- package/2/apps/native/src/components/ui/icons/qwen.tsx +0 -15
- package/2/apps/native/src/components/ui/icons/rate.tsx +0 -24
- package/2/apps/native/src/components/ui/icons/report.tsx +0 -20
- package/2/apps/native/src/components/ui/icons/send-horizontal.tsx +0 -26
- package/2/apps/native/src/components/ui/icons/settings.tsx +0 -12
- package/2/apps/native/src/components/ui/icons/share.tsx +0 -16
- package/2/apps/native/src/components/ui/icons/square.tsx +0 -9
- package/2/apps/native/src/components/ui/icons/style.tsx +0 -22
- package/2/apps/native/src/components/ui/icons/support.tsx +0 -27
- package/2/apps/native/src/components/ui/icons/trash2.tsx +0 -42
- package/2/apps/native/src/components/ui/icons/user.tsx +0 -12
- package/2/apps/native/src/components/ui/icons/website.tsx +0 -28
- package/2/apps/native/src/components/ui/icons/wifi-off.tsx +0 -17
- package/2/apps/native/src/components/ui/index.tsx +0 -14
- package/2/apps/native/src/components/ui/nav-item.tsx +0 -42
- package/2/apps/native/src/components/ui/patterns/index.ts +0 -16
- package/2/apps/native/src/components/ui/picker.tsx +0 -244
- package/2/apps/native/src/components/ui/popover.tsx +0 -313
- package/2/apps/native/src/components/ui/primitives/index.ts +0 -38
- package/2/apps/native/src/components/ui/radio-group.tsx +0 -47
- package/2/apps/native/src/components/ui/searchbar.tsx +0 -118
- package/2/apps/native/src/components/ui/sheet.tsx +0 -93
- package/2/apps/native/src/components/ui/switch.tsx +0 -37
- package/2/apps/native/src/components/ui/table.tsx +0 -296
- package/2/apps/native/src/components/ui/tabs.tsx +0 -115
- package/2/apps/native/src/components/ui/toggle.tsx +0 -50
- package/2/apps/native/src/components/ui/utils.tsx +0 -34
- package/2/apps/native/src/components/ui/video.tsx +0 -39
- package/2/apps/native/src/core/analytics/analytics-service.ts +0 -94
- package/2/apps/native/src/core/analytics/index.ts +0 -2
- package/2/apps/native/src/core/analytics/posthog-analytics-adapter.ts +0 -192
- package/2/apps/native/src/core/auth/auth-service.ts +0 -33
- package/2/apps/native/src/core/auth/index.ts +0 -1
- package/2/apps/native/src/core/cache/__tests__/cache-service.test.ts +0 -599
- package/2/apps/native/src/core/cache/cache-service.ts +0 -89
- package/2/apps/native/src/core/cache/index.ts +0 -45
- package/2/apps/native/src/core/config/config.service.ts +0 -153
- package/2/apps/native/src/core/config/index.ts +0 -2
- package/2/apps/native/src/core/config/telemetry.ts +0 -38
- package/2/apps/native/src/core/local-notifications/local-notification-manager.ts +0 -409
- package/2/apps/native/src/core/logging/custom-transports.ts +0 -126
- package/2/apps/native/src/core/logging/index.ts +0 -1
- package/2/apps/native/src/core/logging/logger.ts +0 -182
- package/2/apps/native/src/core/navigation/deep-link-handler.ts +0 -295
- package/2/apps/native/src/core/navigation/navigation-types.ts +0 -53
- package/2/apps/native/src/core/payments/index.ts +0 -1
- package/2/apps/native/src/core/payments/payment-service.ts +0 -32
- package/2/apps/native/src/core/quick-actions/index.ts +0 -2
- package/2/apps/native/src/core/quick-actions/quick-actions-adapter.ts +0 -54
- package/2/apps/native/src/core/quick-actions/types.ts +0 -29
- package/2/apps/native/src/core/storage/index.ts +0 -1
- package/2/apps/native/src/core/storage/mmkv.ts +0 -62
- package/2/apps/native/src/core/storage/notification-storage.ts +0 -312
- package/2/apps/native/src/core/types/common.ts +0 -0
- package/2/apps/native/src/core/utils/convex-http-api.ts +0 -30
- package/2/apps/native/src/features/audio-recorder/components/audio-player.tsx +0 -301
- package/2/apps/native/src/features/audio-recorder/components/audio-recorder.tsx +0 -373
- package/2/apps/native/src/features/audio-recorder/components/audio-waveform.tsx +0 -270
- package/2/apps/native/src/features/audio-recorder/components/index.ts +0 -4
- package/2/apps/native/src/features/audio-recorder/components/recording-list.tsx +0 -89
- package/2/apps/native/src/features/audio-recorder/demo/audio-player-demo.tsx +0 -66
- package/2/apps/native/src/features/audio-recorder/demo/audio-recorder-cloud.tsx +0 -68
- package/2/apps/native/src/features/audio-recorder/demo/audio-recorder-interview.tsx +0 -102
- package/2/apps/native/src/features/audio-recorder/demo/basic.tsx +0 -27
- package/2/apps/native/src/features/audio-recorder/demo/index.ts +0 -5
- package/2/apps/native/src/features/audio-recorder/demo/with-recording-list-demo.tsx +0 -82
- package/2/apps/native/src/features/authentication/components/auth-watcher.tsx +0 -115
- package/2/apps/native/src/features/authentication/components/login-form.tsx +0 -85
- package/2/apps/native/src/features/authentication/services/__tests__/convex-auth.adapter.test.ts +0 -399
- package/2/apps/native/src/features/authentication/services/convex-auth.adapter.ts +0 -497
- package/2/apps/native/src/features/authentication/services/index.ts +0 -2
- package/2/apps/native/src/features/charts/README.md +0 -185
- package/2/apps/native/src/features/charts/app/preview.tsx +0 -226
- package/2/apps/native/src/features/charts/components/area-chart.tsx +0 -43
- package/2/apps/native/src/features/charts/components/bar-chart.tsx +0 -146
- package/2/apps/native/src/features/charts/components/candlestick-chart.tsx +0 -199
- package/2/apps/native/src/features/charts/components/chart-card.tsx +0 -68
- package/2/apps/native/src/features/charts/components/column-chart.tsx +0 -146
- package/2/apps/native/src/features/charts/components/doughnut-chart.tsx +0 -260
- package/2/apps/native/src/features/charts/components/index.ts +0 -13
- package/2/apps/native/src/features/charts/components/line-chart.tsx +0 -311
- package/2/apps/native/src/features/charts/components/radar-chart.tsx +0 -183
- package/2/apps/native/src/features/charts/components/radial-bar-chart.tsx +0 -191
- package/2/apps/native/src/features/charts/components/stacked-area-chart.tsx +0 -268
- package/2/apps/native/src/features/charts/components/stacked-bar-chart.tsx +0 -325
- package/2/apps/native/src/features/charts/data/mock-data.ts +0 -186
- package/2/apps/native/src/features/charts/types/index.ts +0 -69
- package/2/apps/native/src/features/chatbot/app/index.tsx +0 -303
- package/2/apps/native/src/features/chatbot/components/chat-header-buttons.tsx +0 -60
- package/2/apps/native/src/features/chatbot/components/chat-input-bar.tsx +0 -470
- package/2/apps/native/src/features/chatbot/components/chat-markdown.tsx +0 -576
- package/2/apps/native/src/features/chatbot/components/chat-message-bubble.tsx +0 -247
- package/2/apps/native/src/features/chatbot/components/chat-settings-modal.tsx +0 -162
- package/2/apps/native/src/features/chatbot/components/image-preview-list.tsx +0 -116
- package/2/apps/native/src/features/chatbot/components/markdown/code-block.tsx +0 -166
- package/2/apps/native/src/features/chatbot/components/markdown/index.ts +0 -11
- package/2/apps/native/src/features/chatbot/components/markdown/table-renderer.tsx +0 -130
- package/2/apps/native/src/features/chatbot/components/message-error-boundary.tsx +0 -79
- package/2/apps/native/src/features/chatbot/components/message-list.tsx +0 -174
- package/2/apps/native/src/features/chatbot/components/model-selector.tsx +0 -284
- package/2/apps/native/src/features/chatbot/components/report-content-modal.tsx +0 -189
- package/2/apps/native/src/features/chatbot/components/suggested-messages.tsx +0 -68
- package/2/apps/native/src/features/chatbot/constants/models.ts +0 -21
- package/2/apps/native/src/features/chatbot/constants/report-reasons.ts +0 -10
- package/2/apps/native/src/features/chatbot/hooks/use-attachment-cache.ts +0 -144
- package/2/apps/native/src/features/chatbot/hooks/use-chat-config.ts +0 -665
- package/2/apps/native/src/features/chatbot/hooks/use-chat-handlers.ts +0 -360
- package/2/apps/native/src/features/chatbot/hooks/use-chatbot-settings.ts +0 -90
- package/2/apps/native/src/features/chatbot/hooks/use-conversation.ts +0 -80
- package/2/apps/native/src/features/chatbot/hooks/use-image-picker.ts +0 -123
- package/2/apps/native/src/features/chatbot/hooks/use-keyboard-coordinator.ts +0 -162
- package/2/apps/native/src/features/chatbot/hooks/use-smart-scroll-manager.ts +0 -214
- package/2/apps/native/src/features/chatbot/models/index.ts +0 -87
- package/2/apps/native/src/features/chatbot/models/models.ts +0 -163
- package/2/apps/native/src/features/chatbot/models/providers.ts +0 -63
- package/2/apps/native/src/features/chatbot/models/types.ts +0 -41
- package/2/apps/native/src/features/chatbot/services/file-uploader.ts +0 -239
- package/2/apps/native/src/features/chatbot/services/message-handler-service.ts +0 -181
- package/2/apps/native/src/features/chatbot/types/index.ts +0 -61
- package/2/apps/native/src/features/chatbot/utils/chat-telemetry.ts +0 -92
- package/2/apps/native/src/features/image-generator/app/_layout.tsx +0 -26
- package/2/apps/native/src/features/image-generator/app/gallery.tsx +0 -217
- package/2/apps/native/src/features/image-generator/app/index.tsx +0 -237
- package/2/apps/native/src/features/image-generator/components/gallery-image.tsx +0 -25
- package/2/apps/native/src/features/image-generator/components/image-detail-modal.tsx +0 -215
- package/2/apps/native/src/features/image-generator/components/image-model-selector.tsx +0 -210
- package/2/apps/native/src/features/image-generator/components/image-placeholder.tsx +0 -26
- package/2/apps/native/src/features/image-generator/hooks/use-image-gallery.ts +0 -71
- package/2/apps/native/src/features/image-generator/hooks/use-image-generator-settings.ts +0 -152
- package/2/apps/native/src/features/image-generator/hooks/use-image-generator.ts +0 -93
- package/2/apps/native/src/features/image-generator/models/models.ts +0 -66
- package/2/apps/native/src/features/image-generator/services/image-gallery-service.ts +0 -98
- package/2/apps/native/src/features/image-generator/services/image-save-service.ts +0 -121
- package/2/apps/native/src/features/onboarding/analytics/index.ts +0 -9
- package/2/apps/native/src/features/onboarding/components/onboarding-with-analytics.tsx +0 -141
- package/2/apps/native/src/features/onboarding/components/onboarding.tsx +0 -173
- package/2/apps/native/src/features/onboarding/config/onboarding-flow-config.ts +0 -189
- package/2/apps/native/src/features/onboarding/demo-one/app/index.tsx +0 -43
- package/2/apps/native/src/features/onboarding/demo-one/data.ts +0 -32
- package/2/apps/native/src/features/onboarding/hooks/use-onboarding-analytics.ts +0 -323
- package/2/apps/native/src/features/onboarding/services/onboarding-analytics.ts +0 -432
- package/2/apps/native/src/features/payments/README.md +0 -200
- package/2/apps/native/src/features/payments/app/local-paywall.tsx +0 -194
- package/2/apps/native/src/features/payments/app/remote-paywall.tsx +0 -79
- package/2/apps/native/src/features/payments/components/payment-initializer.tsx +0 -95
- package/2/apps/native/src/features/payments/components/paywall-error-state.tsx +0 -60
- package/2/apps/native/src/features/payments/components/paywall-local-mode.tsx +0 -116
- package/2/apps/native/src/features/payments/components/paywall-product-card.tsx +0 -133
- package/2/apps/native/src/features/payments/components/paywall-remote-mode.tsx +0 -146
- package/2/apps/native/src/features/payments/hooks/use-entitlement.ts +0 -63
- package/2/apps/native/src/features/payments/index.ts +0 -8
- package/2/apps/native/src/features/payments/services/revenuecat-adapter.ts +0 -407
- package/2/apps/native/src/features/quick-actions/components/quick-actions-demo.tsx +0 -139
- package/2/apps/native/src/features/quick-actions/config/default-actions.ts +0 -83
- package/2/apps/native/src/features/quick-actions/hooks/use-quick-actions.ts +0 -45
- package/2/apps/native/src/features/quick-actions/index.ts +0 -4
- package/2/apps/native/src/features/quick-actions/utils/quick-actions-manager.ts +0 -105
- package/2/apps/native/src/features/quiz/components/question.tsx +0 -67
- package/2/apps/native/src/features/quiz/config.ts +0 -11
- package/2/apps/native/src/features/quiz/index.tsx +0 -133
- package/2/apps/native/src/features/settings/ui/debug-info.tsx +0 -75
- package/2/apps/native/src/features/settings/ui/dev-tools.tsx +0 -1
- package/2/apps/native/src/features/settings/ui/item.tsx +0 -45
- package/2/apps/native/src/features/settings/ui/items-container.tsx +0 -23
- package/2/apps/native/src/features/settings/ui/language-item.tsx +0 -52
- package/2/apps/native/src/features/settings/ui/notification-item.tsx +0 -59
- package/2/apps/native/src/features/settings/ui/theme-item.tsx +0 -45
- package/2/apps/native/src/features/tracker-app/app/index.tsx +0 -108
- package/2/apps/native/src/features/tracker-app/components/animated-number.tsx +0 -102
- package/2/apps/native/src/features/tracker-app/components/calorie-card.tsx +0 -66
- package/2/apps/native/src/features/tracker-app/components/circular-progress.tsx +0 -97
- package/2/apps/native/src/features/tracker-app/components/floating-add-button.tsx +0 -27
- package/2/apps/native/src/features/tracker-app/components/macro-card.tsx +0 -80
- package/2/apps/native/src/features/tracker-app/components/promo-banner.tsx +0 -98
- package/2/apps/native/src/features/tracker-app/components/recently-logged.tsx +0 -64
- package/2/apps/native/src/features/tracker-app/components/week-calendar.tsx +0 -68
- package/2/apps/native/src/features/vibefast-features.ts +0 -42
- package/2/apps/native/src/features/voice-bot/README.md +0 -185
- package/2/apps/native/src/features/voice-bot/components/conversation-status.tsx +0 -76
- package/2/apps/native/src/features/voice-bot/components/index.ts +0 -4
- package/2/apps/native/src/features/voice-bot/components/message-input.tsx +0 -98
- package/2/apps/native/src/features/voice-bot/components/voice-bot-screen.tsx +0 -173
- package/2/apps/native/src/features/voice-bot/components/voice-controls.tsx +0 -73
- package/2/apps/native/src/features/voice-bot/index.ts +0 -3
- package/2/apps/native/src/features/voice-bot/services/index.ts +0 -1
- package/2/apps/native/src/features/voice-bot/services/use-voice-bot.ts +0 -161
- package/2/apps/native/src/features/voice-bot/types.ts +0 -29
- package/2/apps/native/src/features/wake-word/components/index.ts +0 -1
- package/2/apps/native/src/features/wake-word/components/wake-word-indicator.tsx +0 -61
- package/2/apps/native/src/features/wake-word/constants.ts +0 -10
- package/2/apps/native/src/features/wake-word/hooks/use-wake-word.ts +0 -181
- package/2/apps/native/src/features/wake-word/index.ts +0 -22
- package/2/apps/native/src/features/wake-word/services/audio-session.ts +0 -40
- package/2/apps/native/src/features/wake-word/services/event-bus.ts +0 -31
- package/2/apps/native/src/features/wake-word/services/keywords.ts +0 -88
- package/2/apps/native/src/features/wake-word/services/wake-word-manager.ts +0 -249
- package/2/apps/native/src/features/wake-word/types.ts +0 -22
- package/2/apps/native/src/lib/env.js +0 -13
- package/2/apps/native/src/lib/hooks/index.tsx +0 -6
- package/2/apps/native/src/lib/hooks/use-device-identifier.tsx +0 -80
- package/2/apps/native/src/lib/hooks/use-gradual-animation.ts +0 -28
- package/2/apps/native/src/lib/hooks/use-is-first-time.tsx +0 -25
- package/2/apps/native/src/lib/hooks/use-navigation-analytics.ts +0 -44
- package/2/apps/native/src/lib/hooks/use-navigation-options.tsx +0 -87
- package/2/apps/native/src/lib/hooks/use-push-notifications.ts +0 -250
- package/2/apps/native/src/lib/hooks/use-responsive-size.tsx +0 -37
- package/2/apps/native/src/lib/hooks/use-selected-theme.tsx +0 -38
- package/2/apps/native/src/lib/hooks/use-viewport-lazy-loading.tsx +0 -124
- package/2/apps/native/src/lib/i18n/index.tsx +0 -30
- package/2/apps/native/src/lib/i18n/react-i18next.d.ts +0 -9
- package/2/apps/native/src/lib/i18n/resources.ts +0 -25
- package/2/apps/native/src/lib/i18n/types.ts +0 -23
- package/2/apps/native/src/lib/i18n/utils.tsx +0 -112
- package/2/apps/native/src/lib/index.tsx +0 -3
- package/2/apps/native/src/lib/state/auth-client-slice.ts +0 -34
- package/2/apps/native/src/lib/state/index.ts +0 -1
- package/2/apps/native/src/lib/storage.tsx +0 -7
- package/2/apps/native/src/lib/test-utils.tsx +0 -43
- package/2/apps/native/src/lib/use-theme-config.tsx +0 -108
- package/2/apps/native/src/lib/utils.ts +0 -29
- package/2/apps/native/src/polyfills.ts +0 -61
- package/2/apps/native/src/providers/convex-provider.tsx +0 -31
- package/2/apps/native/src/providers/index.tsx +0 -6
- package/2/apps/native/src/providers/notification-provider.tsx +0 -168
- package/2/apps/native/src/providers/posthog-provider.tsx +0 -47
- package/2/apps/native/src/providers/root-providers.tsx +0 -46
- package/2/apps/native/src/providers/sentry-provider.tsx +0 -62
- package/2/apps/native/src/providers/splash-screen-provider.tsx +0 -122
- package/2/apps/native/src/providers/theme-provider.tsx +0 -67
- package/2/apps/native/src/translations/ar.json +0 -394
- package/2/apps/native/src/translations/de.json +0 -394
- package/2/apps/native/src/translations/en.json +0 -394
- package/2/apps/native/src/translations/es.json +0 -394
- package/2/apps/native/src/translations/fr.json +0 -394
- package/2/apps/native/src/types/flash-list.d.ts +0 -3
- package/2/apps/native/src/types/index.ts +0 -3
- package/2/apps/native/src/types/react-native-reanimated.d.ts +0 -5
- package/2/apps/native/tailwind.config.js +0 -57
- package/2/apps/native/targets/widget/AppIntent.swift +0 -46
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png +0 -0
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -122
- package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png +0 -0
- package/2/apps/native/targets/widget/CalorieTrackerWidget.swift +0 -424
- package/2/apps/native/targets/widget/HabitTrackerWidget.swift +0 -305
- package/2/apps/native/targets/widget/Info.plist +0 -11
- package/2/apps/native/targets/widget/WidgetLiveActivity.swift +0 -75
- package/2/apps/native/targets/widget/expo-target.config.js +0 -10
- package/2/apps/native/targets/widget/generated.entitlements +0 -5
- package/2/apps/native/targets/widget/index.swift +0 -18
- package/2/apps/native/targets/widget/widgets.swift +0 -96
- package/2/apps/native/tsconfig.json +0 -88
- package/2/apps/native/vitest.config.mts +0 -14
- package/2/apps/web/README.md +0 -36
- package/2/apps/web/app/favicon.ico +0 -0
- package/2/apps/web/app/globals.css +0 -122
- package/2/apps/web/app/layout.tsx +0 -38
- package/2/apps/web/app/page.tsx +0 -35
- package/2/apps/web/app/users/page.tsx +0 -301
- package/2/apps/web/components/AdminDashboard.tsx +0 -336
- package/2/apps/web/components/AppleLogo.tsx +0 -15
- package/2/apps/web/components/GitHubLogo.tsx +0 -11
- package/2/apps/web/components/GoogleLogo.tsx +0 -23
- package/2/apps/web/components/Layout.tsx +0 -77
- package/2/apps/web/components/ThemeToggle.tsx +0 -23
- package/2/apps/web/components/UserMenu.tsx +0 -66
- package/2/apps/web/components/auth/CodeInput.tsx +0 -24
- package/2/apps/web/components/auth/ResetPasswordWithEmailCode.tsx +0 -85
- package/2/apps/web/components/auth/SignInFormEmailCode.tsx +0 -72
- package/2/apps/web/components/auth/SignInFormEmailLink.tsx +0 -81
- package/2/apps/web/components/auth/SignInFormPassword.tsx +0 -17
- package/2/apps/web/components/auth/SignInFormPasswordAndCustomField.tsx +0 -42
- package/2/apps/web/components/auth/SignInFormPasswordAndResetViaCode.tsx +0 -32
- package/2/apps/web/components/auth/SignInFormPasswordAndVerifyViaCode.tsx +0 -86
- package/2/apps/web/components/auth/SignInFormPhoneCode.tsx +0 -89
- package/2/apps/web/components/auth/SignInFormsShowcase.tsx +0 -64
- package/2/apps/web/components/auth/SignInMethodDivider.tsx +0 -17
- package/2/apps/web/components/auth/SignInWithEmailCode.tsx +0 -49
- package/2/apps/web/components/auth/SignInWithOAuth.tsx +0 -16
- package/2/apps/web/components/auth/SignInWithPassword.tsx +0 -100
- package/2/apps/web/components/auth/oauth/SignInWithApple.tsx +0 -27
- package/2/apps/web/components/auth/oauth/SignInWithGitHub.tsx +0 -27
- package/2/apps/web/components/auth/oauth/SignInWithGoogle.tsx +0 -27
- package/2/apps/web/components/ui/button.tsx +0 -60
- package/2/apps/web/components/ui/card.tsx +0 -92
- package/2/apps/web/components/ui/dialog.tsx +0 -143
- package/2/apps/web/components/ui/dropdown-menu.tsx +0 -257
- package/2/apps/web/components/ui/input-otp.tsx +0 -77
- package/2/apps/web/components/ui/input.tsx +0 -21
- package/2/apps/web/components/ui/skeleton.tsx +0 -13
- package/2/apps/web/components/ui/tabs.tsx +0 -66
- package/2/apps/web/components/ui/toast.tsx +0 -130
- package/2/apps/web/components/ui/toaster.tsx +0 -36
- package/2/apps/web/components/ui/toggle-group.tsx +0 -83
- package/2/apps/web/components/ui/toggle.tsx +0 -47
- package/2/apps/web/components/ui/use-toast.ts +0 -192
- package/2/apps/web/components.json +0 -22
- package/2/apps/web/eslint.config.mjs +0 -18
- package/2/apps/web/lib/convex-provider.tsx +0 -18
- package/2/apps/web/lib/utils.ts +0 -6
- package/2/apps/web/next.config.ts +0 -7
- package/2/apps/web/package.json +0 -46
- package/2/apps/web/postcss.config.mjs +0 -7
- package/2/apps/web/public/file.svg +0 -1
- package/2/apps/web/public/globe.svg +0 -1
- package/2/apps/web/public/next.svg +0 -1
- package/2/apps/web/public/vercel.svg +0 -1
- package/2/apps/web/public/window.svg +0 -1
- package/2/apps/web/tsconfig.json +0 -34
- package/2/bts.jsonc +0 -21
- package/2/commitlint.config.js +0 -1
- package/2/eslint.config.mjs +0 -182
- package/2/lint-staged.config.js +0 -16
- package/2/package.json +0 -64
- package/2/packages/backend/.env.example +0 -20
- package/2/packages/backend/convex/README.md +0 -90
- package/2/packages/backend/convex/_generated/api.d.ts +0 -2599
- package/2/packages/backend/convex/_generated/api.js +0 -23
- package/2/packages/backend/convex/_generated/dataModel.d.ts +0 -60
- package/2/packages/backend/convex/_generated/server.d.ts +0 -149
- package/2/packages/backend/convex/_generated/server.js +0 -90
- package/2/packages/backend/convex/agents.ts +0 -116
- package/2/packages/backend/convex/auth.config.ts +0 -8
- package/2/packages/backend/convex/auth.ts +0 -103
- package/2/packages/backend/convex/authCustomEmailOtpProvider.ts +0 -175
- package/2/packages/backend/convex/authOtp.ts +0 -144
- package/2/packages/backend/convex/authPasswordReset.ts +0 -367
- package/2/packages/backend/convex/authPasswordResetActions.ts +0 -150
- package/2/packages/backend/convex/chatbot/index.ts +0 -30
- package/2/packages/backend/convex/chatbotAgent.ts +0 -1085
- package/2/packages/backend/convex/chatbotHistory.ts +0 -307
- package/2/packages/backend/convex/convex.config.ts +0 -13
- package/2/packages/backend/convex/deviceGrants.ts +0 -58
- package/2/packages/backend/convex/grantFunctions.ts +0 -444
- package/2/packages/backend/convex/http.ts +0 -8
- package/2/packages/backend/convex/imageGeneration/index.ts +0 -12
- package/2/packages/backend/convex/imageGeneratorFunctions.ts +0 -290
- package/2/packages/backend/convex/lib/ai/analysisConfigs.ts +0 -257
- package/2/packages/backend/convex/lib/ai/config.ts +0 -71
- package/2/packages/backend/convex/lib/ai/geminiAdapter.ts +0 -43
- package/2/packages/backend/convex/lib/ai/openaiAdapter.ts +0 -43
- package/2/packages/backend/convex/lib/ai/schemas.ts +0 -79
- package/2/packages/backend/convex/lib/config.ts +0 -111
- package/2/packages/backend/convex/lib/rateLimit.ts +0 -100
- package/2/packages/backend/convex/lib/telemetry.ts +0 -29
- package/2/packages/backend/convex/paymentFunctions.ts +0 -119
- package/2/packages/backend/convex/payments/index.ts +0 -13
- package/2/packages/backend/convex/pushNotificationFunctions.ts +0 -342
- package/2/packages/backend/convex/ragKnowledge.ts +0 -714
- package/2/packages/backend/convex/rateLimit.ts +0 -13
- package/2/packages/backend/convex/recordingFunctions.ts +0 -98
- package/2/packages/backend/convex/reportFunctions.ts +0 -344
- package/2/packages/backend/convex/reporting/index.ts +0 -9
- package/2/packages/backend/convex/router.ts +0 -81
- package/2/packages/backend/convex/schema.ts +0 -237
- package/2/packages/backend/convex/shared/email.ts +0 -172
- package/2/packages/backend/convex/shared/files.ts +0 -96
- package/2/packages/backend/convex/shared/index.ts +0 -17
- package/2/packages/backend/convex/shared/templates/PasswordResetEmail.tsx +0 -72
- package/2/packages/backend/convex/shared/templates/VerificationCodeEmail.tsx +0 -65
- package/2/packages/backend/convex/sharedUsers.ts +0 -48
- package/2/packages/backend/convex/tools/index.ts +0 -18
- package/2/packages/backend/convex/tools/knowledgeRetrieval.ts +0 -92
- package/2/packages/backend/convex/tools/tavilySearch.ts +0 -83
- package/2/packages/backend/convex/tools/userProfile.ts +0 -72
- package/2/packages/backend/convex/tsconfig.json +0 -25
- package/2/packages/backend/convex/users.ts +0 -54
- package/2/packages/backend/index.ts +0 -20
- package/2/packages/backend/package.json +0 -32
- package/2/packages/ui/README.md +0 -63
- package/2/packages/ui/index.ts +0 -1
- package/2/packages/ui/package.json +0 -21
- package/2/packages/ui/src/components/SharedButton.tsx +0 -31
- package/2/packages/ui/src/components/SharedCard.tsx +0 -48
- package/2/packages/ui/src/components/index.ts +0 -2
- package/2/packages/ui/tsconfig.json +0 -10
- package/2/pnpm-lock.yaml +0 -23292
- package/2/pnpm-workspace.yaml +0 -3
- package/2/scripts/i18next-syntax-validation.js +0 -1
- package/2/tsconfig.json +0 -43
- package/2/turbo.json +0 -33
- package/2/vercel.json +0 -6
- package/2/vf-agent/agent-teams/team-vibefast.yaml +0 -14
- package/2/vf-agent/agents/analyst.md +0 -53
- package/2/vf-agent/agents/architect.md +0 -105
- package/2/vf-agent/agents/dev.md +0 -40
- package/2/vf-agent/agents/orchestrator.md +0 -181
- package/2/vf-agent/agents/pm.md +0 -48
- package/2/vf-agent/agents/po.md +0 -38
- package/2/vf-agent/agents/qa.md +0 -30
- package/2/vf-agent/agents/sm.md +0 -38
- package/2/vf-agent/agents/ux-expert.md +0 -33
- package/2/vf-agent/checklists/po-master-checklist.md +0 -73
- package/2/vf-agent/checklists/story-dod-checklist.md +0 -37
- package/2/vf-agent/core-config.yaml +0 -43
- package/2/vf-agent/data/knowledge_base/backend/convex-advanced.md +0 -43
- package/2/vf-agent/data/knowledge_base/backend/convex-database.md +0 -53
- package/2/vf-agent/data/knowledge_base/backend/convex-main.md +0 -65
- package/2/vf-agent/data/knowledge_base/backend/full-guidelines.md +0 -795
- package/2/vf-agent/data/knowledge_base/coding-standards.md +0 -253
- package/2/vf-agent/data/knowledge_base/frontend/full-guidelines.md +0 -254
- package/2/vf-agent/data/knowledge_base/frontend/image-handling.md +0 -48
- package/2/vf-agent/data/knowledge_base/frontend/react-native-main.md +0 -24
- package/2/vf-agent/data/knowledge_base/frontend/ui-and-styling.md +0 -169
- package/2/vf-agent/data/knowledge_base/general-principles.md +0 -26
- package/2/vf-agent/data/knowledge_base/master-rulebook.md +0 -42
- package/2/vf-agent/data/knowledge_base/starter-docs/audio-recorder-reference.md +0 -98
- package/2/vf-agent/data/knowledge_base/starter-docs/authentication-reference.md +0 -155
- package/2/vf-agent/data/knowledge_base/starter-docs/charts-reference.md +0 -149
- package/2/vf-agent/data/knowledge_base/starter-docs/chatbot-reference.md +0 -123
- package/2/vf-agent/data/knowledge_base/starter-docs/feature-reference-index.md +0 -211
- package/2/vf-agent/data/knowledge_base/starter-docs/features-overview.md +0 -221
- package/2/vf-agent/data/knowledge_base/starter-docs/image-analyzer-reference.md +0 -118
- package/2/vf-agent/data/knowledge_base/starter-docs/image-generator-reference.md +0 -110
- package/2/vf-agent/data/knowledge_base/starter-docs/index.md +0 -28
- package/2/vf-agent/data/knowledge_base/starter-docs/onboarding-reference.md +0 -96
- package/2/vf-agent/data/knowledge_base/starter-docs/payments-reference.md +0 -148
- package/2/vf-agent/data/knowledge_base/starter-docs/prd.md +0 -82
- package/2/vf-agent/data/knowledge_base/starter-docs/push-notifications-reference.md +0 -453
- package/2/vf-agent/data/knowledge_base/starter-docs/quick-actions-reference.md +0 -253
- package/2/vf-agent/data/knowledge_base/starter-docs/quiz-reference.md +0 -169
- package/2/vf-agent/data/knowledge_base/starter-docs/settings-reference.md +0 -146
- package/2/vf-agent/data/knowledge_base/starter-docs/tech-stack.md +0 -159
- package/2/vf-agent/data/knowledge_base/starter-docs/tracker-app-reference.md +0 -150
- package/2/vf-agent/data/knowledge_base/starter-docs/unified-project-structure.md +0 -98
- package/2/vf-agent/data/knowledge_base/testing/backend-testing.md +0 -54
- package/2/vf-agent/data/knowledge_base/testing/frontend-testing.md +0 -71
- package/2/vf-agent/data/knowledge_base/testing/testing-strategy.md +0 -31
- package/2/vf-agent/tasks/advanced-elicitation.md +0 -117
- package/2/vf-agent/tasks/brownfield-create-epic.md +0 -160
- package/2/vf-agent/tasks/create-deep-research-prompt.md +0 -278
- package/2/vf-agent/tasks/create-doc.md +0 -42
- package/2/vf-agent/tasks/create-story.md +0 -43
- package/2/vf-agent/tasks/document-project.md +0 -343
- package/2/vf-agent/tasks/facilitate-brainstorming-session.md +0 -136
- package/2/vf-agent/tasks/index-docs.md +0 -173
- package/2/vf-agent/tasks/kb-mode-interaction.md +0 -75
- package/2/vf-agent/tasks/review-story.md +0 -154
- package/2/vf-agent/tasks/shard-doc.md +0 -185
- package/2/vf-agent/tasks/troubleshoot-issue.md +0 -65
- package/2/vf-agent/tasks/validate-next-story.md +0 -47
- package/2/vf-agent/templates/brainstorming-output-tmpl.yaml +0 -156
- package/2/vf-agent/templates/brownfield-architecture-tmpl.yaml +0 -111
- package/2/vf-agent/templates/brownfield-prd-tmpl.yaml +0 -247
- package/2/vf-agent/templates/competitor-analysis-tmpl.yaml +0 -293
- package/2/vf-agent/templates/market-research-tmpl.yaml +0 -252
- package/2/vf-agent/templates/project-brief-tmpl.yaml +0 -221
- package/2/vf-agent/templates/story-tmpl.yaml +0 -143
- package/recipes/0/apps/native/src/components/advanced-ui/timeline/demo.tsx +0 -444
- package/recipes/0/apps/native/src/components/advanced-ui/timeline/timeline-view.tsx +0 -355
- package/recipes/0/apps/native/src/components/advanced-ui/timeline/types.ts +0 -31
- package/recipes/wake-word/scripts/download-vosk-model.mjs +0 -121
- /package/{2 → recipes/animated-chip}/apps/native/src/components/advanced-ui/chip/animated-chip.tsx +0 -0
- /package/{2 → recipes/animated-chip}/apps/native/src/components/advanced-ui/chip/chip.tsx +0 -0
- /package/{2 → recipes/animated-chip}/apps/native/src/components/advanced-ui/chip/demo.tsx +0 -0
- /package/{2 → recipes/animated-chip}/apps/native/src/components/advanced-ui/chip/types.ts +0 -0
- /package/{2 → recipes/animated-switch}/apps/native/src/components/advanced-ui/switch/animated-switch.tsx +0 -0
- /package/{2 → recipes/animated-switch}/apps/native/src/components/advanced-ui/switch/demo.tsx +0 -0
- /package/{2 → recipes/animated-switch}/apps/native/src/components/advanced-ui/switch/types.ts +0 -0
- /package/{2 → recipes/glowing-button}/apps/native/src/components/advanced-ui/buttons/demo.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/assets/features/image-analyzer/front.jpg +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/assets/features/image-analyzer/side.jpg +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/assets/features/image-analyzer/threeQuarter.jpg +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/api-client/image-analyzer.ts +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/_layout.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/analysis-options.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/camera.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/index.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/loading.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/results.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/trait-details.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/analysis-options-screen.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/camera.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/image-capture-screen.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/loading-screen.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/loading.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/results.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/trait-details.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/use-analysis-data.ts +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/use-results-screen.ts +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/achievement-badge.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/achievement-card.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/achievement-unlocked-modal.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/achievements-section.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/advice-list.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/circular-progress.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/content-card.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/error-state.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/index.ts +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/loading-state.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/profile-image.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/results-header.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/score-display.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/share-options-modal.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/traits-grid.tsx +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/config/analysis-config.ts +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/config/master-analysis-config.ts +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/hooks/index.ts +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/hooks/use-analysis.ts +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/hooks/use-image-analysis.ts +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/services/analysis-service.ts +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/services/share-service.ts +0 -0
- /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/services/trait-details-service.ts +0 -0
- /package/{2 → recipes/image-analysis}/packages/backend/convex/imageAnalysis/index.ts +0 -0
- /package/{2 → recipes/image-analysis}/packages/backend/convex/imageAnalysisFunctions.ts +0 -0
- /package/{2 → recipes/image-analysis}/packages/backend/convex/lib/ai/imageAnalysisAdapter.ts +0 -0
- /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/button/stepper-button.tsx +0 -0
- /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/button/types.ts +0 -0
- /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/content/stepper-content.tsx +0 -0
- /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/content/types.ts +0 -0
- /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/value/stepper-value.tsx +0 -0
- /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/value/types.ts +0 -0
- /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/context/stepper-context.ts +0 -0
- /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/context/types.ts +0 -0
- /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/demo.tsx +0 -0
- /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/index.ts +0 -0
- /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/stepper.tsx +0 -0
- /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/types.ts +0 -0
- /package/{2 → recipes/progress-circle}/apps/native/src/components/advanced-ui/progress-bars/animated-progress-bar.tsx +0 -0
- /package/{2 → recipes/progress-circle}/apps/native/src/components/advanced-ui/progress-bars/dropdown-picker-page.tsx +0 -0
- /package/{2 → recipes/progress-circle}/apps/native/src/components/advanced-ui/progress-bars/progress-circle-page.tsx +0 -0
- /package/{2 → recipes/progress-circle}/apps/native/src/components/advanced-ui/progress-bars/progress-circle.tsx +0 -0
- /package/{2 → recipes/swipe-slider}/apps/native/src/components/advanced-ui/sliders/swipe-slider-page.tsx +0 -0
- /package/{2 → recipes/swipe-slider}/apps/native/src/components/advanced-ui/sliders/swipe-slider.tsx +0 -0
- /package/{2 → recipes/timeline}/apps/native/src/components/advanced-ui/timeline/demo.tsx +0 -0
- /package/{2 → recipes/timeline}/apps/native/src/components/advanced-ui/timeline/timeline-view.tsx +0 -0
- /package/{2 → recipes/timeline}/apps/native/src/components/advanced-ui/timeline/types.ts +0 -0
- /package/{2 → recipes/wake-word}/apps/native/scripts/download-vosk-model.mjs +0 -0
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
# Unified Project Structure (Monorepo)
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
VibeFast now lives inside a pnpm + Turborepo monorepo. The Expo client, Convex backend, shared packages, and documentation all coexist under a single root so code can be shared safely between apps. The legacy `vibefast-pro` project remains as a reference; all new work happens in the monorepo.
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
├─ apps/ # End-user applications
|
|
9
|
-
│ └─ native/ # Expo project (primary mobile app)
|
|
10
|
-
├─ packages/ # Shared libraries and backend services
|
|
11
|
-
│ └─ backend/ # Convex backend package
|
|
12
|
-
├─ docs/ # Living developer documentation (native-focused)
|
|
13
|
-
├─ vf-agent/ # Knowledge base for AI/agent workflows
|
|
14
|
-
├─ turbo.json # Turborepo task graph
|
|
15
|
-
├─ pnpm-workspace.yaml # Workspace definitions
|
|
16
|
-
└─ package.json # Root scripts and toolchain
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Root Directory
|
|
20
|
-
|
|
21
|
-
| Path | Purpose |
|
|
22
|
-
| ------------------------------- | ------------------------------------------------------------------------------------------------ |
|
|
23
|
-
| `package.json` | Root scripts (`dev:native`, `dev:server`, lint/type-check pipelines) and shared devDependencies. |
|
|
24
|
-
| `pnpm-workspace.yaml` | Declares `apps/*` and `packages/*` workspaces. |
|
|
25
|
-
| `turbo.json` | Task orchestration for build, lint, test, and dev commands. |
|
|
26
|
-
| `docs/` | Human-authored guides for setup and day-to-day workflows. |
|
|
27
|
-
| `vf-agent/data/knowledge_base/` | This knowledge base—kept in sync with the active architecture. |
|
|
28
|
-
| `apps/` | Houses application workspaces (`native` today; room for `web` in the future). |
|
|
29
|
-
| `packages/` | Backend and reusable packages shared across apps. |
|
|
30
|
-
|
|
31
|
-
## Expo Application (`apps/native`)
|
|
32
|
-
|
|
33
|
-
The Expo app keeps the existing feature-sliced architecture from `vibefast-pro`, but it now resides under `apps/native/`.
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
apps/native/
|
|
37
|
-
├─ assets/ # Fonts, images, Lottie animations, static data
|
|
38
|
-
├─ src/
|
|
39
|
-
│ ├─ app/ # Expo Router routes and layouts
|
|
40
|
-
│ ├─ components/ # Design-system primitives + advanced UI
|
|
41
|
-
│ ├─ core/ # Cross-cutting services (auth, analytics, logging, payments…)
|
|
42
|
-
│ ├─ features/ # Product features (chatbot, analyzer, quick-actions, etc.)
|
|
43
|
-
│ ├─ lib/ # Shared hooks, utilities, i18n, Convex client
|
|
44
|
-
│ ├─ providers/ # Top-level provider composition
|
|
45
|
-
│ ├─ translations/ # i18n resources
|
|
46
|
-
│ └─ types/ # Shared TypeScript types
|
|
47
|
-
├─ scripts/ # Expo/EAS scripting utilities
|
|
48
|
-
├─ package.json # App-specific dependencies and scripts
|
|
49
|
-
├─ app.config.ts # Expo runtime configuration (reads env files)
|
|
50
|
-
├─ babel.config.js # Babel setup with module resolver aliases
|
|
51
|
-
└─ metro.config.js # Metro configured for monorepo resolution
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Path & Import Conventions
|
|
55
|
-
|
|
56
|
-
- All guides reference files using the Expo workspace root, e.g. `apps/native/src/features/...`.
|
|
57
|
-
- TypeScript and Metro expose the alias `@/` that maps to `apps/native/src/`. Prefer `import { Button } from '@/components/ui'` in code.
|
|
58
|
-
- Environment files live beside the app (`apps/native/.env.development`, etc.) and are read by `env.js`/`app.config.ts`.
|
|
59
|
-
- Metro uses a custom `resolveRequest` helper (see `apps/native/metro.config.js`) so workspace packages like `@vibefast/backend` resolve correctly; keep new workspace packages in sync with that resolver.
|
|
60
|
-
- Babel’s module-resolver plugin also defines `@assets` → `./assets` so asset imports work in Metro; add new aliases in both Babel and TypeScript if needed.
|
|
61
|
-
|
|
62
|
-
## Convex Backend (`packages/backend`)
|
|
63
|
-
|
|
64
|
-
The backend runs as a workspace package named `@vibefast/backend`.
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
packages/backend/
|
|
68
|
-
├─ convex/ # Convex schema, functions, actions, HTTP endpoints
|
|
69
|
-
│ ├─ _generated/ # Auto-generated API & data model types (regenerated via Convex CLI)
|
|
70
|
-
│ ├─ auth*.ts # @convex-dev/auth configuration and helpers
|
|
71
|
-
│ ├─ lib/ # Shared backend utilities (AI adapters, telemetry, rate limiting)
|
|
72
|
-
│ └─ *.ts # Domain modules (chatbot, payments, analyzer, etc.)
|
|
73
|
-
├─ package.json # Workspace metadata and Convex scripts
|
|
74
|
-
└─ index.ts # Entry point for consumers that need server helpers
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### Backend Notes
|
|
78
|
-
|
|
79
|
-
- Convex CLI commands run from `packages/backend` (or via root scripts like `pnpm dev:server`).
|
|
80
|
-
- Environment variables must be synced to the Convex cloud deployment (`npx convex env set ...`).
|
|
81
|
-
- Frontend code imports generated types via `@vibefast/backend/_generated/*`.
|
|
82
|
-
- The backend package exposes explicit subpath exports in `packages/backend/package.json`; add new exports if you introduce additional entry points so Metro can resolve them.
|
|
83
|
-
|
|
84
|
-
## Additional Packages
|
|
85
|
-
|
|
86
|
-
`packages/ui/` and other shared libraries can be introduced as migrations progress. Metro’s `extraNodeModules` and the root `tsconfig.json` already support workspace imports—add new packages there when they come online.
|
|
87
|
-
|
|
88
|
-
## Knowledge Base (`vf-agent/data/knowledge_base`)
|
|
89
|
-
|
|
90
|
-
This folder (where you are reading) mirrors the active structure and standards. Any change to layout, tooling, or feature ownership must be reflected here so AI agents and developers share the same mental model.
|
|
91
|
-
|
|
92
|
-
## Key Differences from `vibefast-pro`
|
|
93
|
-
|
|
94
|
-
- **Monorepo-first:** Multiple apps and packages share one lockfile and Turbo task graph.
|
|
95
|
-
- **Path updates:** Physical paths now start with `apps/native/...` and `packages/backend/...` instead of root-level `src/` and `convex/`.
|
|
96
|
-
- **Documentation split:** High-level runbooks live in `docs/`; canonical architectural detail stays in this knowledge base.
|
|
97
|
-
|
|
98
|
-
When updating documentation or planning migrations, always reference this structure. Any new feature or package should document its location relative to these directories.
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# Backend Testing Patterns (Vitest)
|
|
2
|
-
|
|
3
|
-
## 1. Test Runner and Syntax
|
|
4
|
-
|
|
5
|
-
- All backend tests in the `packages/backend/convex/` directory **MUST** be written using **Vitest** syntax (`describe`, `test`, `expect`).
|
|
6
|
-
- Tests are run via the designated script in `package.json` (e.g., `pnpm test:backend`).
|
|
7
|
-
|
|
8
|
-
## 2. The `convexTest` Helper
|
|
9
|
-
|
|
10
|
-
- Use the `convexTest` utility from `convex/testing` to create an isolated test environment for each test suite. This provides a mock database that respects your `packages/backend/convex/schema.ts`.
|
|
11
|
-
|
|
12
|
-
```ts
|
|
13
|
-
import { convexTest } from 'convex/testing';
|
|
14
|
-
import { test } from 'vitest';
|
|
15
|
-
import schema from './schema';
|
|
16
|
-
|
|
17
|
-
test('a test with the database', async () => {
|
|
18
|
-
const t = convexTest(schema);
|
|
19
|
-
// ...
|
|
20
|
-
});
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## 3\. Executing Functions
|
|
24
|
-
|
|
25
|
-
- Within a test, execute your Convex functions using the test environment object `t`.
|
|
26
|
-
|
|
27
|
-
- This correctly simulates the context (`ctx`) that your functions expect.
|
|
28
|
-
|
|
29
|
-
```typescript
|
|
30
|
-
import { api } from './_generated/api';
|
|
31
|
-
|
|
32
|
-
// Inside a test
|
|
33
|
-
const result = await t.query(api.myModule.myQuery, { arg1: 'value' });
|
|
34
|
-
await t.mutation(api.myModule.myMutation, { arg1: 'value' });
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## 4\. Mocking Dependencies
|
|
38
|
-
|
|
39
|
-
- For `actions` that call external services (e.g., OpenAI), use `vi.mock()` from Vitest to mock the API client library.
|
|
40
|
-
|
|
41
|
-
- This allows you to test your action's logic without making actual network requests.
|
|
42
|
-
|
|
43
|
-
```typescript
|
|
44
|
-
import { vi } from 'vitest';
|
|
45
|
-
import OpenAI from 'openai';
|
|
46
|
-
|
|
47
|
-
// Mock the entire module
|
|
48
|
-
vi.mock('openai');
|
|
49
|
-
|
|
50
|
-
// Inside a test, you can control the mock's behavior
|
|
51
|
-
vi.mocked(OpenAI.prototype.chat.completions.create).mockResolvedValue({
|
|
52
|
-
// ... mock response
|
|
53
|
-
});
|
|
54
|
-
```
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# Frontend Testing Patterns (Jest & RNTL)
|
|
2
|
-
|
|
3
|
-
## Rule 1: Mock Hoisting & File Structure
|
|
4
|
-
|
|
5
|
-
ALL `jest.mock('module-path', ...)` calls **MUST** be at the very top of your test file, before any `import` statements. This is required for Jest's hoisting mechanism to work correctly.
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
// 1. Mocks are ALWAYS first.
|
|
9
|
-
jest.mock('expo-router');
|
|
10
|
-
jest.mock('convex/react');
|
|
11
|
-
|
|
12
|
-
// 2. Imports come after mocks.
|
|
13
|
-
import { render, screen, act } from '@testing-library/react-native';
|
|
14
|
-
import MyComponent from './MyComponent';
|
|
15
|
-
|
|
16
|
-
// 3. Test code follows.
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Rule 2: Dependency Analysis & Mocking Strategy
|
|
20
|
-
|
|
21
|
-
Before writing a test, analyze the component's imports and mock all external dependencies to isolate the component.
|
|
22
|
-
|
|
23
|
-
- **Navigation:** Mock `expo-router` to control `useRouter` and `useLocalSearchParams`.
|
|
24
|
-
- **Convex Hooks:** Mock `convex/react` to provide controlled data to `useQuery` and mock the functions returned by `useMutation` and `useAction` (frontend code still imports from `convex/react`).
|
|
25
|
-
- **Expo/React Native APIs:** Mock specific APIs like `expo-image-picker` or `react-native`'s `Alert`.
|
|
26
|
-
- **Custom UI Components:** Mock complex UI components from `@/components/ui` if they interfere with the test, but it is often better to render them if they are simple.
|
|
27
|
-
|
|
28
|
-
## Rule 3: `act` and `waitFor` for Async Operations
|
|
29
|
-
|
|
30
|
-
All interactions that cause a state update in React **MUST** be wrapped in `act`. For asserting the results of an async update, you **MUST** use `waitFor`.
|
|
31
|
-
````ts
|
|
32
|
-
// ✅ CORRECT
|
|
33
|
-
import { fireEvent, waitFor, act } from '@testing-library/react-native';
|
|
34
|
-
|
|
35
|
-
test('updates text after button press', async () => {
|
|
36
|
-
render(<MyComponent />);
|
|
37
|
-
const button = screen.getByText('Press Me');
|
|
38
|
-
|
|
39
|
-
// Wrap the event that causes the state update in act
|
|
40
|
-
act(() => {
|
|
41
|
-
fireEvent.press(button);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
// Use waitFor to assert the result of the async update
|
|
45
|
-
await waitFor(() => {
|
|
46
|
-
expect(screen.getByText('Updated!')).toBeOnTheScreen();
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
````
|
|
50
|
-
|
|
51
|
-
## Rule 4: Type-Accurate Data Mocks
|
|
52
|
-
|
|
53
|
-
When mocking data, especially from Convex, the mock object **MUST** match the TypeScript type definition exactly.
|
|
54
|
-
|
|
55
|
-
- Refer to `@vibefast/backend/_generated/dataModel.d.ts` for `Doc<"tableName">` and `Id<"tableName">` types.
|
|
56
|
-
- Include system fields like `_id` and `_creationTime`.
|
|
57
|
-
- Use type casting for `Id` types in mocks: `_id: "mockId" as Id<"users">`.
|
|
58
|
-
|
|
59
|
-
## Rule 5: Debugging Protocol (Three-Strikes)
|
|
60
|
-
|
|
61
|
-
If a test fails and the reason is not obvious:
|
|
62
|
-
|
|
63
|
-
1. **Strike 1 (Check Basics):** Read the error message carefully. Check for typos in `testID`s and ensure mocks are being called.
|
|
64
|
-
2. **Strike 2 (Verify Mocks):** Add `console.log` inside your mock implementations to see if they are being executed and what they are returning. Ensure the mock's return value perfectly matches what the component expects.
|
|
65
|
-
3. **Strike 3 (Isolate):** Comment out parts of your test to isolate the single interaction that is failing. Simplify the test case to the absolute minimum required to reproduce the error.
|
|
66
|
-
|
|
67
|
-
If the issue persists after three attempts, **STOP**, document the problem, and ask for human guidance.
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
```
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# Overall Testing Strategy
|
|
2
|
-
|
|
3
|
-
This project follows a balanced testing pyramid approach to ensure code quality, reliability, and maintainability.
|
|
4
|
-
|
|
5
|
-
## 1. Backend Testing (Vitest)
|
|
6
|
-
|
|
7
|
-
- All Convex functions (queries, mutations, and actions) that contain business logic **MUST** be covered by unit tests.
|
|
8
|
-
- Tests are written using **Vitest** and run via the project's designated backend test script.
|
|
9
|
-
- The `convexTest` utility is used to provide a mock database environment.
|
|
10
|
-
- Focus on testing logic, data transformations, and authorization rules.
|
|
11
|
-
|
|
12
|
-
## 2. Frontend Unit & Integration Testing (Jest & RNTL)
|
|
13
|
-
|
|
14
|
-
- **Unit Tests:** Utilities, complex hooks, and core services should have unit tests.
|
|
15
|
-
- **Integration Tests:** Most component tests will be integration tests that verify the component renders correctly and responds to user interactions.
|
|
16
|
-
- All frontend tests are written using **Jest** and **React Native Testing Library (RNTL)**.
|
|
17
|
-
- Focus on testing what the user sees and interacts with, not implementation details. Assert on the rendered output and accessibility props.
|
|
18
|
-
|
|
19
|
-
## 3. End-to-End (E2E) Testing (Maestro)
|
|
20
|
-
|
|
21
|
-
- Critical user flows (e.g., authentication, core feature usage) will be covered by E2E tests written for **Maestro**.
|
|
22
|
-
- To support E2E testing, all key interactive elements and screens **MUST** have a `testID` prop.
|
|
23
|
-
|
|
24
|
-
## 4. General Principles
|
|
25
|
-
|
|
26
|
-
- **Co-location:** Test files should be co-located with the source code they are testing (e.g., `my-component.test.tsx` next to `my-component.tsx`).
|
|
27
|
-
- **Coverage:** Aim for high coverage of critical business logic. Do not waste time testing simple presentational components that have no logic.
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
```
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
# Advanced Elicitation Task
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
- Provide optional reflective and brainstorming actions to enhance content quality
|
|
6
|
-
- Enable deeper exploration of ideas through structured elicitation techniques
|
|
7
|
-
- Support iterative refinement through multiple analytical perspectives
|
|
8
|
-
- Usable during template-driven document creation or any chat conversation
|
|
9
|
-
|
|
10
|
-
## Usage Scenarios
|
|
11
|
-
|
|
12
|
-
### Scenario 1: Template Document Creation
|
|
13
|
-
|
|
14
|
-
After outputting a section during document creation:
|
|
15
|
-
|
|
16
|
-
1. **Section Review**: Ask user to review the drafted section
|
|
17
|
-
2. **Offer Elicitation**: Present 9 carefully selected elicitation methods
|
|
18
|
-
3. **Simple Selection**: User types a number (0-8) to engage method, or 9 to proceed
|
|
19
|
-
4. **Execute & Loop**: Apply selected method, then re-offer choices until user proceeds
|
|
20
|
-
|
|
21
|
-
### Scenario 2: General Chat Elicitation
|
|
22
|
-
|
|
23
|
-
User can request advanced elicitation on any agent output:
|
|
24
|
-
|
|
25
|
-
- User says "do advanced elicitation" or similar
|
|
26
|
-
- Agent selects 9 relevant methods for the context
|
|
27
|
-
- Same simple 0-9 selection process
|
|
28
|
-
|
|
29
|
-
## Task Instructions
|
|
30
|
-
|
|
31
|
-
### 1. Intelligent Method Selection
|
|
32
|
-
|
|
33
|
-
**Context Analysis**: Before presenting options, analyze:
|
|
34
|
-
|
|
35
|
-
- **Content Type**: Technical specs, user stories, architecture, requirements, etc.
|
|
36
|
-
- **Complexity Level**: Simple, moderate, or complex content
|
|
37
|
-
- **Stakeholder Needs**: Who will use this information
|
|
38
|
-
- **Risk Level**: High-impact decisions vs routine items
|
|
39
|
-
- **Creative Potential**: Opportunities for innovation or alternatives
|
|
40
|
-
|
|
41
|
-
**Method Selection Strategy**:
|
|
42
|
-
|
|
43
|
-
1. **Always Include Core Methods** (choose 3-4):
|
|
44
|
-
- Expand or Contract for Audience
|
|
45
|
-
- Critique and Refine
|
|
46
|
-
- Identify Potential Risks
|
|
47
|
-
- Assess Alignment with Goals
|
|
48
|
-
|
|
49
|
-
2. **Context-Specific Methods** (choose 4-5):
|
|
50
|
-
- **Technical Content**: Tree of Thoughts, ReWOO, Meta-Prompting
|
|
51
|
-
- **User-Facing Content**: Agile Team Perspective, Stakeholder Roundtable
|
|
52
|
-
- **Creative Content**: Innovation Tournament, Escape Room Challenge
|
|
53
|
-
- **Strategic Content**: Red Team vs Blue Team, Hindsight Reflection
|
|
54
|
-
|
|
55
|
-
3. **Always Include**: "Proceed / No Further Actions" as option 9
|
|
56
|
-
|
|
57
|
-
### 2. Section Context and Review
|
|
58
|
-
|
|
59
|
-
When invoked after outputting a section:
|
|
60
|
-
|
|
61
|
-
1. **Provide Context Summary**: Give a brief 1-2 sentence summary of what the user should look for in the section just presented
|
|
62
|
-
|
|
63
|
-
2. **Explain Visual Elements**: If the section contains diagrams, explain them briefly before offering elicitation options
|
|
64
|
-
|
|
65
|
-
3. **Clarify Scope Options**: If the section contains multiple distinct items, inform the user they can apply elicitation actions to:
|
|
66
|
-
- The entire section as a whole
|
|
67
|
-
- Individual items within the section (specify which item when selecting an action)
|
|
68
|
-
|
|
69
|
-
### 3. Present Elicitation Options
|
|
70
|
-
|
|
71
|
-
**Review Request Process:**
|
|
72
|
-
|
|
73
|
-
- Ask the user to review the drafted section
|
|
74
|
-
- In the SAME message, inform them they can suggest direct changes OR select an elicitation method
|
|
75
|
-
- Present 9 intelligently selected methods (0-8) plus "Proceed" (9)
|
|
76
|
-
- Keep descriptions short - just the method name
|
|
77
|
-
- Await simple numeric selection
|
|
78
|
-
|
|
79
|
-
**Action List Presentation Format:**
|
|
80
|
-
|
|
81
|
-
```text
|
|
82
|
-
**Advanced Elicitation Options**
|
|
83
|
-
Choose a number (0-8) or 9 to proceed:
|
|
84
|
-
|
|
85
|
-
0. [Method Name]
|
|
86
|
-
1. [Method Name]
|
|
87
|
-
2. [Method Name]
|
|
88
|
-
3. [Method Name]
|
|
89
|
-
4. [Method Name]
|
|
90
|
-
5. [Method Name]
|
|
91
|
-
6. [Method Name]
|
|
92
|
-
7. [Method Name]
|
|
93
|
-
8. [Method Name]
|
|
94
|
-
9. Proceed / No Further Actions
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
**Response Handling:**
|
|
98
|
-
|
|
99
|
-
- **Numbers 0-8**: Execute the selected method, then re-offer the choice
|
|
100
|
-
- **Number 9**: Proceed to next section or continue conversation
|
|
101
|
-
- **Direct Feedback**: Apply user's suggested changes and continue
|
|
102
|
-
|
|
103
|
-
### 4. Method Execution Framework
|
|
104
|
-
|
|
105
|
-
**Execution Process:**
|
|
106
|
-
|
|
107
|
-
1. **Retrieve Method**: Access the specific elicitation method from the elicitation-methods data file
|
|
108
|
-
2. **Apply Context**: Execute the method from your current role's perspective
|
|
109
|
-
3. **Provide Results**: Deliver insights, critiques, or alternatives relevant to the content
|
|
110
|
-
4. **Re-offer Choice**: Present the same 9 options again until user selects 9 or gives direct feedback
|
|
111
|
-
|
|
112
|
-
**Execution Guidelines:**
|
|
113
|
-
|
|
114
|
-
- **Be Concise**: Focus on actionable insights, not lengthy explanations
|
|
115
|
-
- **Stay Relevant**: Tie all elicitation back to the specific content being analyzed
|
|
116
|
-
- **Identify Personas**: For multi-persona methods, clearly identify which viewpoint is speaking
|
|
117
|
-
- **Maintain Flow**: Keep the process moving efficiently
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
# Create Brownfield Epic Task
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
Create a single epic for smaller brownfield enhancements that don't require the full PRD and Architecture documentation process. This task is for isolated features or modifications that can be completed within a focused scope.
|
|
6
|
-
|
|
7
|
-
## When to Use This Task
|
|
8
|
-
|
|
9
|
-
**Use this task when:**
|
|
10
|
-
|
|
11
|
-
- The enhancement can be completed in 1-3 stories
|
|
12
|
-
- No significant architectural changes are required
|
|
13
|
-
- The enhancement follows existing project patterns
|
|
14
|
-
- Integration complexity is minimal
|
|
15
|
-
- Risk to existing system is low
|
|
16
|
-
|
|
17
|
-
**Use the full brownfield PRD/Architecture process when:**
|
|
18
|
-
|
|
19
|
-
- The enhancement requires multiple coordinated stories
|
|
20
|
-
- Architectural planning is needed
|
|
21
|
-
- Significant integration work is required
|
|
22
|
-
- Risk assessment and mitigation planning is necessary
|
|
23
|
-
|
|
24
|
-
## Instructions
|
|
25
|
-
|
|
26
|
-
### 1. Project Analysis (Required)
|
|
27
|
-
|
|
28
|
-
Before creating the epic, gather essential information about the existing project:
|
|
29
|
-
|
|
30
|
-
**Existing Project Context:**
|
|
31
|
-
|
|
32
|
-
- [ ] Project purpose and current functionality understood
|
|
33
|
-
- [ ] Existing technology stack identified
|
|
34
|
-
- [ ] Current architecture patterns noted
|
|
35
|
-
- [ ] Integration points with existing system identified
|
|
36
|
-
|
|
37
|
-
**Enhancement Scope:**
|
|
38
|
-
|
|
39
|
-
- [ ] Enhancement clearly defined and scoped
|
|
40
|
-
- [ ] Impact on existing functionality assessed
|
|
41
|
-
- [ ] Required integration points identified
|
|
42
|
-
- [ ] Success criteria established
|
|
43
|
-
|
|
44
|
-
### 2. Epic Creation
|
|
45
|
-
|
|
46
|
-
Create a focused epic following this structure:
|
|
47
|
-
|
|
48
|
-
#### Epic Title
|
|
49
|
-
|
|
50
|
-
{{Enhancement Name}} - Brownfield Enhancement
|
|
51
|
-
|
|
52
|
-
#### Epic Goal
|
|
53
|
-
|
|
54
|
-
{{1-2 sentences describing what the epic will accomplish and why it adds value}}
|
|
55
|
-
|
|
56
|
-
#### Epic Description
|
|
57
|
-
|
|
58
|
-
**Existing System Context:**
|
|
59
|
-
|
|
60
|
-
- Current relevant functionality: {{brief description}}
|
|
61
|
-
- Technology stack: {{relevant existing technologies}}
|
|
62
|
-
- Integration points: {{where new work connects to existing system}}
|
|
63
|
-
|
|
64
|
-
**Enhancement Details:**
|
|
65
|
-
|
|
66
|
-
- What's being added/changed: {{clear description}}
|
|
67
|
-
- How it integrates: {{integration approach}}
|
|
68
|
-
- Success criteria: {{measurable outcomes}}
|
|
69
|
-
|
|
70
|
-
#### Stories
|
|
71
|
-
|
|
72
|
-
List 1-3 focused stories that complete the epic:
|
|
73
|
-
|
|
74
|
-
1. **Story 1:** {{Story title and brief description}}
|
|
75
|
-
2. **Story 2:** {{Story title and brief description}}
|
|
76
|
-
3. **Story 3:** {{Story title and brief description}}
|
|
77
|
-
|
|
78
|
-
#### Compatibility Requirements
|
|
79
|
-
|
|
80
|
-
- [ ] Existing APIs remain unchanged
|
|
81
|
-
- [ ] Database schema changes are backward compatible
|
|
82
|
-
- [ ] UI changes follow existing patterns
|
|
83
|
-
- [ ] Performance impact is minimal
|
|
84
|
-
|
|
85
|
-
#### Risk Mitigation
|
|
86
|
-
|
|
87
|
-
- **Primary Risk:** {{main risk to existing system}}
|
|
88
|
-
- **Mitigation:** {{how risk will be addressed}}
|
|
89
|
-
- **Rollback Plan:** {{how to undo changes if needed}}
|
|
90
|
-
|
|
91
|
-
#### Definition of Done
|
|
92
|
-
|
|
93
|
-
- [ ] All stories completed with acceptance criteria met
|
|
94
|
-
- [ ] Existing functionality verified through testing
|
|
95
|
-
- [ ] Integration points working correctly
|
|
96
|
-
- [ ] Documentation updated appropriately
|
|
97
|
-
- [ ] No regression in existing features
|
|
98
|
-
|
|
99
|
-
### 3. Validation Checklist
|
|
100
|
-
|
|
101
|
-
Before finalizing the epic, ensure:
|
|
102
|
-
|
|
103
|
-
**Scope Validation:**
|
|
104
|
-
|
|
105
|
-
- [ ] Epic can be completed in 1-3 stories maximum
|
|
106
|
-
- [ ] No architectural documentation is required
|
|
107
|
-
- [ ] Enhancement follows existing patterns
|
|
108
|
-
- [ ] Integration complexity is manageable
|
|
109
|
-
|
|
110
|
-
**Risk Assessment:**
|
|
111
|
-
|
|
112
|
-
- [ ] Risk to existing system is low
|
|
113
|
-
- [ ] Rollback plan is feasible
|
|
114
|
-
- [ ] Testing approach covers existing functionality
|
|
115
|
-
- [ ] Team has sufficient knowledge of integration points
|
|
116
|
-
|
|
117
|
-
**Completeness Check:**
|
|
118
|
-
|
|
119
|
-
- [ ] Epic goal is clear and achievable
|
|
120
|
-
- [ ] Stories are properly scoped
|
|
121
|
-
- [ ] Success criteria are measurable
|
|
122
|
-
- [ ] Dependencies are identified
|
|
123
|
-
|
|
124
|
-
### 4. Handoff to Story Manager
|
|
125
|
-
|
|
126
|
-
Once the epic is validated, provide this handoff to the Story Manager:
|
|
127
|
-
|
|
128
|
-
---
|
|
129
|
-
|
|
130
|
-
**Story Manager Handoff:**
|
|
131
|
-
|
|
132
|
-
"Please develop detailed user stories for this brownfield epic. Key considerations:
|
|
133
|
-
|
|
134
|
-
- This is an enhancement to an existing system running {{technology stack}}
|
|
135
|
-
- Integration points: {{list key integration points}}
|
|
136
|
-
- Existing patterns to follow: {{relevant existing patterns}}
|
|
137
|
-
- Critical compatibility requirements: {{key requirements}}
|
|
138
|
-
- Each story must include verification that existing functionality remains intact
|
|
139
|
-
|
|
140
|
-
The epic should maintain system integrity while delivering {{epic goal}}."
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## Success Criteria
|
|
145
|
-
|
|
146
|
-
The epic creation is successful when:
|
|
147
|
-
|
|
148
|
-
1. Enhancement scope is clearly defined and appropriately sized
|
|
149
|
-
2. Integration approach respects existing system architecture
|
|
150
|
-
3. Risk to existing functionality is minimized
|
|
151
|
-
4. Stories are logically sequenced for safe implementation
|
|
152
|
-
5. Compatibility requirements are clearly specified
|
|
153
|
-
6. Rollback plan is feasible and documented
|
|
154
|
-
|
|
155
|
-
## Important Notes
|
|
156
|
-
|
|
157
|
-
- This task is specifically for SMALL brownfield enhancements
|
|
158
|
-
- If the scope grows beyond 3 stories, consider the full brownfield PRD process
|
|
159
|
-
- Always prioritize existing system integrity over new functionality
|
|
160
|
-
- When in doubt about scope or complexity, escalate to full brownfield planning
|