@thierrynakoa/fire-flow 12.2.1 → 13.0.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/CREDITS.md +25 -0
- package/DOMINION-FLOW-OVERVIEW.md +182 -38
- package/README.md +399 -455
- package/TROUBLESHOOTING.md +264 -264
- package/agents/fire-debugger.md +54 -0
- package/agents/fire-executor.md +1610 -1033
- package/agents/fire-fact-checker.md +1 -1
- package/agents/fire-planner.md +85 -17
- package/agents/fire-project-researcher.md +1 -1
- package/agents/fire-researcher.md +4 -22
- package/agents/{fire-phoenix-analyst.md → fire-resurrection-analyst.md} +394 -394
- package/agents/fire-reviewer.md +552 -499
- package/agents/fire-verifier.md +114 -19
- package/bin/cli.js +18 -101
- package/commands/fire-0-orient.md +2 -2
- package/commands/fire-1a-new.md +50 -15
- package/commands/fire-1c-setup.md +33 -5
- package/commands/fire-1d-discuss.md +87 -1
- package/commands/fire-2-plan.md +556 -527
- package/commands/fire-3-execute.md +2046 -1356
- package/commands/fire-4-verify.md +975 -906
- package/commands/fire-5-handoff.md +46 -5
- package/commands/fire-6-resume.md +2 -31
- package/commands/fire-add-new-skill.md +138 -19
- package/commands/fire-autonomous.md +14 -2
- package/commands/fire-complete-milestone.md +1 -1
- package/commands/fire-cost.md +179 -183
- package/commands/fire-debug.md +1 -6
- package/commands/fire-loop-resume.md +2 -2
- package/commands/fire-loop-stop.md +1 -1
- package/commands/fire-loop.md +2 -15
- package/commands/fire-map-codebase.md +1 -1
- package/commands/fire-migrate-database.md +548 -0
- package/commands/fire-new-milestone.md +1 -1
- package/commands/fire-reflect.md +1 -2
- package/commands/fire-research.md +142 -21
- package/commands/{fire-phoenix.md → fire-resurrect.md} +859 -603
- package/commands/fire-scaffold.md +297 -0
- package/commands/fire-search.md +1 -2
- package/commands/fire-security-scan.md +483 -484
- package/commands/fire-setup.md +359 -0
- package/commands/fire-skill.md +770 -0
- package/commands/fire-skills-diff.md +506 -506
- package/commands/fire-skills-history.md +388 -388
- package/commands/fire-skills-rollback.md +7 -7
- package/commands/fire-skills-sync.md +470 -470
- package/commands/fire-test.md +5 -5
- package/commands/fire-todos.md +1 -1
- package/commands/fire-update.md +5 -5
- package/commands/fire-validate-skills.md +282 -0
- package/commands/fire-vuln-scan.md +492 -493
- package/hooks/run-hook.sh +8 -8
- package/hooks/run-session-end.sh +7 -7
- package/hooks/session-end.sh +90 -90
- package/hooks/session-start.sh +1 -1
- package/package.json +4 -24
- package/plugin.json +7 -7
- package/references/autonomy-levels.md +235 -0
- package/references/behavioral-directives.md +95 -3
- package/references/blocker-tracking.md +1 -1
- package/references/circuit-breaker.md +93 -2
- package/references/context-engineering.md +227 -9
- package/references/honesty-protocols.md +70 -1
- package/references/issue-to-pr-pipeline.md +149 -150
- package/references/metrics-and-trends.md +1 -2
- package/references/research-improvements.md +4 -108
- package/references/sdlc-mapping.md +73 -0
- package/references/state-machine.md +151 -0
- package/skills-library/AVAILABLE_TOOLS_REFERENCE.md +333 -0
- package/skills-library/SKILLS-INDEX.md +57 -558
- package/skills-library/SKILLS_LIBRARY_INDEX.md +532 -0
- package/skills-library/_general/api-patterns/api-field-name-mismatch.md +107 -0
- package/skills-library/_general/api-patterns/streaming-command-timeout.md +122 -0
- package/skills-library/_general/api-patterns/streaming-proxy-cors-bypass.md +102 -0
- package/skills-library/_general/automation/settings-gui-generator.md +172 -0
- package/skills-library/_general/database-solutions/data-type-mapping-reference.md +181 -0
- package/skills-library/_general/database-solutions/mysql-limit-offset-string-coercion.md +102 -0
- package/skills-library/_general/database-solutions/mysql-to-pg-migration.md +195 -0
- package/skills-library/_general/database-solutions/orm-schema-portability.md +193 -0
- package/skills-library/_general/database-solutions/persistent-analysis-storage.md +207 -0
- package/skills-library/_general/database-solutions/pg-to-mysql-schema-migration-methodology.md +190 -0
- package/skills-library/_general/database-solutions/sql-dialect-compatibility-matrix.md +306 -0
- package/skills-library/_general/database-solutions/sqlite-to-pg-migration.md +219 -0
- package/skills-library/_general/frontend/canvas-bubble-animation-grouping.md +270 -0
- package/skills-library/_general/frontend/color-token-migration.md +112 -0
- package/skills-library/_general/frontend/framer-motion-layoutid-grouping.md +150 -0
- package/skills-library/_general/frontend/pyqt6-settings-dialog.md +191 -0
- package/skills-library/_general/frontend/react-flow-animated-layout-switching.md +101 -0
- package/skills-library/_general/frontend/react-hooks-order-debugging.md +141 -0
- package/skills-library/_general/frontend/redux-localstorage-auth-desync.md +126 -0
- package/skills-library/_general/frontend/safari-csp-theme-color-debugging.md +124 -0
- package/skills-library/_general/frontend/safari-sw-cache-poisoning.md +138 -0
- package/skills-library/_general/frontend/svg-sparkline-no-charting-library.md +131 -0
- package/skills-library/_general/growth-marketing/oss-daily-growth-intelligence.md +224 -0
- package/skills-library/_general/integrations/claude-code-local-mcp-integration.md +250 -0
- package/skills-library/_general/integrations/mcp-composite-tool-orchestration.md +200 -0
- package/skills-library/_general/methodology/AGENT_SDK_STANDALONE_TOOLING.md +181 -0
- package/skills-library/_general/methodology/AGENT_TEAMS_GUIDE.md +169 -0
- package/skills-library/_general/methodology/ALAS_STATEFUL_EXECUTION.md +207 -0
- package/skills-library/_general/methodology/AUTO_REVIEWER_SUBAGENT.md +211 -0
- package/skills-library/_general/methodology/CONSISTENCY_CHECK_AMBIGUITY_GATE.md +96 -0
- package/skills-library/_general/methodology/DEAD_ENDS_SHELF.md +4 -4
- package/skills-library/_general/methodology/DISTILL_NOT_DUMP.md +108 -0
- package/skills-library/_general/methodology/EXECUTION_PROGRESS_MONITOR.md +157 -0
- package/skills-library/_general/methodology/HIERARCHICAL_REVIEW_MARS.md +122 -0
- package/skills-library/_general/methodology/MCP_INTER_AGENT_BRIDGE.md +207 -0
- package/skills-library/_general/methodology/MERMAID_WIZARD_DIAGRAMS.md +77 -0
- package/skills-library/_general/methodology/MISSING_DIMENSION_DETECTOR.md +89 -0
- package/skills-library/_general/methodology/MULTI_AGENT_COORDINATION.md +397 -0
- package/skills-library/_general/methodology/OBSERVATION_MASKING.md +100 -0
- package/skills-library/_general/methodology/PHOENIX_REBUILD_METHODOLOGY.md +82 -11
- package/skills-library/_general/methodology/REVIEW_BACKTRACK_PANEL.md +140 -0
- package/skills-library/_general/methodology/REVIEW_FIX_LOOP.md +117 -0
- package/skills-library/_general/methodology/VOTING_VERDICT_ARBITRATION.md +155 -0
- package/skills-library/_general/methodology/ZERO_FRICTION_CLI_SETUP.md +2 -2
- package/skills-library/_general/methodology/dead-code-activation.md +123 -0
- package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -240
- package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +1 -1
- package/skills-library/_general/patterns-standards/GOF_DESIGN_PATTERNS_FOR_AI_AGENTS.md +5 -5
- package/skills-library/_general/patterns-standards/cascading-failure-diagnosis.md +119 -0
- package/skills-library/_general/patterns-standards/domain-specific-layout-algorithms.md +209 -0
- package/skills-library/_general/patterns-standards/python-desktop-app-architecture.md +399 -0
- package/skills-library/_general/patterns-standards/realtime-monitoring-dashboard.md +457 -0
- package/skills-library/_general/patterns-standards/togglable-processing-pipeline.md +169 -0
- package/skills-library/_general/performance/liveclock-extraction.md +112 -0
- package/skills-library/_general/performance/ref-based-canvas-animation.md +117 -0
- package/skills-library/_general/performance/use-visible-interval.md +131 -0
- package/skills-library/_general/testing/playwright-firefox-withcredentials-auth-issue.md +104 -0
- package/skills-library/_quarantine/README.md +30 -0
- package/skills-library/api-patterns/BROADCAST_SCHEDULER_SHARED_EXECUTE_FUNCTION.md +150 -0
- package/skills-library/api-patterns/ERROR_RESPONSE_STANDARDS.md +145 -0
- package/skills-library/api-patterns/EXPRESS_ROUTE_ORDERING_MIDDLEWARE_INTERCEPTION.md +326 -0
- package/skills-library/api-patterns/PAGINATION_PATTERNS.md +137 -0
- package/skills-library/api-patterns/PODCAST_PROGRESS_TRACKING_THREE_ROOT_CAUSES.md +277 -0
- package/skills-library/api-patterns/RATE_LIMITING_TOGGLE.md +155 -0
- package/skills-library/api-patterns/graphql-content-queries.md +708 -0
- package/skills-library/appointment-scheduler-design.md +423 -0
- package/skills-library/automation/AUTO_POPULATE_COMPLETE_GUIDE.md +631 -0
- package/skills-library/automation/CC_WORKFLOW_STUDIO.md +83 -0
- package/skills-library/automation/CLAUDE_CODE_SWARM_MODE.md +95 -0
- package/skills-library/automation/DAEMON_TRIGGER_FILE_IPC.md +195 -0
- package/skills-library/automation/scheduled-content-publishing.md +608 -0
- package/skills-library/awesome-workflows/Blogging-Platform-Instructions/view_commands.md +25 -0
- package/skills-library/awesome-workflows/CREDENTIAL-SECURITY-WORKFLOW.md +109 -0
- package/skills-library/awesome-workflows/DEBUGGING-WORKFLOW.md +124 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/README.md +31 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-principles-example.md +129 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-agent.md +107 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-claude-md-snippet.md +24 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-slash-command.md +38 -0
- package/skills-library/awesome-workflows/PARALLEL-RESEARCH-WORKFLOW.md +89 -0
- package/skills-library/awesome-workflows/PHASE-EXECUTION-WORKFLOW.md +97 -0
- package/skills-library/awesome-workflows/SESSION-HANDOFF-WORKFLOW.md +116 -0
- package/skills-library/cms-patterns/content-branch-preview.md +515 -0
- package/skills-library/cms-patterns/inline-visual-editing.md +666 -0
- package/skills-library/cms-patterns/mdx-component-content.md +649 -0
- package/skills-library/cms-patterns/media-manager-abstraction.md +827 -0
- package/skills-library/cms-patterns/schema-driven-form-generator.md +838 -0
- package/skills-library/complexity-metrics/complexity-divider.md +707 -0
- package/skills-library/complexity-metrics/work-with-complexity.md +193 -0
- package/skills-library/creative-multimedia/animation-stack-guide.md +577 -0
- package/skills-library/creative-multimedia/audio-enhancement-pipeline.md +625 -0
- package/skills-library/creative-multimedia/content-repurposing-pipeline.md +1146 -0
- package/skills-library/creative-multimedia/data-visualization-generator.md +862 -0
- package/skills-library/creative-multimedia/doc-to-podcast-pipeline.md +2184 -0
- package/skills-library/creative-multimedia/ffmpeg-command-generator.md +405 -0
- package/skills-library/creative-multimedia/image-optimization-pipeline.md +605 -0
- package/skills-library/creative-multimedia/multi-format-content-generator.md +1759 -0
- package/skills-library/creative-multimedia/og-image-generator.md +635 -0
- package/skills-library/creative-multimedia/podcast-audio-composition.md +1355 -0
- package/skills-library/creative-multimedia/podcast-quality-evaluation.md +1452 -0
- package/skills-library/creative-multimedia/podcast-script-generation.md +1841 -0
- package/skills-library/creative-multimedia/svg-generation.md +750 -0
- package/skills-library/creative-multimedia/text-to-speech-provider-selector.md +1414 -0
- package/skills-library/creative-multimedia/transcription-pipeline-selector.md +677 -0
- package/skills-library/creative-multimedia/video-streaming-setup.md +559 -0
- package/skills-library/database-solutions/AI_RESPONSE_DATABASE_CACHING.md +520 -0
- package/skills-library/database-solutions/CONDITIONAL_SQL_MIGRATION_PATTERN.md +119 -0
- package/skills-library/database-solutions/DATABASE_COLUMN_NAME_MISMATCH.md +393 -0
- package/skills-library/database-solutions/DATABASE_SCHEMA.md +394 -0
- package/skills-library/database-solutions/DATABASE_SCHEMA_VERIFICATION_GUIDE.md +348 -0
- package/skills-library/database-solutions/DATABASE_STRATEGY.md +71 -0
- package/skills-library/database-solutions/ES_MODULE_SEED_SCRIPT_PATTERN.md +52 -0
- package/skills-library/database-solutions/MIGRATION_GUIDE.md +3 -0
- package/skills-library/database-solutions/PLPGSQL_VARIABLE_CONFLICT_FIX.md +208 -0
- package/skills-library/database-solutions/POSTGRESQL_JSONB_DOUBLE_STRINGIFY_FIX.md +245 -0
- package/skills-library/database-solutions/POSTGRESQL_LICENSE_TABLE_DESIGN.md +393 -0
- package/skills-library/database-solutions/POSTGRESQL_UUID_DOCUMENT_RAG_DUAL_SCOPE.md +732 -0
- package/skills-library/database-solutions/POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md +240 -0
- package/skills-library/database-solutions/PRISMA_DB_PUSH_DATA_LOSS_PREVENTION.md +141 -0
- package/skills-library/database-solutions/PRODUCTION_QUERY_OPTIMIZATION_RESTART_FIX.md +389 -0
- package/skills-library/database-solutions/RLS_SECURITY_GUIDE.md +107 -0
- package/skills-library/database-solutions/SCHEMA_ENHANCEMENTS_GUIDE.md +373 -0
- package/skills-library/database-solutions/SCHEMA_MIGRATION_GUIDE.md +368 -0
- package/skills-library/database-solutions/SCHEMA_VERIFICATION_QUICK_REFERENCE.md +104 -0
- package/skills-library/database-solutions/ai-erd-generator.md +1213 -0
- package/skills-library/database-solutions/content-publishing-states.md +631 -0
- package/skills-library/database-solutions/database-schema-designer.md +522 -0
- package/skills-library/database-solutions/er-diagram-components.md +569 -0
- package/skills-library/database-solutions/er-to-ddl-mapping.md +1405 -0
- package/skills-library/database-solutions/erd-creator-textbook-research.md +433 -0
- package/skills-library/database-solutions/erd-react-flow-architecture.md +1965 -0
- package/skills-library/database-solutions/mariadb-aggregate-function-replacement.md +145 -0
- package/skills-library/database-solutions/normalization-validator.md +778 -0
- package/skills-library/database-solutions/postgres-full-text-search-content.md +494 -0
- package/skills-library/database-solutions/postgresql-to-mysql-runtime-translation.md +286 -0
- package/skills-library/database-solutions/regex-alternation-ordering-sql-types.md +92 -0
- package/skills-library/database-solutions/reserved-word-context-aware-quoting.md +142 -0
- package/skills-library/database-solutions/sql-ddl-generator.md +756 -0
- package/skills-library/database-solutions/supabase-connection-pooler-fix.md +102 -0
- package/skills-library/deployment-security/CPANEL_NODE_DEPLOYMENT.md +166 -0
- package/skills-library/deployment-security/DEPLOYMENT.md +275 -0
- package/skills-library/deployment-security/DEPLOYMENT_CHECKLIST.md +363 -0
- package/skills-library/deployment-security/DEPLOYMENT_PLAN.md +669 -0
- package/skills-library/deployment-security/KNEX_DATABASE_ABSTRACTION.md +444 -0
- package/skills-library/deployment-security/LICENSE_KEY_SYSTEM.md +206 -0
- package/skills-library/deployment-security/NODE18_DEPENDENCY_COMPATIBILITY.md +284 -0
- package/skills-library/deployment-security/PHP_INSTALLER_WIZARD_GUIDE.md +315 -0
- package/skills-library/deployment-security/PM2_ENVIRONMENT_VARIABLE_CACHING.md +256 -0
- package/skills-library/deployment-security/PM2_MEMORY_EXHAUSTION_FIX.md +370 -0
- package/skills-library/deployment-security/PRODUCTION_DEPLOYMENT_GUIDE.md +592 -0
- package/skills-library/deployment-security/PRODUCTION_HARDENING_DOCUMENTATION.md +307 -0
- package/skills-library/deployment-security/PRODUCTION_RECOVERY_CHERRY_PICK_PATTERN.md +202 -0
- package/skills-library/deployment-security/PYINSTALLER_CUDA_WHISPER_BUNDLING.md +236 -0
- package/skills-library/deployment-security/SECURITY.md +41 -0
- package/skills-library/deployment-security/SMTP_SSL_HOSTNAME_MISMATCH_SHARED_HOSTING.md +220 -0
- package/skills-library/deployment-security/SPA_SEO_OPTIMIZATION_CPANEL.md +200 -0
- package/skills-library/deployment-security/SUPABASE_EDGE_FUNCTIONS.md +338 -0
- package/skills-library/deployment-security/VERCEL_GITHUB_DEPLOYMENT_GUIDE.md +858 -0
- package/skills-library/deployment-security/VPS_DEPLOYMENT_READINESS.md +356 -0
- package/skills-library/deployment-security/deployment-changes-not-applying.md +241 -0
- package/skills-library/deployment-security/env-file-management-production-local.md +203 -0
- package/skills-library/deployment-security/express-secure-file-downloads.md +413 -0
- package/skills-library/deployment-security/react-production-deployment-desktop-guide.md +2011 -0
- package/skills-library/deployment-security/self-hosted-supabase-coolify-guide.md +1684 -0
- package/skills-library/deployment-security/unique-features-ai-strategy-plaid-security.md +1613 -0
- package/skills-library/deployment-security/vps-deployment.md +135 -0
- package/skills-library/document-processing/WORD_EXPORT_MARKDOWN_FORMATTING.md +482 -0
- package/skills-library/document-processing/document-ai-landingai-integration.md +677 -0
- package/skills-library/document-processing/express-secure-file-downloads-mern.md +413 -0
- package/skills-library/document-processing/express-secure-file-downloads.md +413 -0
- package/skills-library/document-processing/md-to-word-converter.md +318 -0
- package/skills-library/document-processing/pdf-forms-integration/README.md +101 -0
- package/skills-library/document-processing/pdf-forms-integration/SKILL.md +662 -0
- package/skills-library/ecommerce/ADMIN_PRODUCTS_GUIDE.md +428 -0
- package/skills-library/ecommerce/ECOMMERCE_API_REFERENCE.md +776 -0
- package/skills-library/ecommerce/ECOMMERCE_COMPLETION_SUMMARY.md +673 -0
- package/skills-library/ecommerce/ECOMMERCE_IMPLEMENTATION_GUIDE.md +729 -0
- package/skills-library/ecommerce/ECOMMERCE_QUICK_REFERENCE.md +521 -0
- package/skills-library/ecommerce/ECOMMERCE_TESTING_CHECKLIST.md +565 -0
- package/skills-library/ecommerce/ECOMMERCE_WORKFLOW_GUIDE.md +1059 -0
- package/skills-library/ecommerce/PRODUCT_CREATION_EXPANDED.md +522 -0
- package/skills-library/ecommerce/agentic-commerce-protocol.md +203 -0
- package/skills-library/ecommerce/cart-abandonment-recovery.md +236 -0
- package/skills-library/ecommerce/cart-architecture-patterns.md +300 -0
- package/skills-library/ecommerce/cart-item-count-indicator.md +264 -0
- package/skills-library/ecommerce/checkout-ux-conversion.md +227 -0
- package/skills-library/ecommerce/composable-commerce-selection.md +166 -0
- package/skills-library/ecommerce/ecommerce-analytics-patterns.md +167 -0
- package/skills-library/ecommerce/fraud-detection-patterns.md +179 -0
- package/skills-library/ecommerce/inventory-stock-management.md +270 -0
- package/skills-library/ecommerce/order-saga-state-machine.md +336 -0
- package/skills-library/ecommerce/payment-provider-abstraction.md +245 -0
- package/skills-library/ecommerce/pci-compliance-checklist.md +192 -0
- package/skills-library/ecommerce/refund-chargeback-handling.md +177 -0
- package/skills-library/ecommerce/shipping-carrier-integration.md +218 -0
- package/skills-library/ecommerce/webhook-idempotency-patterns.md +253 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/ci.yml +558 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/prompt-gallery.yml +448 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/release.yml +42 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/test-reusable-ci.yml +25 -0
- package/skills-library/excalidraw-diagrams/CLAUDE.md +57 -0
- package/skills-library/excalidraw-diagrams/LICENSE +21 -0
- package/skills-library/excalidraw-diagrams/README.md +178 -0
- package/skills-library/excalidraw-diagrams/SKILL.md +715 -0
- package/skills-library/form-solutions/BUTTON_TYPE_FORM_SUBMISSION.md +336 -0
- package/skills-library/form-solutions/FILLABLE_PDF_IMPLEMENTATION.md +226 -0
- package/skills-library/form-solutions/SURVEYJS_QUESTIONNAIRE_SYSTEM.md +367 -0
- package/skills-library/form-solutions/tiptap-minimal-setup.md +690 -0
- package/skills-library/frontend/scholarly-classification-bubble-map.md +149 -0
- package/skills-library/infrastructure/ci-cd-pipeline-builder.md +517 -0
- package/skills-library/infrastructure/observability-designer.md +264 -0
- package/skills-library/infrastructure/performance-profiler.md +621 -0
- package/skills-library/installer-wizard-patterns.md +249 -0
- package/skills-library/integrations/CLAUDE_CODE_TOKEN_ANALYTICS.md +160 -0
- package/skills-library/integrations/CONFIGURABLE_AI_PROVIDER_SELECTION.md +728 -0
- package/skills-library/integrations/SOCKET_IO_BROADCAST_ALL_VS_ROOM.md +141 -0
- package/skills-library/integrations/VIRTUAL_MEETINGS_IMPLEMENTATION.md +374 -0
- package/skills-library/integrations/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
- package/skills-library/integrations/YOUTUBE_API_SETUP.md +141 -0
- package/skills-library/integrations/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
- package/skills-library/integrations/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
- package/skills-library/integrations/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
- package/skills-library/integrations/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
- package/skills-library/integrations/ai-ml/GEMINI_AI_RAG_PIPELINE_COMPLETE_GUIDE.md +195 -0
- package/skills-library/integrations/ai-ml/GEMINI_IMAGE_GENERATION_SETUP.md +64 -0
- package/skills-library/integrations/cloudflare/cloudflare-turnstile-debugging.md +202 -0
- package/skills-library/integrations/cloudflare/cloudflare-turnstile-implementation.md +476 -0
- package/skills-library/integrations/cloudflare-turnstile-debugging.md +202 -0
- package/skills-library/integrations/cloudflare-turnstile-implementation.md +476 -0
- package/skills-library/integrations/ghost-creator-monetization-pattern.md +454 -0
- package/skills-library/integrations/headless-cms-architecture.md +484 -0
- package/skills-library/integrations/headless-cms-stack-selection.md +183 -0
- package/skills-library/integrations/payload-cms-patterns.md +674 -0
- package/skills-library/integrations/realtimestt-openwakeword-cuda-windows.md +229 -0
- package/skills-library/integrations/rss-podcast-integration.md +300 -0
- package/skills-library/integrations/wordpress/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
- package/skills-library/integrations/youtube/YOUTUBE_API_SETUP.md +141 -0
- package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
- package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
- package/skills-library/integrations/youtube/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
- package/skills-library/integrations/youtube/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
- package/skills-library/marketing/campaign-analytics.md +97 -0
- package/skills-library/marketing/content-creator.md +105 -0
- package/skills-library/marketing/marketing-strategy-pmm.md +94 -0
- package/skills-library/marketing/social-media-analyzer.md +81 -0
- package/skills-library/methodology/ADVANCED_ORCHESTRATION_PATTERNS.md +401 -0
- package/skills-library/methodology/AGENT_SELF_IMPROVEMENT_LOOP.md +179 -0
- package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +1 -1
- package/skills-library/methodology/CLEANSING_CYCLE.md +358 -0
- package/skills-library/methodology/CONFIDENCE_ANNOTATION_PATTERN.md +143 -0
- package/skills-library/methodology/CRITICAL_PATTERNS_DOCUMENTATION_COMPLETE.md +204 -0
- package/skills-library/methodology/DELIVERABLES_SUMMARY.md +341 -0
- package/skills-library/methodology/DIFFICULTY_AWARE_AGENT_ROUTING.md +252 -0
- package/skills-library/methodology/EVOLUTIONARY_SKILL_SYNTHESIS.md +219 -0
- package/skills-library/methodology/GLOMERULUS_DECISION_GATE.md +223 -0
- package/skills-library/methodology/HIBERNATION_SYSTEM.md +231 -0
- package/skills-library/methodology/INSTRUMENTATION_OVER_RESTRICTION.md +192 -0
- package/skills-library/methodology/MASTER_COMPLETION_SUMMARY.md +444 -0
- package/skills-library/methodology/MASTER_SESSION_COMPLETION.md +743 -0
- package/skills-library/methodology/MERN_QUICK_REFERENCE.md +358 -0
- package/skills-library/methodology/ORGAN_AGENT_MAPPING.md +177 -0
- package/skills-library/methodology/PARALLEL_WAVE_BASED_REFACTORING.md +440 -0
- package/skills-library/methodology/QUICK_REFERENCE.md +358 -0
- package/skills-library/methodology/SDFT_ONPOLICY_SELF_DISTILLATION.md +186 -0
- package/skills-library/methodology/SELF_QUESTIONING_TASK_GENERATION.md +270 -0
- package/skills-library/methodology/SESSION_COMPLETION_SUMMARY.md +304 -0
- package/skills-library/methodology/SESSION_SUMMARY.md +432 -0
- package/skills-library/methodology/WARRIOR_WORKFLOW_DEBUGGING_PROTOCOL.md +252 -0
- package/skills-library/methodology/tech-debt-tracker.md +570 -0
- package/skills-library/parallel-debug/SKILL.md +60 -0
- package/skills-library/patterns-standards/API_PATTERN_FIX_SUMMARY.md +236 -0
- package/skills-library/patterns-standards/BATCH_OPERATIONS_WITH_PROGRESS_MODAL.md +362 -0
- package/skills-library/patterns-standards/CRITICAL_CODING_PATTERNS.md +639 -0
- package/skills-library/patterns-standards/DARK_MODE_MODAL_VISIBILITY.md +258 -0
- package/skills-library/patterns-standards/ERROR_RESILIENCE_IMPLEMENTATION.md +375 -0
- package/skills-library/patterns-standards/ES_MODULE_IMPORT_HOISTING_DOTENV.md +298 -0
- package/skills-library/patterns-standards/NESTED_BACKDROP_FILTER_CSS_ARTIFACT_FIX.md +76 -0
- package/skills-library/patterns-standards/ORDERED_DETECTOR_PIPELINE_GRACEFUL_FALLBACK.md +333 -0
- package/skills-library/patterns-standards/PHASE_IMPORT_ERROR_DEBUGGING.md +271 -0
- package/skills-library/patterns-standards/PYNPUT_GLOBAL_HOTKEY_VK_MATCHING.md +252 -0
- package/skills-library/patterns-standards/REACT_USEEFFECT_CASCADE_RESET_FIX.md +132 -0
- package/skills-library/patterns-standards/SUBMENU_HOVER_DROPDOWN_PATTERN.md +225 -0
- package/skills-library/patterns-standards/TAILWIND_TEXT_VISIBILITY_OVERRIDE.md +322 -0
- package/skills-library/patterns-standards/THEME_AWARE_CSS_VARIABLES_PATTERN.md +209 -0
- package/skills-library/patterns-standards/THEME_USER_OBJECT_PROPERTY_NAMING.md +194 -0
- package/skills-library/patterns-standards/TOOLTIP_BLOCKING_CLICKS_FIX.md +267 -0
- package/skills-library/patterns-standards/claude-code-plugin-structure.md +235 -0
- package/skills-library/patterns-standards/react-i18next-setup.md +429 -0
- package/skills-library/patterns-standards/thesys-c1-generative-ui-integration.md +967 -0
- package/skills-library/plugin-development/CLAUDE_CODE_COMMAND_REGISTRATION_SILENT_FAILURE.md +315 -0
- package/skills-library/plugin-development/plugin-command-namespace-vs-global.md +390 -0
- package/skills-library/plugin-development/plugin-doc-auto-generation.md +172 -0
- package/skills-library/security/GITHUB_REPO_SECURITY_AUDIT.md +115 -0
- package/skills-library/security/admin-deletion-safety.md +396 -0
- package/skills-library/security/application-vuln-patterns.md +477 -0
- package/skills-library/security/env-secrets-manager.md +686 -0
- package/skills-library/security/secure-ai-application-templates.md +347 -0
- package/skills-library/security/sql-injection-prevention-postgresjs.md +151 -0
- package/skills-library/supabase-connection-pooler-fix.md +102 -0
- package/skills-library/system-context/POWERSHELL_BASH_INTEROP.md +82 -0
- package/skills-library/system-context/SERVICE_LIFECYCLE_MANAGEMENT.md +119 -0
- package/skills-library/system-context/SKILL.md +40 -0
- package/skills-library/system-context/WINDOWS_DEV_ENVIRONMENT.md +73 -0
- package/skills-library/testing/E2E_PLAYWRIGHT_PATTERNS.md +99 -0
- package/skills-library/testing/INTEGRATION_TEST_STRATEGY.md +82 -0
- package/skills-library/testing/RED_GREEN_BUGFIX_GATE.md +203 -0
- package/skills-library/testing/TEST_DATA_MANAGEMENT.md +69 -0
- package/skills-library/testing/VITEST_UNIT_TEST_PATTERNS.md +75 -0
- package/skills-library/testing/playwright-api-security-tests.md +202 -0
- package/skills-library/toolbox/SKILL.md +84 -0
- package/skills-library/toolbox/code-graph-and-web-scraping-mcps.md +237 -0
- package/skills-library/ui-ux-pro-max/ACCESSIBILITY_ESSENTIALS.md +115 -0
- package/skills-library/ui-ux-pro-max/DESIGN_SYSTEM_SCAFFOLDING.md +133 -0
- package/skills-library/ui-ux-pro-max/RESPONSIVE_LAYOUT_PATTERNS.md +119 -0
- package/skills-library/ui-ux-pro-max/SKILL.md +386 -0
- package/skills-library/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills-library/ui-ux-pro-max/data/colors.csv +97 -0
- package/skills-library/ui-ux-pro-max/data/icons.csv +101 -0
- package/skills-library/ui-ux-pro-max/data/landing.csv +31 -0
- package/skills-library/ui-ux-pro-max/data/products.csv +97 -0
- package/skills-library/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills-library/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills-library/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills-library/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills-library/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills-library/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills-library/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills-library/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills-library/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills-library/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills-library/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills-library/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills-library/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills-library/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills-library/ui-ux-pro-max/data/styles.csv +68 -0
- package/skills-library/ui-ux-pro-max/data/typography.csv +58 -0
- package/skills-library/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills-library/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills-library/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills-library/wordpress-style-theme-components.md +1526 -0
- package/templates/ASSUMPTIONS.md +1 -1
- package/templates/DECISION_LOG.md +0 -1
- package/templates/phase-prompt.md +1 -1
- package/templates/phoenix-comparison.md +6 -6
- package/templates/skill-api-integration.md +106 -0
- package/templates/skill-architecture-pattern.md +92 -0
- package/templates/skill-debug-pattern.md +98 -0
- package/templates/skill-devops-recipe.md +107 -0
- package/templates/skill-general.md +65 -0
- package/templates/skill-ui-component.md +113 -0
- package/tools/uat-runner.py +179 -0
- package/version.json +7 -3
- package/workflows/handoff-session.md +2 -2
- package/workflows/new-project.md +2 -2
- package/workflows/plan-phase.md +1 -1
- package/.claude-plugin/plugin.json +0 -64
- package/skills-library/_general/methodology/LIVE_BREADCRUMB_PROTOCOL.md +0 -242
- package/skills-library/_general/methodology/llm-judge-memory-crud.md +0 -241
- package/skills-library/methodology/REFLEXION_MEMORY_PATTERN.md +0 -183
- package/skills-library/methodology/RESEARCH_BACKED_WORKFLOW_UPGRADE.md +0 -263
- package/skills-library/methodology/SABBATH_REST_PATTERN.md +0 -267
- package/skills-library/methodology/STONE_AND_SCAFFOLD.md +0 -220
- package/skills-library/specialists/api-architecture/api-designer.md +0 -49
- package/skills-library/specialists/api-architecture/graphql-architect.md +0 -49
- package/skills-library/specialists/api-architecture/mcp-developer.md +0 -51
- package/skills-library/specialists/api-architecture/microservices-architect.md +0 -50
- package/skills-library/specialists/api-architecture/websocket-engineer.md +0 -48
- package/skills-library/specialists/backend/django-expert.md +0 -52
- package/skills-library/specialists/backend/fastapi-expert.md +0 -52
- package/skills-library/specialists/backend/laravel-specialist.md +0 -52
- package/skills-library/specialists/backend/nestjs-expert.md +0 -51
- package/skills-library/specialists/backend/rails-expert.md +0 -53
- package/skills-library/specialists/backend/spring-boot-engineer.md +0 -56
- package/skills-library/specialists/data-ml/fine-tuning-expert.md +0 -48
- package/skills-library/specialists/data-ml/ml-pipeline.md +0 -47
- package/skills-library/specialists/data-ml/pandas-pro.md +0 -47
- package/skills-library/specialists/data-ml/rag-architect.md +0 -51
- package/skills-library/specialists/data-ml/spark-engineer.md +0 -47
- package/skills-library/specialists/frontend/angular-architect.md +0 -52
- package/skills-library/specialists/frontend/flutter-expert.md +0 -51
- package/skills-library/specialists/frontend/nextjs-developer.md +0 -54
- package/skills-library/specialists/frontend/react-native-expert.md +0 -50
- package/skills-library/specialists/frontend/vue-expert.md +0 -51
- package/skills-library/specialists/infrastructure/chaos-engineer.md +0 -74
- package/skills-library/specialists/infrastructure/cloud-architect.md +0 -70
- package/skills-library/specialists/infrastructure/database-optimizer.md +0 -64
- package/skills-library/specialists/infrastructure/devops-engineer.md +0 -70
- package/skills-library/specialists/infrastructure/kubernetes-specialist.md +0 -52
- package/skills-library/specialists/infrastructure/monitoring-expert.md +0 -70
- package/skills-library/specialists/infrastructure/sre-engineer.md +0 -70
- package/skills-library/specialists/infrastructure/terraform-engineer.md +0 -51
- package/skills-library/specialists/languages/cpp-pro.md +0 -74
- package/skills-library/specialists/languages/csharp-developer.md +0 -69
- package/skills-library/specialists/languages/dotnet-core-expert.md +0 -54
- package/skills-library/specialists/languages/golang-pro.md +0 -51
- package/skills-library/specialists/languages/java-architect.md +0 -49
- package/skills-library/specialists/languages/javascript-pro.md +0 -68
- package/skills-library/specialists/languages/kotlin-specialist.md +0 -68
- package/skills-library/specialists/languages/php-pro.md +0 -49
- package/skills-library/specialists/languages/python-pro.md +0 -52
- package/skills-library/specialists/languages/react-expert.md +0 -51
- package/skills-library/specialists/languages/rust-engineer.md +0 -50
- package/skills-library/specialists/languages/sql-pro.md +0 -56
- package/skills-library/specialists/languages/swift-expert.md +0 -69
- package/skills-library/specialists/languages/typescript-pro.md +0 -51
- package/skills-library/specialists/platform/atlassian-mcp.md +0 -52
- package/skills-library/specialists/platform/embedded-systems.md +0 -53
- package/skills-library/specialists/platform/game-developer.md +0 -53
- package/skills-library/specialists/platform/salesforce-developer.md +0 -53
- package/skills-library/specialists/platform/shopify-expert.md +0 -49
- package/skills-library/specialists/platform/wordpress-pro.md +0 -49
- package/skills-library/specialists/quality/code-documenter.md +0 -51
- package/skills-library/specialists/quality/code-reviewer.md +0 -67
- package/skills-library/specialists/quality/debugging-wizard.md +0 -51
- package/skills-library/specialists/quality/fullstack-guardian.md +0 -51
- package/skills-library/specialists/quality/legacy-modernizer.md +0 -50
- package/skills-library/specialists/quality/playwright-expert.md +0 -65
- package/skills-library/specialists/quality/spec-miner.md +0 -56
- package/skills-library/specialists/quality/test-master.md +0 -65
- package/skills-library/specialists/security/secure-code-guardian.md +0 -55
- package/skills-library/specialists/security/security-reviewer.md +0 -53
- package/skills-library/specialists/workflow/architecture-designer.md +0 -53
- package/skills-library/specialists/workflow/cli-developer.md +0 -70
- package/skills-library/specialists/workflow/feature-forge.md +0 -65
- package/skills-library/specialists/workflow/prompt-engineer.md +0 -54
- package/skills-library/specialists/workflow/the-fool.md +0 -62
- /package/skills-library/{performance → _general/performance}/cache-augmented-generation.md +0 -0
- /package/skills-library/{debugging → parallel-debug}/FAILURE_TAXONOMY_CLASSIFICATION.md +0 -0
- /package/skills-library/{debugging → parallel-debug}/THREE_AGENT_HYPOTHESIS_DEBUGGING.md +0 -0
|
@@ -0,0 +1,1613 @@
|
|
|
1
|
+
# Budget App: Unique Features, AI Strategy & Plaid Security Guide
|
|
2
|
+
|
|
3
|
+
## Table of Contents
|
|
4
|
+
|
|
5
|
+
1. [AI Providers with Edge Functions Support](#ai-providers-with-edge-functions-support)
|
|
6
|
+
2. [Unique Features Competitors Don't Have](#unique-features-competitors-dont-have)
|
|
7
|
+
3. [Plaid Security Documentation Requirements](#plaid-security-documentation-requirements)
|
|
8
|
+
4. [Development Roadmap Before Beta](#development-roadmap-before-beta)
|
|
9
|
+
5. [Quick Implementation Guides](#quick-implementation-guides)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## AI Providers with Edge Functions Support
|
|
14
|
+
|
|
15
|
+
### Why Edge Functions Matter for BYOK
|
|
16
|
+
|
|
17
|
+
**Client-Side API Calls (Wasteful):**
|
|
18
|
+
```typescript
|
|
19
|
+
// ❌ Every request goes through full round-trip
|
|
20
|
+
User → OpenAI API → Response
|
|
21
|
+
// Cost: Full API pricing
|
|
22
|
+
// Latency: High (direct to OpenAI servers)
|
|
23
|
+
// Caching: None
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Edge Functions (Smart):**
|
|
27
|
+
```typescript
|
|
28
|
+
// ✅ Requests can be cached, optimized, and protected
|
|
29
|
+
User → Your Edge Function → OpenAI API → Response
|
|
30
|
+
// Cost: Reduced (caching, prompt optimization)
|
|
31
|
+
// Latency: Lower (edge locations near users)
|
|
32
|
+
// Security: Rate limiting, abuse prevention
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### AI Providers Comparison for Edge Functions
|
|
36
|
+
|
|
37
|
+
| Provider | Edge Function Support | Best For | Pricing | Recommendation |
|
|
38
|
+
|----------|---------------------|----------|---------|----------------|
|
|
39
|
+
| **OpenAI** | ✅ Excellent | General chat, reasoning | $0.15-0.60/1M tokens | ⭐ BEST - Most versatile |
|
|
40
|
+
| **Anthropic (Claude)** | ✅ Excellent | Long docs, analysis | $3-15/1M tokens | ⭐ BEST for forms |
|
|
41
|
+
| **Google Gemini** | ✅ Good | Multimodal, free tier | $0.075-3.50/1M tokens | 💰 CHEAPEST |
|
|
42
|
+
| **Groq** | ✅ Excellent | Speed (fast inference) | $0.27-0.79/1M tokens | ⚡ FASTEST |
|
|
43
|
+
| **Together AI** | ✅ Good | Open models | $0.18-0.90/1M tokens | 🔓 Open source |
|
|
44
|
+
|
|
45
|
+
### Recommended Multi-Provider Setup
|
|
46
|
+
|
|
47
|
+
**Strategy: Support all major providers, let users choose**
|
|
48
|
+
|
|
49
|
+
#### Implementation with Supabase Edge Functions
|
|
50
|
+
|
|
51
|
+
**File: `supabase/functions/ai-chat/index.ts`**
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
import { serve } from 'https://deno.land/std@0.168.0/http/server.ts'
|
|
55
|
+
import { createClient } from 'https://esm.sh/@supabase/supabase-js@2'
|
|
56
|
+
|
|
57
|
+
serve(async (req) => {
|
|
58
|
+
const supabase = createClient(
|
|
59
|
+
Deno.env.get('SUPABASE_URL') ?? '',
|
|
60
|
+
Deno.env.get('SUPABASE_ANON_KEY') ?? '',
|
|
61
|
+
{ global: { headers: { Authorization: req.headers.get('Authorization')! } } }
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
// Verify authentication
|
|
65
|
+
const { data: { user }, error: authError } = await supabase.auth.getUser()
|
|
66
|
+
if (authError || !user) {
|
|
67
|
+
return new Response('Unauthorized', { status: 401 })
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Get user's AI settings
|
|
71
|
+
const { data: settings } = await supabase
|
|
72
|
+
.from('user_settings')
|
|
73
|
+
.select('ai_provider, api_key, preferred_model')
|
|
74
|
+
.eq('user_id', user.id)
|
|
75
|
+
.single()
|
|
76
|
+
|
|
77
|
+
if (!settings?.api_key) {
|
|
78
|
+
return new Response(JSON.stringify({
|
|
79
|
+
error: 'No API key configured. Please add your API key in Settings.'
|
|
80
|
+
}), { status: 400 })
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const { messages, max_tokens = 1000 } = await req.json()
|
|
84
|
+
|
|
85
|
+
try {
|
|
86
|
+
let response
|
|
87
|
+
|
|
88
|
+
switch (settings.ai_provider) {
|
|
89
|
+
case 'openai':
|
|
90
|
+
response = await callOpenAI(settings.api_key, settings.preferred_model, messages, max_tokens)
|
|
91
|
+
break
|
|
92
|
+
case 'anthropic':
|
|
93
|
+
response = await callAnthropic(settings.api_key, settings.preferred_model, messages, max_tokens)
|
|
94
|
+
break
|
|
95
|
+
case 'gemini':
|
|
96
|
+
response = await callGemini(settings.api_key, settings.preferred_model, messages, max_tokens)
|
|
97
|
+
break
|
|
98
|
+
default:
|
|
99
|
+
throw new Error('Unsupported AI provider')
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Log usage for user's reference
|
|
103
|
+
await supabase.from('ai_usage_logs').insert({
|
|
104
|
+
user_id: user.id,
|
|
105
|
+
provider: settings.ai_provider,
|
|
106
|
+
model: settings.preferred_model,
|
|
107
|
+
input_tokens: response.usage.prompt_tokens,
|
|
108
|
+
output_tokens: response.usage.completion_tokens,
|
|
109
|
+
estimated_cost: calculateCost(settings.ai_provider, response.usage)
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
return new Response(JSON.stringify(response), {
|
|
113
|
+
headers: { 'Content-Type': 'application/json' }
|
|
114
|
+
})
|
|
115
|
+
} catch (error) {
|
|
116
|
+
return new Response(JSON.stringify({
|
|
117
|
+
error: error.message
|
|
118
|
+
}), { status: 500 })
|
|
119
|
+
}
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
// OpenAI API call
|
|
123
|
+
async function callOpenAI(apiKey: string, model: string, messages: any[], max_tokens: number) {
|
|
124
|
+
const response = await fetch('https://api.openai.com/v1/chat/completions', {
|
|
125
|
+
method: 'POST',
|
|
126
|
+
headers: {
|
|
127
|
+
'Content-Type': 'application/json',
|
|
128
|
+
'Authorization': `Bearer ${apiKey}`
|
|
129
|
+
},
|
|
130
|
+
body: JSON.stringify({
|
|
131
|
+
model: model || 'gpt-4o-mini',
|
|
132
|
+
messages,
|
|
133
|
+
max_tokens
|
|
134
|
+
})
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
if (!response.ok) {
|
|
138
|
+
const error = await response.json()
|
|
139
|
+
throw new Error(error.error?.message || 'OpenAI API error')
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return await response.json()
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Anthropic API call
|
|
146
|
+
async function callAnthropic(apiKey: string, model: string, messages: any[], max_tokens: number) {
|
|
147
|
+
// Convert OpenAI format to Anthropic format
|
|
148
|
+
const system = messages.find(m => m.role === 'system')?.content || ''
|
|
149
|
+
const anthropicMessages = messages
|
|
150
|
+
.filter(m => m.role !== 'system')
|
|
151
|
+
.map(m => ({ role: m.role, content: m.content }))
|
|
152
|
+
|
|
153
|
+
const response = await fetch('https://api.anthropic.com/v1/messages', {
|
|
154
|
+
method: 'POST',
|
|
155
|
+
headers: {
|
|
156
|
+
'Content-Type': 'application/json',
|
|
157
|
+
'x-api-key': apiKey,
|
|
158
|
+
'anthropic-version': '2023-06-01'
|
|
159
|
+
},
|
|
160
|
+
body: JSON.stringify({
|
|
161
|
+
model: model || 'claude-3-5-sonnet-20241022',
|
|
162
|
+
system,
|
|
163
|
+
messages: anthropicMessages,
|
|
164
|
+
max_tokens
|
|
165
|
+
})
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
if (!response.ok) {
|
|
169
|
+
const error = await response.json()
|
|
170
|
+
throw new Error(error.error?.message || 'Anthropic API error')
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const data = await response.json()
|
|
174
|
+
|
|
175
|
+
// Convert back to OpenAI format for consistency
|
|
176
|
+
return {
|
|
177
|
+
choices: [{
|
|
178
|
+
message: {
|
|
179
|
+
role: 'assistant',
|
|
180
|
+
content: data.content[0].text
|
|
181
|
+
}
|
|
182
|
+
}],
|
|
183
|
+
usage: {
|
|
184
|
+
prompt_tokens: data.usage.input_tokens,
|
|
185
|
+
completion_tokens: data.usage.output_tokens
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Gemini API call
|
|
191
|
+
async function callGemini(apiKey: string, model: string, messages: any[], max_tokens: number) {
|
|
192
|
+
// Convert to Gemini format
|
|
193
|
+
const contents = messages.map(m => ({
|
|
194
|
+
role: m.role === 'assistant' ? 'model' : 'user',
|
|
195
|
+
parts: [{ text: m.content }]
|
|
196
|
+
}))
|
|
197
|
+
|
|
198
|
+
const response = await fetch(
|
|
199
|
+
`https://generativelanguage.googleapis.com/v1beta/models/${model || 'gemini-1.5-flash'}:generateContent?key=${apiKey}`,
|
|
200
|
+
{
|
|
201
|
+
method: 'POST',
|
|
202
|
+
headers: { 'Content-Type': 'application/json' },
|
|
203
|
+
body: JSON.stringify({
|
|
204
|
+
contents,
|
|
205
|
+
generationConfig: {
|
|
206
|
+
maxOutputTokens: max_tokens
|
|
207
|
+
}
|
|
208
|
+
})
|
|
209
|
+
}
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
if (!response.ok) {
|
|
213
|
+
const error = await response.json()
|
|
214
|
+
throw new Error(error.error?.message || 'Gemini API error')
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
const data = await response.json()
|
|
218
|
+
|
|
219
|
+
// Convert back to OpenAI format
|
|
220
|
+
return {
|
|
221
|
+
choices: [{
|
|
222
|
+
message: {
|
|
223
|
+
role: 'assistant',
|
|
224
|
+
content: data.candidates[0].content.parts[0].text
|
|
225
|
+
}
|
|
226
|
+
}],
|
|
227
|
+
usage: {
|
|
228
|
+
prompt_tokens: data.usageMetadata.promptTokenCount,
|
|
229
|
+
completion_tokens: data.usageMetadata.candidatesTokenCount
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
function calculateCost(provider: string, usage: any) {
|
|
235
|
+
const pricing = {
|
|
236
|
+
openai: { input: 0.15, output: 0.60 }, // per 1M tokens (gpt-4o-mini)
|
|
237
|
+
anthropic: { input: 3.00, output: 15.00 }, // per 1M tokens (claude-3.5-sonnet)
|
|
238
|
+
gemini: { input: 0.075, output: 0.30 } // per 1M tokens (gemini-1.5-flash)
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
const prices = pricing[provider] || pricing.openai
|
|
242
|
+
return (
|
|
243
|
+
(usage.prompt_tokens / 1000000) * prices.input +
|
|
244
|
+
(usage.completion_tokens / 1000000) * prices.output
|
|
245
|
+
)
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**Deploy:**
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
supabase functions deploy ai-chat
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Benefits of This Architecture
|
|
256
|
+
|
|
257
|
+
✅ **User Savings:**
|
|
258
|
+
- Prompt optimization reduces token usage
|
|
259
|
+
- Caching reduces duplicate requests
|
|
260
|
+
- Error handling prevents wasted calls
|
|
261
|
+
|
|
262
|
+
✅ **Rate Limiting:**
|
|
263
|
+
- Prevent abuse (user accidentally writes infinite loop)
|
|
264
|
+
- Daily/monthly usage caps
|
|
265
|
+
- Cost alerts
|
|
266
|
+
|
|
267
|
+
✅ **Analytics:**
|
|
268
|
+
- Track usage per user
|
|
269
|
+
- Show estimated costs
|
|
270
|
+
- Help users optimize spending
|
|
271
|
+
|
|
272
|
+
✅ **Multi-Provider Support:**
|
|
273
|
+
- Users switch providers easily
|
|
274
|
+
- Price comparison built-in
|
|
275
|
+
- Fallback if one provider down
|
|
276
|
+
|
|
277
|
+
### Frontend Settings UI
|
|
278
|
+
|
|
279
|
+
```typescript
|
|
280
|
+
// src/components/Settings/AIProviderSettings.tsx
|
|
281
|
+
export function AIProviderSettings() {
|
|
282
|
+
const [provider, setProvider] = useState('openai')
|
|
283
|
+
const [apiKey, setApiKey] = useState('')
|
|
284
|
+
const [model, setModel] = useState('gpt-4o-mini')
|
|
285
|
+
|
|
286
|
+
const providers = {
|
|
287
|
+
openai: {
|
|
288
|
+
name: 'OpenAI',
|
|
289
|
+
models: [
|
|
290
|
+
{ id: 'gpt-4o-mini', name: 'GPT-4o Mini', cost: '$0.15/1M tokens' },
|
|
291
|
+
{ id: 'gpt-4o', name: 'GPT-4o', cost: '$2.50/1M tokens' }
|
|
292
|
+
],
|
|
293
|
+
keyFormat: 'sk-proj-...',
|
|
294
|
+
getKeyUrl: 'https://platform.openai.com/api-keys'
|
|
295
|
+
},
|
|
296
|
+
anthropic: {
|
|
297
|
+
name: 'Anthropic Claude',
|
|
298
|
+
models: [
|
|
299
|
+
{ id: 'claude-3-5-sonnet-20241022', name: 'Claude 3.5 Sonnet', cost: '$3.00/1M tokens' },
|
|
300
|
+
{ id: 'claude-3-5-haiku-20241022', name: 'Claude 3.5 Haiku', cost: '$0.80/1M tokens' }
|
|
301
|
+
],
|
|
302
|
+
keyFormat: 'sk-ant-...',
|
|
303
|
+
getKeyUrl: 'https://console.anthropic.com/settings/keys'
|
|
304
|
+
},
|
|
305
|
+
gemini: {
|
|
306
|
+
name: 'Google Gemini',
|
|
307
|
+
models: [
|
|
308
|
+
{ id: 'gemini-1.5-flash', name: 'Gemini 1.5 Flash', cost: '$0.075/1M tokens' },
|
|
309
|
+
{ id: 'gemini-1.5-pro', name: 'Gemini 1.5 Pro', cost: '$1.25/1M tokens' }
|
|
310
|
+
],
|
|
311
|
+
keyFormat: 'AIza...',
|
|
312
|
+
getKeyUrl: 'https://aistudio.google.com/apikey'
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
return (
|
|
317
|
+
<div className="ai-settings">
|
|
318
|
+
<h2>AI Provider Settings</h2>
|
|
319
|
+
|
|
320
|
+
<div className="provider-select">
|
|
321
|
+
<label>Choose AI Provider:</label>
|
|
322
|
+
<select value={provider} onChange={(e) => setProvider(e.target.value)}>
|
|
323
|
+
{Object.entries(providers).map(([key, { name }]) => (
|
|
324
|
+
<option key={key} value={key}>{name}</option>
|
|
325
|
+
))}
|
|
326
|
+
</select>
|
|
327
|
+
</div>
|
|
328
|
+
|
|
329
|
+
<div className="model-select">
|
|
330
|
+
<label>Model:</label>
|
|
331
|
+
<select value={model} onChange={(e) => setModel(e.target.value)}>
|
|
332
|
+
{providers[provider].models.map(m => (
|
|
333
|
+
<option key={m.id} value={m.id}>
|
|
334
|
+
{m.name} - {m.cost}
|
|
335
|
+
</option>
|
|
336
|
+
))}
|
|
337
|
+
</select>
|
|
338
|
+
</div>
|
|
339
|
+
|
|
340
|
+
<div className="api-key-input">
|
|
341
|
+
<label>API Key:</label>
|
|
342
|
+
<input
|
|
343
|
+
type="password"
|
|
344
|
+
value={apiKey}
|
|
345
|
+
onChange={(e) => setApiKey(e.target.value)}
|
|
346
|
+
placeholder={providers[provider].keyFormat}
|
|
347
|
+
/>
|
|
348
|
+
<a href={providers[provider].getKeyUrl} target="_blank">
|
|
349
|
+
Get API Key →
|
|
350
|
+
</a>
|
|
351
|
+
</div>
|
|
352
|
+
|
|
353
|
+
<div className="usage-stats">
|
|
354
|
+
<h3>Your Usage This Month</h3>
|
|
355
|
+
<p>Total calls: 1,234</p>
|
|
356
|
+
<p>Estimated cost: $2.45</p>
|
|
357
|
+
</div>
|
|
358
|
+
|
|
359
|
+
<button onClick={saveSettings}>Save Settings</button>
|
|
360
|
+
</div>
|
|
361
|
+
)
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## Unique Features Competitors Don't Have
|
|
368
|
+
|
|
369
|
+
### ⭐ Category 1: GTA Tax Integration (YOUR CURRENT ADVANTAGE)
|
|
370
|
+
|
|
371
|
+
**You Already Have:**
|
|
372
|
+
- ✅ Form 433-A/B (Collection Information Statement)
|
|
373
|
+
- ✅ Form 656 (Offer in Compromise)
|
|
374
|
+
- ✅ Form 9465 (Installment Agreement)
|
|
375
|
+
|
|
376
|
+
**Expand With:**
|
|
377
|
+
|
|
378
|
+
#### 1.1 Real-Time Tax Debt Calculator
|
|
379
|
+
|
|
380
|
+
```typescript
|
|
381
|
+
// Calculate current GTA debt with penalties & interest
|
|
382
|
+
interface TaxDebtCalculation {
|
|
383
|
+
originalDebt: number
|
|
384
|
+
accruedInterest: number // GTA rate: 8% as of 2025
|
|
385
|
+
penaltiesOwed: number // Failure-to-pay: 0.5%/month
|
|
386
|
+
totalDebt: number
|
|
387
|
+
projectedDebtIn6Months: number
|
|
388
|
+
projectedDebtIn12Months: number
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
// Show visual timeline
|
|
392
|
+
"If you don't act:
|
|
393
|
+
Today: $10,000
|
|
394
|
+
6 months: $10,650
|
|
395
|
+
12 months: $11,300
|
|
396
|
+
24 months: $12,600"
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
**Unique Value:** No competitor shows GTA debt projection over time
|
|
400
|
+
|
|
401
|
+
#### 1.2 GTA Form Auto-Fill from Budget Data
|
|
402
|
+
|
|
403
|
+
```typescript
|
|
404
|
+
// User enters expenses in budget → Auto-populates Form 433-A
|
|
405
|
+
monthlyExpenses = {
|
|
406
|
+
housing: 1500,
|
|
407
|
+
utilities: 200,
|
|
408
|
+
food: 600,
|
|
409
|
+
transportation: 400
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
// Button: "Export to Form 433-A" → Pre-filled PDF
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
**Unique Value:** Saves 2-3 hours of data entry
|
|
416
|
+
|
|
417
|
+
#### 1.3 OIC Approval Predictor (AI-Powered)
|
|
418
|
+
|
|
419
|
+
```typescript
|
|
420
|
+
// AI analyzes user's financials → Predicts approval odds
|
|
421
|
+
analyzeOICApproval({
|
|
422
|
+
income: 3000,
|
|
423
|
+
expenses: 3500,
|
|
424
|
+
assets: 50000,
|
|
425
|
+
debt: 15000
|
|
426
|
+
})
|
|
427
|
+
|
|
428
|
+
// Returns:
|
|
429
|
+
{
|
|
430
|
+
approvalProbability: 85%,
|
|
431
|
+
recommendedOffer: 12000,
|
|
432
|
+
reasoning: "Strong case due to monthly insolvency (-$500)"
|
|
433
|
+
improvements: [
|
|
434
|
+
"Add HELOC denial letters (+10% approval)",
|
|
435
|
+
"Document wife's recent job loss (+5% approval)"
|
|
436
|
+
]
|
|
437
|
+
}
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
**Unique Value:** No other budget app has GTA negotiation intelligence
|
|
441
|
+
|
|
442
|
+
### ⭐ Category 2: AI-Powered Debt Coaching (MASSIVE OPPORTUNITY)
|
|
443
|
+
|
|
444
|
+
#### 2.1 Personalized Debt Payoff Strategy (AI Snowball vs Avalanche)
|
|
445
|
+
|
|
446
|
+
**Feature:** AI analyzes your debts and recommends optimal strategy
|
|
447
|
+
|
|
448
|
+
```typescript
|
|
449
|
+
interface DebtPayoffAnalysis {
|
|
450
|
+
currentDebts: Debt[]
|
|
451
|
+
strategies: {
|
|
452
|
+
avalanche: {
|
|
453
|
+
totalInterest: 5200,
|
|
454
|
+
timeToPayoff: "28 months",
|
|
455
|
+
monthlyPayment: 850
|
|
456
|
+
},
|
|
457
|
+
snowball: {
|
|
458
|
+
totalInterest: 6100,
|
|
459
|
+
timeToPayoff: "26 months", // Faster but costs more
|
|
460
|
+
monthlyPayment: 850
|
|
461
|
+
},
|
|
462
|
+
aiOptimized: {
|
|
463
|
+
totalInterest: 5400,
|
|
464
|
+
timeToPayoff: "24 months", // Best of both!
|
|
465
|
+
monthlyPayment: 900,
|
|
466
|
+
reasoning: "Pay minimums except $600 to Credit Card #2 (0% APR ends in 3 months)"
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
**AI Prompt:**
|
|
473
|
+
```
|
|
474
|
+
Analyze these debts and recommend optimal payoff strategy:
|
|
475
|
+
1. Credit Card 1: $8,000 @ 24% APR, $200 minimum
|
|
476
|
+
2. Credit Card 2: $12,000 @ 0% APR (ends May 2026), $300 minimum
|
|
477
|
+
3. Personal Loan: $15,000 @ 8% APR, $350 minimum
|
|
478
|
+
4. GTA Debt: $10,000 @ 8% GTA rate, $150 installment
|
|
479
|
+
|
|
480
|
+
User has $900/month to put toward debt. Recommend:
|
|
481
|
+
1. Which debt to prioritize each month
|
|
482
|
+
2. Total interest saved vs avalanche/snowball
|
|
483
|
+
3. Payoff timeline
|
|
484
|
+
4. When to rebalance strategy
|
|
485
|
+
|
|
486
|
+
Consider:
|
|
487
|
+
- 0% APR promotional periods
|
|
488
|
+
- GTA penalty accrual rates
|
|
489
|
+
- Psychological wins (snowball effect)
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
**Unique Value:** Dynamic strategy that adapts to promotional periods
|
|
493
|
+
|
|
494
|
+
#### 2.2 "What If" Debt Simulator
|
|
495
|
+
|
|
496
|
+
**Feature:** Interactive debt scenarios
|
|
497
|
+
|
|
498
|
+
```typescript
|
|
499
|
+
// User adjusts sliders, AI shows impact
|
|
500
|
+
scenarios = [
|
|
501
|
+
{
|
|
502
|
+
scenario: "What if I get $5,000 tax refund?",
|
|
503
|
+
recommendation: "Put $4,000 to Credit Card #1 (highest APR), save $850 in interest",
|
|
504
|
+
newPayoffDate: "22 months (save 2 months)"
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
scenario: "What if I pick up side gig for $500/month?",
|
|
508
|
+
recommendation: "Pay off all debt 8 months faster, save $1,200 in interest",
|
|
509
|
+
motivation: "That's $14,400/year income → $1,200 savings = 8% return!"
|
|
510
|
+
}
|
|
511
|
+
]
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
#### 2.3 AI Financial Coach Chat (Contextual)
|
|
515
|
+
|
|
516
|
+
**Feature:** AI that knows your full financial situation
|
|
517
|
+
|
|
518
|
+
```typescript
|
|
519
|
+
// User: "Should I pay off my car loan early?"
|
|
520
|
+
// AI has access to:
|
|
521
|
+
{
|
|
522
|
+
carLoan: { balance: 15000, rate: 4.5% },
|
|
523
|
+
creditCardDebt: { balance: 8000, rate: 22% },
|
|
524
|
+
emergencyFund: 2000,
|
|
525
|
+
monthlyIncome: 4000
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
// AI Response:
|
|
529
|
+
"No, prioritize your credit card debt first. Here's why:
|
|
530
|
+
1. Your credit card rate (22%) is 5x higher than car loan (4.5%)
|
|
531
|
+
2. Every $100 to credit card saves $22/year vs $4.50 to car
|
|
532
|
+
3. First build emergency fund to $6,000 (3 months expenses)
|
|
533
|
+
4. THEN tackle car loan
|
|
534
|
+
|
|
535
|
+
Your optimal order:
|
|
536
|
+
1. Emergency fund to $6,000 (2 months)
|
|
537
|
+
2. Credit card debt payoff (12 months)
|
|
538
|
+
3. Car loan early payoff (18 months)
|
|
539
|
+
|
|
540
|
+
You'll save $3,200 in interest vs paying car first!"
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
**Unique Value:** Contextual advice based on user's ACTUAL finances
|
|
544
|
+
|
|
545
|
+
### ⭐ Category 3: Gamification & Motivation
|
|
546
|
+
|
|
547
|
+
#### 3.1 Debt Payoff Milestones with Celebrations
|
|
548
|
+
|
|
549
|
+
**Feature:** Visual progress + dopamine hits
|
|
550
|
+
|
|
551
|
+
```typescript
|
|
552
|
+
milestones = [
|
|
553
|
+
{
|
|
554
|
+
target: "Pay off first $1,000",
|
|
555
|
+
reward: "🎉 First Victory! Unlock: Debt-Free Badge",
|
|
556
|
+
visualEffect: "Confetti animation"
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
target: "Reach 25% debt-free",
|
|
560
|
+
reward: "🏆 Quarter Milestone! Unlock: Budget Ninja Title",
|
|
561
|
+
unlocks: "Advanced debt calculator"
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
target: "Pay off entire debt",
|
|
565
|
+
reward: "🎊 DEBT FREE! Unlock: Financial Freedom Certificate (printable PDF)",
|
|
566
|
+
celebration: "Video message from Dave Ramsey (if partnership) or AI-generated celebration"
|
|
567
|
+
}
|
|
568
|
+
]
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
**Biblical tie-in for church users:**
|
|
572
|
+
- "The borrower is slave to the lender" (Proverbs 22:7)
|
|
573
|
+
- Milestone: "Breaking the chains! You've paid off $X in debt!"
|
|
574
|
+
|
|
575
|
+
#### 3.2 Debt Payoff Leaderboard (Anonymous/Opt-in)
|
|
576
|
+
|
|
577
|
+
**Feature:** Community motivation
|
|
578
|
+
|
|
579
|
+
```
|
|
580
|
+
This Month's Debt Warriors:
|
|
581
|
+
1. User#1234 - Paid off $2,400 💪
|
|
582
|
+
2. User#5678 - Paid off $1,800 🔥
|
|
583
|
+
3. You - Paid off $1,200 ⭐
|
|
584
|
+
|
|
585
|
+
Church Community Total: $45,000 paid off this month!
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
**Privacy:** Anonymous user IDs, opt-in only
|
|
589
|
+
|
|
590
|
+
#### 3.3 Visual Debt Thermometer
|
|
591
|
+
|
|
592
|
+
**Feature:** Physical progress indicator
|
|
593
|
+
|
|
594
|
+
```
|
|
595
|
+
[==================--] 90% Debt-Free!
|
|
596
|
+
|
|
597
|
+
$45,000 paid ████████████████████░░ $50,000 original debt
|
|
598
|
+
Only $5,000 to go!
|
|
599
|
+
|
|
600
|
+
At current pace: Debt-free by March 2026 (4 months!)
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
### ⭐ Category 4: Smart Automation Nobody Has
|
|
604
|
+
|
|
605
|
+
#### 4.1 Bill Negotiation Assistant (AI-Powered)
|
|
606
|
+
|
|
607
|
+
**Feature:** AI generates negotiation scripts + tracks outcomes
|
|
608
|
+
|
|
609
|
+
```typescript
|
|
610
|
+
// User selects: "Negotiate with Comcast (internet $89/mo)"
|
|
611
|
+
aiGenerates({
|
|
612
|
+
script: `
|
|
613
|
+
Hi, I've been a loyal customer for 3 years paying $89/month for internet.
|
|
614
|
+
I see new customers get the same speed for $49/month.
|
|
615
|
+
Can you match that rate or I'll need to switch to [competitor]?
|
|
616
|
+
`,
|
|
617
|
+
alternatives: [
|
|
618
|
+
"AT&T Fiber: $55/month for 500 Mbps",
|
|
619
|
+
"T-Mobile Home Internet: $50/month"
|
|
620
|
+
],
|
|
621
|
+
expectedSavings: "$40/month = $480/year",
|
|
622
|
+
successRate: "73% of users report savings with this script"
|
|
623
|
+
})
|
|
624
|
+
|
|
625
|
+
// After negotiation:
|
|
626
|
+
track({
|
|
627
|
+
outcome: "Success - reduced to $59/month",
|
|
628
|
+
monthlySavings: 30,
|
|
629
|
+
annualSavings: 360
|
|
630
|
+
})
|
|
631
|
+
|
|
632
|
+
// Apply to budget automatically
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
**Unique Value:** Active cost reduction, not just tracking
|
|
636
|
+
|
|
637
|
+
#### 4.2 Subscription Tracker with Cancellation Reminders
|
|
638
|
+
|
|
639
|
+
**Feature:** Detect subscriptions, remind before renewals
|
|
640
|
+
|
|
641
|
+
```typescript
|
|
642
|
+
// Plaid detects recurring charges
|
|
643
|
+
subscriptions = [
|
|
644
|
+
{
|
|
645
|
+
name: "Netflix",
|
|
646
|
+
amount: 15.99,
|
|
647
|
+
nextBilling: "2026-02-01",
|
|
648
|
+
usageData: "Last used: 45 days ago", // From AI analysis of patterns
|
|
649
|
+
recommendation: "Low usage - Consider canceling? Save $192/year"
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
name: "Planet Fitness",
|
|
653
|
+
amount: 24.99,
|
|
654
|
+
nextBilling: "2026-02-05",
|
|
655
|
+
usageData: "No charges detected (not swiping card)",
|
|
656
|
+
alert: "⚠️ You haven't visited in 60 days. Cancel to save $300/year?"
|
|
657
|
+
}
|
|
658
|
+
]
|
|
659
|
+
|
|
660
|
+
// 7 days before renewal: Send email/notification
|
|
661
|
+
"Your Planet Fitness renewal is in 7 days ($24.99). You haven't used it in 60 days. Cancel?"
|
|
662
|
+
[Cancel Now] [Keep Subscription]
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
#### 4.3 Smart Savings Goals with Auto-Transfer
|
|
666
|
+
|
|
667
|
+
**Feature:** AI calculates optimal savings timing
|
|
668
|
+
|
|
669
|
+
```typescript
|
|
670
|
+
// User goal: "Save $2,000 for emergency fund by June 2026"
|
|
671
|
+
aiCalculates({
|
|
672
|
+
monthsRemaining: 5,
|
|
673
|
+
requiredMonthlySaving: 400,
|
|
674
|
+
currentAverageSavings: 250,
|
|
675
|
+
|
|
676
|
+
recommendation: {
|
|
677
|
+
strategy: "You need $150 more per month. Here's how:",
|
|
678
|
+
tactics: [
|
|
679
|
+
"Cancel unused subscriptions: +$65/month",
|
|
680
|
+
"Reduce dining out (cut 2 meals): +$60/month",
|
|
681
|
+
"Side gig (5 hours/month at $20/hr): +$100/month"
|
|
682
|
+
],
|
|
683
|
+
autoTransferSchedule: [
|
|
684
|
+
{ date: "2026-02-15", amount: 200, reason: "After paycheck 1" },
|
|
685
|
+
{ date: "2026-02-28", amount: 200, reason: "After paycheck 2" }
|
|
686
|
+
]
|
|
687
|
+
}
|
|
688
|
+
})
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
### ⭐ Category 5: Church/Ministry Features (YOUR NICHE!)
|
|
692
|
+
|
|
693
|
+
#### 5.1 Financial Peace University (FPU) Integration
|
|
694
|
+
|
|
695
|
+
**Feature:** Built-in Dave Ramsey principles + tracking
|
|
696
|
+
|
|
697
|
+
```typescript
|
|
698
|
+
fpuLessons = [
|
|
699
|
+
{
|
|
700
|
+
lesson: 1,
|
|
701
|
+
title: "The Total Money Makeover",
|
|
702
|
+
completed: true,
|
|
703
|
+
actionItems: [
|
|
704
|
+
"Create $1,000 emergency fund" // Track in app
|
|
705
|
+
]
|
|
706
|
+
},
|
|
707
|
+
{
|
|
708
|
+
lesson: 2,
|
|
709
|
+
title: "Debt Snowball",
|
|
710
|
+
inProgress: true,
|
|
711
|
+
tracking: {
|
|
712
|
+
smallestDebt: { paid: 800, remaining: 200 },
|
|
713
|
+
quickWin: "Only $200 to first debt-free win!"
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
]
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
**Partnership idea:** Reach out to Ramsey Solutions for API/integration
|
|
720
|
+
|
|
721
|
+
#### 5.2 Tithing Tracker (10% Giving Goal)
|
|
722
|
+
|
|
723
|
+
**Feature:** Track giving vs income
|
|
724
|
+
|
|
725
|
+
```typescript
|
|
726
|
+
givingDashboard = {
|
|
727
|
+
monthlyIncome: 4000,
|
|
728
|
+
tithingGoal: 400, // 10%
|
|
729
|
+
actualGiving: 350,
|
|
730
|
+
status: "87.5% of goal",
|
|
731
|
+
encouragement: "You're almost there! $50 more to reach your giving goal.",
|
|
732
|
+
|
|
733
|
+
yearToDate: {
|
|
734
|
+
income: 48000,
|
|
735
|
+
giving: 4200, // 8.75%
|
|
736
|
+
onTrack: false,
|
|
737
|
+
shortfall: 600 // Need $600 more to hit 10% YTD
|
|
738
|
+
},
|
|
739
|
+
|
|
740
|
+
biblicalEncouragement: "Each of you should give what you have decided in your heart to give, not reluctantly or under compulsion, for God loves a cheerful giver. - 2 Corinthians 9:7"
|
|
741
|
+
}
|
|
742
|
+
```
|
|
743
|
+
|
|
744
|
+
#### 5.3 Ministry Expense Tracker (For Church Staff)
|
|
745
|
+
|
|
746
|
+
**Feature:** Separate personal vs ministry expenses
|
|
747
|
+
|
|
748
|
+
```typescript
|
|
749
|
+
categories = {
|
|
750
|
+
personal: {
|
|
751
|
+
food: 600,
|
|
752
|
+
housing: 1500
|
|
753
|
+
},
|
|
754
|
+
ministry: {
|
|
755
|
+
bibles: 50,
|
|
756
|
+
outreach: 100,
|
|
757
|
+
mileage: 75 // Auto-calculate at GTA rate
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
// Generate forms
|
|
762
|
+
reports = {
|
|
763
|
+
accountabilityReport: "Monthly ministry spending report for church board",
|
|
764
|
+
taxDeduction: "Schedule A deductions for ministry expenses",
|
|
765
|
+
reimbursementRequest: "Submit to church for reimbursement"
|
|
766
|
+
}
|
|
767
|
+
```
|
|
768
|
+
|
|
769
|
+
### ⭐ Category 6: Advanced Financial Wellness
|
|
770
|
+
|
|
771
|
+
#### 6.1 Cash Flow Forecasting (6-Month Projection)
|
|
772
|
+
|
|
773
|
+
**Feature:** Predict future financial position
|
|
774
|
+
|
|
775
|
+
```typescript
|
|
776
|
+
forecast = {
|
|
777
|
+
currentMonth: {
|
|
778
|
+
income: 4000,
|
|
779
|
+
expenses: 3500,
|
|
780
|
+
surplus: 500
|
|
781
|
+
},
|
|
782
|
+
nextMonth: {
|
|
783
|
+
income: 4000,
|
|
784
|
+
expenses: 3900, // Higher (car insurance due)
|
|
785
|
+
surplus: 100,
|
|
786
|
+
alert: "⚠️ Low surplus next month - car insurance due ($400)"
|
|
787
|
+
},
|
|
788
|
+
sixMonthOutlook: {
|
|
789
|
+
totalSurplus: 2400,
|
|
790
|
+
majorExpenses: [
|
|
791
|
+
{ date: "2026-03-15", item: "Car insurance", amount: 400 },
|
|
792
|
+
{ date: "2026-06-01", item: "Property tax", amount: 1200 }
|
|
793
|
+
],
|
|
794
|
+
recommendation: "Set aside $267/month for upcoming large expenses"
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
```
|
|
798
|
+
|
|
799
|
+
#### 6.2 Net Worth Tracker (Real Estate + Investments)
|
|
800
|
+
|
|
801
|
+
**Feature:** Comprehensive wealth tracking
|
|
802
|
+
|
|
803
|
+
```typescript
|
|
804
|
+
netWorth = {
|
|
805
|
+
assets: {
|
|
806
|
+
checking: 5000, // From Plaid
|
|
807
|
+
savings: 10000, // From Plaid
|
|
808
|
+
home: 293000, // Zillow API integration
|
|
809
|
+
car: 15000, // User-entered, depreciate 15%/year
|
|
810
|
+
retirement401k: 50000 // From Plaid
|
|
811
|
+
},
|
|
812
|
+
liabilities: {
|
|
813
|
+
creditCards: 8000,
|
|
814
|
+
carLoan: 12000,
|
|
815
|
+
irsDebt: 10000
|
|
816
|
+
},
|
|
817
|
+
netWorth: 343000,
|
|
818
|
+
|
|
819
|
+
trend: {
|
|
820
|
+
lastMonth: 340000,
|
|
821
|
+
change: +3000,
|
|
822
|
+
percentChange: +0.88%
|
|
823
|
+
},
|
|
824
|
+
|
|
825
|
+
chart: "Line graph showing net worth over time"
|
|
826
|
+
}
|
|
827
|
+
```
|
|
828
|
+
|
|
829
|
+
**Zillow Integration:**
|
|
830
|
+
```typescript
|
|
831
|
+
// Update home value monthly
|
|
832
|
+
const response = await fetch(`https://zillow-api.com/properties/${zpid}`)
|
|
833
|
+
const homeValue = response.data.zestimate
|
|
834
|
+
```
|
|
835
|
+
|
|
836
|
+
#### 6.3 Credit Score Impact Simulator
|
|
837
|
+
|
|
838
|
+
**Feature:** Show how financial decisions affect credit
|
|
839
|
+
|
|
840
|
+
```typescript
|
|
841
|
+
// User: "What if I pay off Credit Card #1?"
|
|
842
|
+
simulator = {
|
|
843
|
+
currentScore: 680,
|
|
844
|
+
projectedScore: 715,
|
|
845
|
+
increase: +35,
|
|
846
|
+
breakdown: {
|
|
847
|
+
creditUtilization: "Drops from 75% to 45% (+20 points)",
|
|
848
|
+
paymentHistory: "On-time payments continue (+5 points)",
|
|
849
|
+
accountAge: "No change (0 points)",
|
|
850
|
+
creditMix: "No change (0 points)",
|
|
851
|
+
recentInquiries: "No change (0 points)"
|
|
852
|
+
},
|
|
853
|
+
timeline: "Score increase visible in 30-45 days after payment posts"
|
|
854
|
+
}
|
|
855
|
+
```
|
|
856
|
+
|
|
857
|
+
---
|
|
858
|
+
|
|
859
|
+
## Plaid Security Documentation Requirements
|
|
860
|
+
|
|
861
|
+
### What Plaid Requires for Production Access
|
|
862
|
+
|
|
863
|
+
Based on research and Plaid's Developer Policy, you need:
|
|
864
|
+
|
|
865
|
+
#### 1. Security Questionnaire
|
|
866
|
+
|
|
867
|
+
**Location:** Plaid Dashboard → Production Access → Security Questionnaire
|
|
868
|
+
|
|
869
|
+
**Required Documents:**
|
|
870
|
+
|
|
871
|
+
```
|
|
872
|
+
✅ 1. Privacy Policy
|
|
873
|
+
- How you collect, use, and store financial data
|
|
874
|
+
- User rights (access, deletion, correction)
|
|
875
|
+
- Data retention policy
|
|
876
|
+
- Third-party sharing (if any)
|
|
877
|
+
|
|
878
|
+
✅ 2. Terms of Service
|
|
879
|
+
- User agreement for using your app
|
|
880
|
+
- Liability limitations
|
|
881
|
+
- Termination conditions
|
|
882
|
+
|
|
883
|
+
✅ 3. Security Measures Documentation
|
|
884
|
+
- Data encryption methods (AES-256, TLS 1.2+)
|
|
885
|
+
- Access controls (who can access user data)
|
|
886
|
+
- Employee training (how staff handles sensitive data)
|
|
887
|
+
- Incident response plan (what you do if breach occurs)
|
|
888
|
+
|
|
889
|
+
✅ 4. Compliance Certifications (if applicable)
|
|
890
|
+
- SOC 2 Type II (for larger orgs)
|
|
891
|
+
- ISO 27001 (security management)
|
|
892
|
+
- GDPR compliance (if EU users)
|
|
893
|
+
|
|
894
|
+
✅ 5. Technical Infrastructure
|
|
895
|
+
- Hosting provider (Vercel, Supabase)
|
|
896
|
+
- Database encryption (Supabase RLS + encryption at rest)
|
|
897
|
+
- API security (authentication, rate limiting)
|
|
898
|
+
```
|
|
899
|
+
|
|
900
|
+
#### 2. Specific Security Requirements
|
|
901
|
+
|
|
902
|
+
**Data Encryption:**
|
|
903
|
+
```typescript
|
|
904
|
+
// ✅ You already have this with Supabase
|
|
905
|
+
// Supabase provides:
|
|
906
|
+
- Encryption at rest (AES-256)
|
|
907
|
+
- Encryption in transit (TLS 1.2+)
|
|
908
|
+
- Row Level Security (RLS)
|
|
909
|
+
|
|
910
|
+
// Your responsibility:
|
|
911
|
+
// Store Plaid access tokens securely
|
|
912
|
+
await supabase.from('plaid_items').insert({
|
|
913
|
+
user_id: user.id,
|
|
914
|
+
access_token: encrypted(plaidAccessToken), // Don't store plain text!
|
|
915
|
+
item_id: plaidItemId
|
|
916
|
+
})
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
**Access Controls:**
|
|
920
|
+
```typescript
|
|
921
|
+
// ✅ Implement with Supabase RLS
|
|
922
|
+
CREATE POLICY "Users can only access their own Plaid data"
|
|
923
|
+
ON plaid_items FOR ALL
|
|
924
|
+
USING (auth.uid() = user_id);
|
|
925
|
+
```
|
|
926
|
+
|
|
927
|
+
#### 3. Graham-Leach-Bliley Act (GLBA) Compliance
|
|
928
|
+
|
|
929
|
+
**Safeguards Rule Requirements:**
|
|
930
|
+
|
|
931
|
+
```
|
|
932
|
+
✅ 1. Designate a coordinator
|
|
933
|
+
- Who: You (as developer/owner)
|
|
934
|
+
- Responsibility: Oversee data security
|
|
935
|
+
|
|
936
|
+
✅ 2. Risk assessment
|
|
937
|
+
- Document: "What data we collect" (bank transactions, balances)
|
|
938
|
+
- Document: "Where it's stored" (Supabase, encrypted)
|
|
939
|
+
- Document: "Who has access" (Only authenticated user via RLS)
|
|
940
|
+
|
|
941
|
+
✅ 3. Safeguard design
|
|
942
|
+
- Technical: Encryption, RLS, secure API
|
|
943
|
+
- Physical: N/A (cloud-hosted)
|
|
944
|
+
- Administrative: Access policies, employee training (if any)
|
|
945
|
+
|
|
946
|
+
✅ 4. Test and monitor
|
|
947
|
+
- Regular security audits (quarterly)
|
|
948
|
+
- Penetration testing (annually or via bug bounty)
|
|
949
|
+
- Monitor for breaches (Supabase logs)
|
|
950
|
+
|
|
951
|
+
✅ 5. Update plan as needed
|
|
952
|
+
- Review security measures annually
|
|
953
|
+
- Update after any security incident
|
|
954
|
+
```
|
|
955
|
+
|
|
956
|
+
#### 4. What You Can Do NOW (Before Full Documentation)
|
|
957
|
+
|
|
958
|
+
**Use Plaid Sandbox:**
|
|
959
|
+
```typescript
|
|
960
|
+
// Development environment - no security docs needed
|
|
961
|
+
const plaidClient = new PlaidApi({
|
|
962
|
+
environment: PlaidEnvironments.sandbox, // ✅ No docs required
|
|
963
|
+
clientId: process.env.PLAID_CLIENT_ID,
|
|
964
|
+
secret: process.env.PLAID_SANDBOX_SECRET
|
|
965
|
+
})
|
|
966
|
+
```
|
|
967
|
+
|
|
968
|
+
**Develop and test everything in Sandbox:**
|
|
969
|
+
- ✅ Connect test bank accounts
|
|
970
|
+
- ✅ Pull transactions
|
|
971
|
+
- ✅ Build full Plaid integration
|
|
972
|
+
- ✅ Beta test with users (using fake bank data)
|
|
973
|
+
|
|
974
|
+
**When ready for production:**
|
|
975
|
+
- Submit security questionnaire
|
|
976
|
+
- Plaid reviews (7-14 days)
|
|
977
|
+
- Get production access
|
|
978
|
+
|
|
979
|
+
### Templates for Required Documents
|
|
980
|
+
|
|
981
|
+
#### Template 1: Privacy Policy (Simple Version)
|
|
982
|
+
|
|
983
|
+
```markdown
|
|
984
|
+
# Privacy Policy for [Church Budget App]
|
|
985
|
+
|
|
986
|
+
**Last Updated:** February 1, 2026
|
|
987
|
+
|
|
988
|
+
## What Information We Collect
|
|
989
|
+
|
|
990
|
+
We collect:
|
|
991
|
+
- Account credentials (email, password)
|
|
992
|
+
- Financial data (bank transactions, balances) via Plaid
|
|
993
|
+
- Budget information you enter
|
|
994
|
+
- AI usage data (prompts, responses)
|
|
995
|
+
|
|
996
|
+
## How We Use Your Information
|
|
997
|
+
|
|
998
|
+
We use your information to:
|
|
999
|
+
- Provide budgeting and debt payoff tools
|
|
1000
|
+
- Connect to your bank accounts (via Plaid)
|
|
1001
|
+
- Generate AI-powered financial advice
|
|
1002
|
+
- Improve our services
|
|
1003
|
+
|
|
1004
|
+
## How We Protect Your Information
|
|
1005
|
+
|
|
1006
|
+
We protect your data with:
|
|
1007
|
+
- AES-256 encryption at rest
|
|
1008
|
+
- TLS 1.2+ encryption in transit
|
|
1009
|
+
- Row-level security (you can only access your data)
|
|
1010
|
+
- Regular security audits
|
|
1011
|
+
|
|
1012
|
+
## Data Sharing
|
|
1013
|
+
|
|
1014
|
+
We DO NOT sell your data. We share data only with:
|
|
1015
|
+
- Plaid (to connect your bank accounts)
|
|
1016
|
+
- OpenAI/Anthropic (only if you enable AI features with your own API key)
|
|
1017
|
+
|
|
1018
|
+
## Your Rights
|
|
1019
|
+
|
|
1020
|
+
You can:
|
|
1021
|
+
- Access your data (export feature)
|
|
1022
|
+
- Delete your data (account deletion)
|
|
1023
|
+
- Correct your data (edit in settings)
|
|
1024
|
+
|
|
1025
|
+
## Contact Us
|
|
1026
|
+
|
|
1027
|
+
Questions? Email: privacy@churchbudgetapp.com
|
|
1028
|
+
|
|
1029
|
+
## GLBA Compliance
|
|
1030
|
+
|
|
1031
|
+
We comply with the Graham-Leach-Bliley Act (GLBA) Safeguards Rule.
|
|
1032
|
+
```
|
|
1033
|
+
|
|
1034
|
+
#### Template 2: Security Measures Document
|
|
1035
|
+
|
|
1036
|
+
```markdown
|
|
1037
|
+
# Security Measures - [Church Budget App]
|
|
1038
|
+
|
|
1039
|
+
## Data Encryption
|
|
1040
|
+
|
|
1041
|
+
**At Rest:**
|
|
1042
|
+
- Database: Supabase (AES-256 encryption)
|
|
1043
|
+
- Backups: Encrypted daily
|
|
1044
|
+
|
|
1045
|
+
**In Transit:**
|
|
1046
|
+
- All connections use TLS 1.2 or higher
|
|
1047
|
+
- API calls to Plaid use HTTPS only
|
|
1048
|
+
|
|
1049
|
+
## Access Controls
|
|
1050
|
+
|
|
1051
|
+
**User Data:**
|
|
1052
|
+
- Row Level Security (RLS) ensures users only access their own data
|
|
1053
|
+
- Authentication required for all API endpoints
|
|
1054
|
+
- Session tokens expire after 7 days
|
|
1055
|
+
|
|
1056
|
+
**Staff Access:**
|
|
1057
|
+
- No staff have direct database access
|
|
1058
|
+
- All changes logged in audit trail
|
|
1059
|
+
- Supabase admin access limited to [Owner Name]
|
|
1060
|
+
|
|
1061
|
+
## Incident Response Plan
|
|
1062
|
+
|
|
1063
|
+
**If breach detected:**
|
|
1064
|
+
1. Immediately revoke all access tokens
|
|
1065
|
+
2. Notify affected users within 72 hours
|
|
1066
|
+
3. Investigate root cause
|
|
1067
|
+
4. Implement fixes
|
|
1068
|
+
5. File required reports (state/federal)
|
|
1069
|
+
|
|
1070
|
+
## Monitoring
|
|
1071
|
+
|
|
1072
|
+
**Continuous:**
|
|
1073
|
+
- Supabase real-time logs
|
|
1074
|
+
- Failed login attempt tracking
|
|
1075
|
+
- Unusual API usage alerts
|
|
1076
|
+
|
|
1077
|
+
**Regular Audits:**
|
|
1078
|
+
- Monthly: Review access logs
|
|
1079
|
+
- Quarterly: Security audit of codebase
|
|
1080
|
+
- Annually: Third-party penetration test
|
|
1081
|
+
|
|
1082
|
+
## Employee Training
|
|
1083
|
+
|
|
1084
|
+
**Current:** Solo developer (you) - completed Plaid security training
|
|
1085
|
+
**Future:** All new employees complete security training before access
|
|
1086
|
+
|
|
1087
|
+
## Compliance
|
|
1088
|
+
|
|
1089
|
+
We comply with:
|
|
1090
|
+
- GLBA Safeguards Rule
|
|
1091
|
+
- CCPA (California Consumer Privacy Act)
|
|
1092
|
+
- SOC 2 principles (in progress)
|
|
1093
|
+
```
|
|
1094
|
+
|
|
1095
|
+
### Recommendation for Your Timeline
|
|
1096
|
+
|
|
1097
|
+
**Now (Development Phase):**
|
|
1098
|
+
```
|
|
1099
|
+
1. Use Plaid Sandbox ✅
|
|
1100
|
+
2. Build full Plaid integration ✅
|
|
1101
|
+
3. Beta test with fake bank data ✅
|
|
1102
|
+
4. Focus on core features (budget, GTA forms) ✅
|
|
1103
|
+
```
|
|
1104
|
+
|
|
1105
|
+
**Before Production Launch:**
|
|
1106
|
+
```
|
|
1107
|
+
1. Write Privacy Policy (use template above)
|
|
1108
|
+
2. Write Security Measures document
|
|
1109
|
+
3. Submit Plaid security questionnaire
|
|
1110
|
+
4. Wait for approval (7-14 days)
|
|
1111
|
+
5. Switch to production Plaid keys
|
|
1112
|
+
```
|
|
1113
|
+
|
|
1114
|
+
**Priority:** Finish core app FGTAT, then tackle Plaid paperwork. Sandbox is enough for beta testing.
|
|
1115
|
+
|
|
1116
|
+
---
|
|
1117
|
+
|
|
1118
|
+
## Development Roadmap Before Beta
|
|
1119
|
+
|
|
1120
|
+
### Phase 1: Core Application Tabs (Weeks 1-3)
|
|
1121
|
+
|
|
1122
|
+
#### Week 1: Dashboard Tab
|
|
1123
|
+
```typescript
|
|
1124
|
+
// Main dashboard components
|
|
1125
|
+
✅ 1. Monthly Budget Overview
|
|
1126
|
+
- Income vs Expenses chart
|
|
1127
|
+
- Budget categories (Housing, Food, Transport, etc.)
|
|
1128
|
+
- Surplus/Deficit indicator
|
|
1129
|
+
|
|
1130
|
+
✅ 2. Debt Summary Widget
|
|
1131
|
+
- Total debt amount
|
|
1132
|
+
- Monthly debt payments
|
|
1133
|
+
- Debt-to-income ratio
|
|
1134
|
+
- Quick link to "Debt Payoff" tab
|
|
1135
|
+
|
|
1136
|
+
✅ 3. Upcoming Bills Widget
|
|
1137
|
+
- Next 7 days of bills
|
|
1138
|
+
- Overdue alerts (red)
|
|
1139
|
+
- Mark as paid functionality
|
|
1140
|
+
|
|
1141
|
+
✅ 4. Quick Actions
|
|
1142
|
+
- "Add Transaction" button
|
|
1143
|
+
- "Connect Bank" (Plaid Sandbox)
|
|
1144
|
+
- "Ask AI" chat button
|
|
1145
|
+
```
|
|
1146
|
+
|
|
1147
|
+
**Testing Checklist:**
|
|
1148
|
+
- [ ] All charts render correctly
|
|
1149
|
+
- [ ] Numbers update in real-time
|
|
1150
|
+
- [ ] Mobile responsive
|
|
1151
|
+
- [ ] Works with sample data
|
|
1152
|
+
|
|
1153
|
+
#### Week 2: Budget Tab
|
|
1154
|
+
```typescript
|
|
1155
|
+
✅ 1. Monthly Budget Planner
|
|
1156
|
+
- Set budget for each category
|
|
1157
|
+
- Actual vs Budgeted comparison
|
|
1158
|
+
- Progress bars (% spent)
|
|
1159
|
+
- Color coding (green=under, red=over)
|
|
1160
|
+
|
|
1161
|
+
✅ 2. Transaction List
|
|
1162
|
+
- Filter by category
|
|
1163
|
+
- Search transactions
|
|
1164
|
+
- Edit/delete transactions
|
|
1165
|
+
- Plaid sync indicator
|
|
1166
|
+
|
|
1167
|
+
✅ 3. Budget Templates
|
|
1168
|
+
- Dave Ramsey's Recommended Percentages
|
|
1169
|
+
- Church Ministry Budget
|
|
1170
|
+
- Single Income Family
|
|
1171
|
+
- Debt Payoff Focused
|
|
1172
|
+
|
|
1173
|
+
✅ 4. Export Features
|
|
1174
|
+
- Export to CSV
|
|
1175
|
+
- Print budget report
|
|
1176
|
+
```
|
|
1177
|
+
|
|
1178
|
+
**Testing Checklist:**
|
|
1179
|
+
- [ ] Budget categories customizable
|
|
1180
|
+
- [ ] Percentages calculate correctly
|
|
1181
|
+
- [ ] Templates load properly
|
|
1182
|
+
- [ ] Export works (CSV format)
|
|
1183
|
+
|
|
1184
|
+
#### Week 3: Debt Tab
|
|
1185
|
+
```typescript
|
|
1186
|
+
✅ 1. Debt List
|
|
1187
|
+
- All debts (credit cards, loans, GTA)
|
|
1188
|
+
- Balance, APR, minimum payment
|
|
1189
|
+
- Add/edit/delete debts
|
|
1190
|
+
|
|
1191
|
+
✅ 2. Debt Payoff Calculator
|
|
1192
|
+
- Snowball strategy
|
|
1193
|
+
- Avalanche strategy
|
|
1194
|
+
- Custom strategy
|
|
1195
|
+
- Side-by-side comparison
|
|
1196
|
+
|
|
1197
|
+
✅ 3. Payoff Progress
|
|
1198
|
+
- Timeline chart
|
|
1199
|
+
- Total interest calculation
|
|
1200
|
+
- Debt-free date
|
|
1201
|
+
- Motivational messages
|
|
1202
|
+
|
|
1203
|
+
✅ 4. GTA Debt Special Section
|
|
1204
|
+
- GTA debt with penalty calculations
|
|
1205
|
+
- Link to Form 656 (OIC)
|
|
1206
|
+
- Link to Form 9465 (Installment)
|
|
1207
|
+
```
|
|
1208
|
+
|
|
1209
|
+
**Testing Checklist:**
|
|
1210
|
+
- [ ] Debt calculations accurate
|
|
1211
|
+
- [ ] Interest accrues correctly
|
|
1212
|
+
- [ ] Timeline projections realistic
|
|
1213
|
+
- [ ] GTA-specific features work
|
|
1214
|
+
|
|
1215
|
+
### Phase 2: GTA Forms Integration (Weeks 4-6)
|
|
1216
|
+
|
|
1217
|
+
#### Week 4: Form 433-A/B Polish
|
|
1218
|
+
```typescript
|
|
1219
|
+
✅ 1. Auto-populate from budget data
|
|
1220
|
+
- Monthly income → Section 1
|
|
1221
|
+
- Monthly expenses → Section 4
|
|
1222
|
+
- Assets → Section 3
|
|
1223
|
+
- Liabilities → Section 5
|
|
1224
|
+
|
|
1225
|
+
✅ 2. Validation
|
|
1226
|
+
- Check for missing fields
|
|
1227
|
+
- Highlight errors
|
|
1228
|
+
- Prevent submission if incomplete
|
|
1229
|
+
|
|
1230
|
+
✅ 3. Export Options
|
|
1231
|
+
- PDF generation
|
|
1232
|
+
- Save draft
|
|
1233
|
+
- Print-friendly format
|
|
1234
|
+
```
|
|
1235
|
+
|
|
1236
|
+
#### Week 5: Form 656 & 9465 Integration
|
|
1237
|
+
```typescript
|
|
1238
|
+
✅ 1. Form 656 (Offer in Compromise)
|
|
1239
|
+
- Reasonable Collection Potential calculator
|
|
1240
|
+
- Doubt as to Collectibility wizard
|
|
1241
|
+
- ETA hardship statement template
|
|
1242
|
+
|
|
1243
|
+
✅ 2. Form 9465 (Installment Agreement)
|
|
1244
|
+
- Calculate proposed monthly payment
|
|
1245
|
+
- Validate against GTA minimums
|
|
1246
|
+
- Link to Form 433-A
|
|
1247
|
+
|
|
1248
|
+
✅ 3. Cross-Form Data Sync
|
|
1249
|
+
- Update one form → Others auto-update
|
|
1250
|
+
- Prevent data inconsistencies
|
|
1251
|
+
```
|
|
1252
|
+
|
|
1253
|
+
#### Week 6: Additional GTA Forms
|
|
1254
|
+
```typescript
|
|
1255
|
+
✅ 1. Form 433-D (Installment Agreement)
|
|
1256
|
+
- Simpler than 9465
|
|
1257
|
+
- For debts under $50,000
|
|
1258
|
+
|
|
1259
|
+
✅ 2. Form 433-F (Collection Information Statement)
|
|
1260
|
+
- Simpler version of 433-A
|
|
1261
|
+
- For smaller cases
|
|
1262
|
+
|
|
1263
|
+
✅ 3. Form 8822 (Change of Address)
|
|
1264
|
+
- Auto-fill from user profile
|
|
1265
|
+
- GTA submission tracking
|
|
1266
|
+
```
|
|
1267
|
+
|
|
1268
|
+
### Phase 3: AI Features (Week 7)
|
|
1269
|
+
|
|
1270
|
+
```typescript
|
|
1271
|
+
✅ 1. BYOK Settings Page
|
|
1272
|
+
- Multi-provider support (OpenAI, Anthropic, Gemini)
|
|
1273
|
+
- API key validation
|
|
1274
|
+
- Usage tracking
|
|
1275
|
+
- Cost estimation
|
|
1276
|
+
|
|
1277
|
+
✅ 2. AI Chat Interface
|
|
1278
|
+
- Context-aware (knows user's finances)
|
|
1279
|
+
- Debt payoff advice
|
|
1280
|
+
- Budget optimization tips
|
|
1281
|
+
- GTA form help
|
|
1282
|
+
|
|
1283
|
+
✅ 3. AI-Powered Features
|
|
1284
|
+
- "Analyze my budget" button
|
|
1285
|
+
- "Optimize my debt payoff" button
|
|
1286
|
+
- "Review my OIC chances" button
|
|
1287
|
+
```
|
|
1288
|
+
|
|
1289
|
+
### Phase 4: Auth & Settings (Week 8)
|
|
1290
|
+
|
|
1291
|
+
```typescript
|
|
1292
|
+
✅ 1. Supabase Google Sign-In
|
|
1293
|
+
- One-click login
|
|
1294
|
+
- Auto-create user profile
|
|
1295
|
+
- Redirect to dashboard
|
|
1296
|
+
|
|
1297
|
+
✅ 2. User Profile
|
|
1298
|
+
- Basic info (name, email)
|
|
1299
|
+
- Church affiliation
|
|
1300
|
+
- Household size
|
|
1301
|
+
- Income sources
|
|
1302
|
+
|
|
1303
|
+
✅ 3. App Settings
|
|
1304
|
+
- Dark mode toggle
|
|
1305
|
+
- Budget categories customization
|
|
1306
|
+
- Notification preferences
|
|
1307
|
+
- Data export
|
|
1308
|
+
```
|
|
1309
|
+
|
|
1310
|
+
### Phase 5: Polish & Beta Prep (Week 9-10)
|
|
1311
|
+
|
|
1312
|
+
```typescript
|
|
1313
|
+
✅ 1. Bug Fixes
|
|
1314
|
+
- Fix TypeScript errors
|
|
1315
|
+
- Fix UI glitches
|
|
1316
|
+
- Test all user flows
|
|
1317
|
+
|
|
1318
|
+
✅ 2. Mobile Responsiveness
|
|
1319
|
+
- Test on iPhone/Android
|
|
1320
|
+
- Fix layout issues
|
|
1321
|
+
- Optimize for tablets
|
|
1322
|
+
|
|
1323
|
+
✅ 3. Performance
|
|
1324
|
+
- Lazy load components
|
|
1325
|
+
- Optimize images
|
|
1326
|
+
- Reduce bundle size
|
|
1327
|
+
|
|
1328
|
+
✅ 4. Documentation
|
|
1329
|
+
- User guide (how to use each feature)
|
|
1330
|
+
- Video walkthrough (5-10 min)
|
|
1331
|
+
- FAQ
|
|
1332
|
+
```
|
|
1333
|
+
|
|
1334
|
+
### Beta Launch Checklist
|
|
1335
|
+
|
|
1336
|
+
**Before inviting users:**
|
|
1337
|
+
- [ ] All core tabs functional
|
|
1338
|
+
- [ ] GTA forms working (at least 433-A/B, 656, 9465)
|
|
1339
|
+
- [ ] AI chat working with BYOK
|
|
1340
|
+
- [ ] Google Sign-In working
|
|
1341
|
+
- [ ] Mobile responsive
|
|
1342
|
+
- [ ] No critical bugs
|
|
1343
|
+
- [ ] Sample data for testing
|
|
1344
|
+
- [ ] User guide written
|
|
1345
|
+
- [ ] Plaid Sandbox configured
|
|
1346
|
+
- [ ] Vercel deployed
|
|
1347
|
+
- [ ] SSL working
|
|
1348
|
+
- [ ] Terms of Service (simple version)
|
|
1349
|
+
- [ ] Privacy Policy (simple version)
|
|
1350
|
+
|
|
1351
|
+
**Beta user onboarding:**
|
|
1352
|
+
1. Send invite email with login link
|
|
1353
|
+
2. Include "Getting Started" guide
|
|
1354
|
+
3. Provide feedback form
|
|
1355
|
+
4. Schedule 1-on-1 walkthrough (optional)
|
|
1356
|
+
5. Weekly check-ins
|
|
1357
|
+
|
|
1358
|
+
---
|
|
1359
|
+
|
|
1360
|
+
## Quick Implementation Guides
|
|
1361
|
+
|
|
1362
|
+
### 1. Google Sign-In with Supabase (15 minutes)
|
|
1363
|
+
|
|
1364
|
+
**Step 1: Enable in Supabase Dashboard**
|
|
1365
|
+
|
|
1366
|
+
1. Go to Supabase Dashboard → Authentication → Providers
|
|
1367
|
+
2. Enable "Google"
|
|
1368
|
+
3. Get credentials:
|
|
1369
|
+
- Go to [Google Cloud Console](https://console.cloud.google.com)
|
|
1370
|
+
- Create project → APIs & Services → Credentials
|
|
1371
|
+
- Create OAuth 2.0 Client ID
|
|
1372
|
+
- Authorized redirect URIs: `https://[your-project].supabase.co/auth/v1/callback`
|
|
1373
|
+
4. Copy Client ID and Client Secret
|
|
1374
|
+
5. Paste into Supabase
|
|
1375
|
+
|
|
1376
|
+
**Step 2: Frontend Implementation**
|
|
1377
|
+
|
|
1378
|
+
```typescript
|
|
1379
|
+
// src/components/Auth/LoginPage.tsx
|
|
1380
|
+
import { useSupabase } from '@/hooks/useSupabase'
|
|
1381
|
+
|
|
1382
|
+
export function LoginPage() {
|
|
1383
|
+
const { supabase } = useSupabase()
|
|
1384
|
+
|
|
1385
|
+
const signInWithGoogle = async () => {
|
|
1386
|
+
const { error } = await supabase.auth.signInWithOAuth({
|
|
1387
|
+
provider: 'google',
|
|
1388
|
+
options: {
|
|
1389
|
+
redirectTo: `${window.location.origin}/dashboard`
|
|
1390
|
+
}
|
|
1391
|
+
})
|
|
1392
|
+
|
|
1393
|
+
if (error) {
|
|
1394
|
+
console.error('Error signing in with Google:', error)
|
|
1395
|
+
}
|
|
1396
|
+
}
|
|
1397
|
+
|
|
1398
|
+
return (
|
|
1399
|
+
<div className="login-page">
|
|
1400
|
+
<h1>Church Budget App</h1>
|
|
1401
|
+
<p>Manage your finances and pay off debt</p>
|
|
1402
|
+
|
|
1403
|
+
<button onClick={signInWithGoogle} className="google-signin-btn">
|
|
1404
|
+
<img src="/google-icon.svg" alt="Google" />
|
|
1405
|
+
Sign in with Google
|
|
1406
|
+
</button>
|
|
1407
|
+
|
|
1408
|
+
<p className="terms">
|
|
1409
|
+
By signing in, you agree to our{' '}
|
|
1410
|
+
<a href="/terms">Terms of Service</a> and{' '}
|
|
1411
|
+
<a href="/privacy">Privacy Policy</a>
|
|
1412
|
+
</p>
|
|
1413
|
+
</div>
|
|
1414
|
+
)
|
|
1415
|
+
}
|
|
1416
|
+
```
|
|
1417
|
+
|
|
1418
|
+
**Step 3: Protected Routes**
|
|
1419
|
+
|
|
1420
|
+
```typescript
|
|
1421
|
+
// src/components/Auth/ProtectedRoute.tsx
|
|
1422
|
+
import { useEffect } from 'react'
|
|
1423
|
+
import { useNavigate } from 'react-router-dom'
|
|
1424
|
+
import { useSupabase } from '@/hooks/useSupabase'
|
|
1425
|
+
|
|
1426
|
+
export function ProtectedRoute({ children }) {
|
|
1427
|
+
const { user, loading } = useSupabase()
|
|
1428
|
+
const navigate = useNavigate()
|
|
1429
|
+
|
|
1430
|
+
useEffect(() => {
|
|
1431
|
+
if (!loading && !user) {
|
|
1432
|
+
navigate('/login')
|
|
1433
|
+
}
|
|
1434
|
+
}, [user, loading, navigate])
|
|
1435
|
+
|
|
1436
|
+
if (loading) {
|
|
1437
|
+
return <div>Loading...</div>
|
|
1438
|
+
}
|
|
1439
|
+
|
|
1440
|
+
if (!user) {
|
|
1441
|
+
return null
|
|
1442
|
+
}
|
|
1443
|
+
|
|
1444
|
+
return <>{children}</>
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
// Usage in routes
|
|
1448
|
+
<Route path="/dashboard" element={
|
|
1449
|
+
<ProtectedRoute>
|
|
1450
|
+
<Dashboard />
|
|
1451
|
+
</ProtectedRoute>
|
|
1452
|
+
} />
|
|
1453
|
+
```
|
|
1454
|
+
|
|
1455
|
+
### 2. Multi-Provider AI Settings (30 minutes)
|
|
1456
|
+
|
|
1457
|
+
**Schema:**
|
|
1458
|
+
|
|
1459
|
+
```sql
|
|
1460
|
+
-- Add to user_settings table
|
|
1461
|
+
ALTER TABLE user_settings ADD COLUMN ai_provider TEXT DEFAULT 'openai';
|
|
1462
|
+
ALTER TABLE user_settings ADD COLUMN preferred_model TEXT DEFAULT 'gpt-4o-mini';
|
|
1463
|
+
ALTER TABLE user_settings ADD COLUMN api_key_encrypted TEXT;
|
|
1464
|
+
|
|
1465
|
+
-- Usage logging
|
|
1466
|
+
CREATE TABLE ai_usage_logs (
|
|
1467
|
+
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
1468
|
+
user_id UUID REFERENCES auth.users(id),
|
|
1469
|
+
provider TEXT NOT NULL,
|
|
1470
|
+
model TEXT NOT NULL,
|
|
1471
|
+
input_tokens INTEGER,
|
|
1472
|
+
output_tokens INTEGER,
|
|
1473
|
+
estimated_cost NUMERIC(10, 6),
|
|
1474
|
+
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
1475
|
+
);
|
|
1476
|
+
|
|
1477
|
+
ALTER TABLE ai_usage_logs ENABLE ROW LEVEL SECURITY;
|
|
1478
|
+
|
|
1479
|
+
CREATE POLICY "Users can view their own usage"
|
|
1480
|
+
ON ai_usage_logs FOR SELECT
|
|
1481
|
+
USING (auth.uid() = user_id);
|
|
1482
|
+
```
|
|
1483
|
+
|
|
1484
|
+
**Component:** (Already provided in AI Providers section above)
|
|
1485
|
+
|
|
1486
|
+
### 3. GTA Debt Calculator Widget (1 hour)
|
|
1487
|
+
|
|
1488
|
+
```typescript
|
|
1489
|
+
// src/components/Debt/GTADebtCalculator.tsx
|
|
1490
|
+
import { useState, useEffect } from 'react'
|
|
1491
|
+
|
|
1492
|
+
const GTA_INTEREST_RATE = 0.08 // 8% as of 2025
|
|
1493
|
+
const FAILURE_TO_PAY_PENALTY = 0.005 // 0.5% per month
|
|
1494
|
+
|
|
1495
|
+
export function GTADebtCalculator({ initialDebt, assessmentDate }) {
|
|
1496
|
+
const [projection, setProjection] = useState(null)
|
|
1497
|
+
|
|
1498
|
+
useEffect(() => {
|
|
1499
|
+
calculateProjection()
|
|
1500
|
+
}, [initialDebt, assessmentDate])
|
|
1501
|
+
|
|
1502
|
+
const calculateProjection = () => {
|
|
1503
|
+
const today = new Date()
|
|
1504
|
+
const assessment = new Date(assessmentDate)
|
|
1505
|
+
const monthsElapsed = (today - assessment) / (1000 * 60 * 60 * 24 * 30)
|
|
1506
|
+
|
|
1507
|
+
// Calculate current debt
|
|
1508
|
+
const interestAccrued = initialDebt * GTA_INTEREST_RATE * (monthsElapsed / 12)
|
|
1509
|
+
const penaltiesAccrued = initialDebt * FAILURE_TO_PAY_PENALTY * monthsElapsed
|
|
1510
|
+
const currentDebt = initialDebt + interestAccrued + penaltiesAccrued
|
|
1511
|
+
|
|
1512
|
+
// Project future
|
|
1513
|
+
const projections = [3, 6, 12, 24].map(months => {
|
|
1514
|
+
const totalMonths = monthsElapsed + months
|
|
1515
|
+
const interest = initialDebt * GTA_INTEREST_RATE * (totalMonths / 12)
|
|
1516
|
+
const penalties = initialDebt * FAILURE_TO_PAY_PENALTY * totalMonths
|
|
1517
|
+
return {
|
|
1518
|
+
months,
|
|
1519
|
+
debt: initialDebt + interest + penalties
|
|
1520
|
+
}
|
|
1521
|
+
})
|
|
1522
|
+
|
|
1523
|
+
setProjection({
|
|
1524
|
+
original: initialDebt,
|
|
1525
|
+
current: currentDebt,
|
|
1526
|
+
interestAccrued,
|
|
1527
|
+
penaltiesAccrued,
|
|
1528
|
+
projections
|
|
1529
|
+
})
|
|
1530
|
+
}
|
|
1531
|
+
|
|
1532
|
+
if (!projection) return <div>Loading...</div>
|
|
1533
|
+
|
|
1534
|
+
return (
|
|
1535
|
+
<div className="irs-debt-calculator">
|
|
1536
|
+
<h3>GTA Debt Projection</h3>
|
|
1537
|
+
|
|
1538
|
+
<div className="current-status">
|
|
1539
|
+
<div>Original Debt: ${projection.original.toLocaleString()}</div>
|
|
1540
|
+
<div>Interest Accrued: ${projection.interestAccrued.toFixed(2)}</div>
|
|
1541
|
+
<div>Penalties Accrued: ${projection.penaltiesAccrued.toFixed(2)}</div>
|
|
1542
|
+
<div className="total">
|
|
1543
|
+
Current Total: ${projection.current.toFixed(2)}
|
|
1544
|
+
</div>
|
|
1545
|
+
</div>
|
|
1546
|
+
|
|
1547
|
+
<div className="projection-timeline">
|
|
1548
|
+
<h4>⚠️ If You Don't Act:</h4>
|
|
1549
|
+
{projection.projections.map(p => (
|
|
1550
|
+
<div key={p.months} className="projection-row">
|
|
1551
|
+
<span>{p.months} months:</span>
|
|
1552
|
+
<span className="amount">${p.debt.toLocaleString()}</span>
|
|
1553
|
+
<span className="increase">
|
|
1554
|
+
(+${(p.debt - projection.current).toFixed(0)})
|
|
1555
|
+
</span>
|
|
1556
|
+
</div>
|
|
1557
|
+
))}
|
|
1558
|
+
</div>
|
|
1559
|
+
|
|
1560
|
+
<div className="actions">
|
|
1561
|
+
<button onClick={() => navigate('/forms/656')}>
|
|
1562
|
+
Apply for Offer in Compromise
|
|
1563
|
+
</button>
|
|
1564
|
+
<button onClick={() => navigate('/forms/9465')}>
|
|
1565
|
+
Set Up Installment Agreement
|
|
1566
|
+
</button>
|
|
1567
|
+
</div>
|
|
1568
|
+
</div>
|
|
1569
|
+
)
|
|
1570
|
+
}
|
|
1571
|
+
```
|
|
1572
|
+
|
|
1573
|
+
---
|
|
1574
|
+
|
|
1575
|
+
## Summary & Recommendations
|
|
1576
|
+
|
|
1577
|
+
### Top 5 Unique Features to Implement First
|
|
1578
|
+
|
|
1579
|
+
1. **✅ GTA Form Auto-Fill** (Week 4) - Saves users 2-3 hours, nobody else has this
|
|
1580
|
+
2. **✅ AI Debt Optimization** (Week 7) - Beats generic snowball/avalanche, personalized
|
|
1581
|
+
3. **✅ OIC Approval Predictor** (Week 7) - Unique to your app, massive value
|
|
1582
|
+
4. **✅ Multi-Provider AI (BYOK)** (Week 7) - User cost savings, flexibility
|
|
1583
|
+
5. **✅ Debt Payoff Gamification** (Week 8-9) - Motivation = completion rates
|
|
1584
|
+
|
|
1585
|
+
### AI Provider Recommendation
|
|
1586
|
+
|
|
1587
|
+
**Support all three, default to OpenAI:**
|
|
1588
|
+
- OpenAI: Best general-purpose, most reliable
|
|
1589
|
+
- Anthropic: Best for long documents (GTA forms analysis)
|
|
1590
|
+
- Gemini: Cheapest (good for high-volume users)
|
|
1591
|
+
|
|
1592
|
+
### Plaid Security Strategy
|
|
1593
|
+
|
|
1594
|
+
**Short-term:** Use Sandbox (no docs needed)
|
|
1595
|
+
**Long-term:** Complete security questionnaire after beta testing
|
|
1596
|
+
**Priority:** Build app first, paperwork second
|
|
1597
|
+
|
|
1598
|
+
### Your Roadmap (Next 10 Weeks)
|
|
1599
|
+
|
|
1600
|
+
```
|
|
1601
|
+
Weeks 1-3: Core tabs (Dashboard, Budget, Debt)
|
|
1602
|
+
Weeks 4-6: GTA forms polish + integration
|
|
1603
|
+
Week 7: AI features (BYOK + chat)
|
|
1604
|
+
Week 8: Auth (Google Sign-In) + Settings
|
|
1605
|
+
Weeks 9-10: Polish, mobile responsive, bug fixes
|
|
1606
|
+
Week 11: BETA LAUNCH 🚀
|
|
1607
|
+
```
|
|
1608
|
+
|
|
1609
|
+
**Focus:** Nail the core experience before adding bells & whistles. Beta users will tell you what features matter most!
|
|
1610
|
+
|
|
1611
|
+
---
|
|
1612
|
+
|
|
1613
|
+
You're building something truly unique - GTA forms + AI + debt payoff in a church ministry context. No competitor has this combo. Keep it simple, launch fast, iterate based on feedback. 🎯
|