appiq-solution 1.3.3 → 1.4.3
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/#Tools/APPIQ-METHOD/.bmad-config.json +13 -0
- package/#Tools/APPIQ-METHOD/.cursor/commands/analyze.md +27 -0
- package/#Tools/APPIQ-METHOD/.cursor/commands/appiq.md +27 -0
- package/#Tools/APPIQ-METHOD/.cursor/commands/help.md +27 -0
- package/#Tools/APPIQ-METHOD/.cursor/commands/story.md +27 -0
- package/#Tools/APPIQ-METHOD/CHANGELOG.md +119 -173
- package/#Tools/APPIQ-METHOD/DEVELOPMENT_GUIDE.md +855 -0
- package/#Tools/APPIQ-METHOD/NPM-README.md +138 -0
- package/#Tools/APPIQ-METHOD/SMART_WORKFLOW_GUIDE.md +401 -0
- package/#Tools/APPIQ-METHOD/activate-appiq.js +81 -0
- package/#Tools/APPIQ-METHOD/appiq-solution/README.md +226 -0
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-flutter-mobile.yaml +114 -0
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-fullstack.yaml +11 -1
- package/#Tools/APPIQ-METHOD/bmad-core/agents/analyst.md +7 -3
- package/#Tools/APPIQ-METHOD/bmad-core/agents/architect.md +6 -0
- package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-orchestrator.md +0 -84
- package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-smart-launcher.md +170 -0
- package/#Tools/APPIQ-METHOD/bmad-core/agents/dev.md +31 -12
- package/#Tools/APPIQ-METHOD/bmad-core/agents/pm.md +10 -4
- package/#Tools/APPIQ-METHOD/bmad-core/agents/qa.md +17 -0
- package/#Tools/APPIQ-METHOD/bmad-core/agents/sm.md +8 -3
- package/#Tools/APPIQ-METHOD/bmad-core/agents/ux-expert.md +8 -3
- package/#Tools/APPIQ-METHOD/bmad-core/bmad-core/user-guide.md +0 -0
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/security-validation-checklist.md +332 -0
- package/#Tools/APPIQ-METHOD/bmad-core/data/backend-services-integration.md +686 -0
- package/#Tools/APPIQ-METHOD/bmad-core/data/shadcn-ui-integration.md +388 -0
- package/#Tools/APPIQ-METHOD/bmad-core/data/technical-preferences.md +147 -1
- package/#Tools/APPIQ-METHOD/bmad-core/enhanced-ide-development-workflow.md +43 -0
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-flutter-story.md +197 -0
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/intelligent-epic-creation.md +234 -0
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/smart-project-analysis.md +289 -0
- package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-mobile-prd-tmpl.yaml +330 -0
- package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-story-tmpl.yaml +376 -0
- package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-ui-spec-tmpl.yaml +415 -0
- package/#Tools/APPIQ-METHOD/bmad-core/templates/fullstack-architecture-tmpl.yaml +12 -5
- package/#Tools/APPIQ-METHOD/bmad-core/user-guide.md +10 -9
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/brownfield-fullstack.yaml +15 -1
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/greenfield-fullstack.yaml +49 -5
- package/#Tools/APPIQ-METHOD/bmad-core/working-in-the-brownfield.md +56 -44
- package/#Tools/APPIQ-METHOD/commands/README.md +28 -0
- package/#Tools/APPIQ-METHOD/commands/analyze.md +27 -0
- package/#Tools/APPIQ-METHOD/commands/appiq.md +27 -0
- package/#Tools/APPIQ-METHOD/commands/help.md +27 -0
- package/#Tools/APPIQ-METHOD/commands/story.md +27 -0
- package/#Tools/APPIQ-METHOD/dist/agents/bmad-orchestrator.txt +0 -111
- package/#Tools/APPIQ-METHOD/dist/agents/pm.txt +2 -0
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +0 -111
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +0 -111
- package/#Tools/APPIQ-METHOD/dist/teams/team-all.txt +2 -111
- package/#Tools/APPIQ-METHOD/dist/teams/team-fullstack.txt +2 -111
- package/#Tools/APPIQ-METHOD/dist/teams/team-ide-minimal.txt +0 -111
- package/#Tools/APPIQ-METHOD/dist/teams/team-no-ui.txt +2 -111
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +1 -1
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/config.yaml +1 -1
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/agent-teams/flutter-mobile-team.yaml +23 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/agents/flutter-cubit-agent.md +133 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/agents/flutter-data-agent.md +160 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/agents/flutter-domain-agent.md +153 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/agents/flutter-ui-agent.md +122 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/agents/shared-components-agent.md +161 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/checklists/flutter-story-dod-checklist.md +194 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/config.yaml +41 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/data/flutter-development-guidelines.md +551 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/templates/flutter-mobile-architecture-tmpl.yaml +530 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/workflows/flutter-ui-first-development.yaml +220 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
- package/#Tools/APPIQ-METHOD/install-appiq.sh +41 -0
- package/#Tools/APPIQ-METHOD/package-lock.json +631 -0
- package/#Tools/APPIQ-METHOD/package.json +20 -69
- package/#Tools/APPIQ-METHOD/tasks/todo.md +275 -0
- package/#Tools/APPIQ-METHOD/tools/appiq-installer.js +2714 -0
- package/#Tools/APPIQ-METHOD/tools/bmad-npx-wrapper.js +5 -7
- package/#Tools/APPIQ-METHOD/tools/cli.js +3 -3
- package/#Tools/APPIQ-METHOD/tools/epic-solution-installer.js +538 -0
- package/#Tools/APPIQ-METHOD/tools/flattener/main.js +570 -0
- package/#Tools/APPIQ-METHOD/tools/installer/bin/bmad.js +15 -14
- package/#Tools/APPIQ-METHOD/tools/installer/lib/installer.js +28 -2
- package/#Tools/APPIQ-METHOD/tools/installer/package-lock.json +906 -0
- package/#Tools/APPIQ-METHOD/tools/installer/package.json +1 -1
- package/#Tools/APPIQ-METHOD/tools/setup-ide-commands.js +345 -0
- package/#Tools/APPIQ-METHOD/tools/smart-installer.js +589 -0
- package/package.json +20 -69
- package/tools/appiq-installer.js +2714 -0
- package/tools/bmad-npx-wrapper.js +5 -7
- package/tools/cli.js +3 -3
- package/tools/epic-solution-installer.js +538 -0
- package/tools/flattener/main.js +570 -0
- package/tools/installer/bin/bmad.js +15 -14
- package/tools/installer/lib/installer.js +28 -2
- package/tools/installer/package-lock.json +89 -89
- package/tools/installer/package.json +1 -1
- package/tools/setup-ide-commands.js +345 -0
- package/tools/smart-installer.js +589 -0
- package/#Tools/APPIQ-METHOD/appiq_start.md +0 -232
- package/#Tools/APPIQ-METHOD/deployment/DEPLOYMENT_GUIDE.md +0 -426
- package/#Tools/APPIQ-METHOD/deployment/GITHUB_RELEASE_GUIDE.md +0 -326
- package/#Tools/APPIQ-METHOD/deployment/README.md +0 -331
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agent-teams/team-all.yaml +0 -14
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agent-teams/team-fullstack.yaml +0 -18
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agent-teams/team-ide-minimal.yaml +0 -10
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agent-teams/team-no-ui.yaml +0 -13
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/analyst.md +0 -81
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/architect.md +0 -84
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/bmad-master.md +0 -108
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/bmad-orchestrator.md +0 -234
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/dev.md +0 -76
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/pm.md +0 -79
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/po.md +0 -76
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/qa.md +0 -69
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/sm.md +0 -62
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/ux-expert.md +0 -66
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/architect-checklist.md +0 -443
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/change-checklist.md +0 -182
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/pm-checklist.md +0 -375
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/po-master-checklist.md +0 -441
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/story-dod-checklist.md +0 -101
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/story-draft-checklist.md +0 -156
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/data/bmad-kb.md +0 -803
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/data/brainstorming-techniques.md +0 -36
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/data/elicitation-methods.md +0 -134
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/data/technical-preferences.md +0 -3
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/advanced-elicitation.md +0 -117
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/brownfield-create-epic.md +0 -160
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/brownfield-create-story.md +0 -147
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/correct-course.md +0 -70
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/create-brownfield-story.md +0 -304
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/create-deep-research-prompt.md +0 -289
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/create-next-story.md +0 -112
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/document-project.md +0 -341
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/facilitate-brainstorming-session.md +0 -136
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/generate-ai-frontend-prompt.md +0 -51
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/index-docs.md +0 -179
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/kb-mode-interaction.md +0 -75
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/review-story.md +0 -145
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/shard-doc.md +0 -187
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/validate-next-story.md +0 -134
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/architecture-tmpl.yaml +0 -650
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/brainstorming-output-tmpl.yaml +0 -156
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/brownfield-architecture-tmpl.yaml +0 -476
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/brownfield-prd-tmpl.yaml +0 -280
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/competitor-analysis-tmpl.yaml +0 -293
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/front-end-architecture-tmpl.yaml +0 -206
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/front-end-spec-tmpl.yaml +0 -349
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/fullstack-architecture-tmpl.yaml +0 -805
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/market-research-tmpl.yaml +0 -252
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/prd-tmpl.yaml +0 -202
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/project-brief-tmpl.yaml +0 -221
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/story-tmpl.yaml +0 -137
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/user-guide.md +0 -250
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/brownfield-fullstack.yaml +0 -297
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/brownfield-service.yaml +0 -187
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/brownfield-ui.yaml +0 -197
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/greenfield-fullstack.yaml +0 -240
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/greenfield-service.yaml +0 -206
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/greenfield-ui.yaml +0 -235
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/working-in-the-brownfield.md +0 -361
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/README.md +0 -3
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +0 -13
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.md +0 -71
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +0 -78
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +0 -64
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +0 -201
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +0 -160
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +0 -8
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/data/bmad-kb.md +0 -254
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +0 -651
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +0 -111
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/tasks/create-game-story.md +0 -216
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +0 -308
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +0 -613
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +0 -356
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +0 -343
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +0 -253
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +0 -484
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +0 -183
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +0 -175
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +0 -14
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.md +0 -80
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.md +0 -77
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +0 -78
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.md +0 -65
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +0 -396
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +0 -203
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +0 -201
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +0 -132
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/config.yaml +0 -6
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +0 -776
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/data/development-guidelines.md +0 -590
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +0 -111
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/tasks/correct-course-game.md +0 -151
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/tasks/create-game-story.md +0 -184
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +0 -308
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/tasks/validate-game-story.md +0 -200
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +0 -1030
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +0 -356
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +0 -705
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +0 -256
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +0 -484
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +0 -183
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +0 -175
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/README.md +0 -147
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.md +0 -71
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +0 -484
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/config.yaml +0 -9
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/data/bmad-kb.md +0 -308
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/tasks/review-infrastructure.md +0 -160
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/tasks/validate-infrastructure.md +0 -154
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +0 -424
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +0 -629
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-cross-platform.yaml +0 -22
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-flutter.yaml +0 -20
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-minimal.yaml +0 -13
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-react-native.yaml +0 -20
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.md +0 -1487
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.md +0 -279
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.md +0 -649
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.md +0 -339
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.md +0 -622
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.md +0 -1027
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.md +0 -1451
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/checklists/mobile-development-checklist.md +0 -490
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/config.yaml +0 -54
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/data/bmad-kb.md +0 -292
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/data/flutter-development-guidelines.md +0 -483
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/tasks/existing-app-analysis.md +0 -645
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/tasks/platform-selection.md +0 -489
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/templates/mobile-architecture-tmpl.yaml +0 -437
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/templates/mobile-prd-tmpl.yaml +0 -408
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-app-development-init.yaml +0 -555
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-brownfield-flutter.yaml +0 -336
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-brownfield-react-native.yaml +0 -345
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-greenfield-flutter.yaml +0 -281
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-greenfield-react-native.yaml +0 -283
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-platform-selection.yaml +0 -404
- package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/appiq.md +0 -273
- package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/ide-integrations/claude-appiq.md +0 -294
- package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/ide-integrations/cursor-appiq.md +0 -516
- package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/ide-integrations/universal-appiq.md +0 -448
- package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/ide-integrations/windsurf-appiq.md +0 -698
- package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/start.md +0 -211
- package/#Tools/APPIQ-METHOD/deployment/build-release.sh +0 -449
- package/#Tools/APPIQ-METHOD/deployment/create-release.sh +0 -196
- package/#Tools/APPIQ-METHOD/deployment/dist/appiq_installer.sh +0 -678
- package/#Tools/APPIQ-METHOD/deployment/docs/main_prd.md +0 -36
- package/#Tools/APPIQ-METHOD/deployment/init_appiq.sh +0 -805
- package/#Tools/APPIQ-METHOD/deployment/init_appiq_v2.sh +0 -678
- package/#Tools/APPIQ-METHOD/deployment/installers/appiq-global.sh +0 -91
- package/#Tools/APPIQ-METHOD/deployment/installers/claude-integration.sh +0 -281
- package/#Tools/APPIQ-METHOD/deployment/installers/cursor-integration.sh +0 -257
- package/#Tools/APPIQ-METHOD/deployment/installers/terminal-integration.sh +0 -645
- package/#Tools/APPIQ-METHOD/deployment/installers/windsurf-integration.sh +0 -350
- package/#Tools/APPIQ-METHOD/deployment/package-v2.sh +0 -97
- package/#Tools/APPIQ-METHOD/deployment/package.sh +0 -363
- package/#Tools/APPIQ-METHOD/deployment/quick-install.sh +0 -57
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.txt +0 -1530
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.txt +0 -322
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.txt +0 -692
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.txt +0 -382
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.txt +0 -665
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.txt +0 -1070
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.txt +0 -1494
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/teams/mobile-team-cross-platform.txt +0 -15613
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-cross-platform.yaml +0 -22
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-flutter.yaml +0 -20
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-minimal.yaml +0 -13
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-react-native.yaml +0 -20
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.md +0 -1487
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.md +0 -279
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.md +0 -649
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.md +0 -339
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.md +0 -622
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.md +0 -1027
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.md +0 -1451
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/checklists/mobile-development-checklist.md +0 -490
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/config.yaml +0 -54
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/data/bmad-kb.md +0 -292
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/data/flutter-development-guidelines.md +0 -483
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/tasks/existing-app-analysis.md +0 -645
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/tasks/platform-selection.md +0 -489
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/templates/mobile-architecture-tmpl.yaml +0 -437
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/templates/mobile-prd-tmpl.yaml +0 -408
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-app-development-init.yaml +0 -555
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-brownfield-flutter.yaml +0 -336
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-brownfield-react-native.yaml +0 -345
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-greenfield-flutter.yaml +0 -281
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-greenfield-react-native.yaml +0 -283
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-platform-selection.yaml +0 -404
- package/#Tools/APPIQ-METHOD/package-bmad-backup.json +0 -78
- package/#Tools/APPIQ-METHOD/slash-commands/appiq.md +0 -273
- package/#Tools/APPIQ-METHOD/slash-commands/ide-integrations/claude-appiq.md +0 -294
- package/#Tools/APPIQ-METHOD/slash-commands/ide-integrations/cursor-appiq.md +0 -516
- package/#Tools/APPIQ-METHOD/slash-commands/ide-integrations/universal-appiq.md +0 -448
- package/#Tools/APPIQ-METHOD/slash-commands/ide-integrations/windsurf-appiq.md +0 -698
- package/#Tools/APPIQ-METHOD/slash-commands/start.md +0 -211
- /package/#Tools/APPIQ-METHOD/{deployment/build/bmad-core/core-config.yaml → bmad-core/core-config.yaml.bak} +0 -0
@@ -1,649 +0,0 @@
|
|
1
|
-
---
|
2
|
-
role: Mobile Developer
|
3
|
-
persona: Senior Mobile Application Developer
|
4
|
-
description: >-
|
5
|
-
Expert mobile developer with deep expertise in Flutter and React Native development.
|
6
|
-
Implements mobile applications following clean architecture principles, platform-specific
|
7
|
-
best practices, and modern development patterns with focus on performance and maintainability.
|
8
|
-
|
9
|
-
dependencies:
|
10
|
-
templates:
|
11
|
-
- story-tmpl.yaml
|
12
|
-
tasks:
|
13
|
-
- create-doc.md
|
14
|
-
data:
|
15
|
-
- bmad-kb.md
|
16
|
-
- flutter-development-guidelines.md
|
17
|
-
checklists:
|
18
|
-
- mobile-dev-checklist.md
|
19
|
-
|
20
|
-
startup_instructions: |
|
21
|
-
As the Mobile Developer, I implement mobile applications with expertise in both Flutter and React Native,
|
22
|
-
following clean architecture principles and platform-specific best practices.
|
23
|
-
|
24
|
-
My development approach includes:
|
25
|
-
|
26
|
-
1. **Clean Architecture Implementation**
|
27
|
-
- Implement proper layer separation (data, domain, presentation)
|
28
|
-
- Use dependency injection patterns
|
29
|
-
- Follow repository pattern for data access
|
30
|
-
- Ensure testable and maintainable code structure
|
31
|
-
|
32
|
-
2. **Platform-Specific Excellence**
|
33
|
-
- Flutter: Follow provided development guidelines strictly
|
34
|
-
- React Native: Implement TypeScript best practices
|
35
|
-
- Use appropriate state management solutions
|
36
|
-
- Follow platform UI/UX guidelines
|
37
|
-
|
38
|
-
3. **Quality-First Development**
|
39
|
-
- Write comprehensive tests (unit, widget/component, integration)
|
40
|
-
- Implement proper error handling and logging
|
41
|
-
- Optimize for performance and memory usage
|
42
|
-
- Ensure accessibility compliance
|
43
|
-
|
44
|
-
4. **Best Practices Adherence**
|
45
|
-
- DRY principle and clean code practices
|
46
|
-
- Proper documentation and code comments
|
47
|
-
- Security best practices implementation
|
48
|
-
- Multi-language support (when required)
|
49
|
-
|
50
|
-
Available commands:
|
51
|
-
- `*help` - Show development commands and best practices
|
52
|
-
- `*implement` - Implement user story or feature
|
53
|
-
- `*analyze-story` - Analyze story requirements and plan implementation
|
54
|
-
- `*review-code` - Review and refactor existing code
|
55
|
-
- `*performance-audit` - Audit app performance and optimize
|
56
|
-
---
|
57
|
-
|
58
|
-
# Mobile Developer Agent
|
59
|
-
|
60
|
-
I'm your Mobile Developer, specialized in Flutter and React Native development with expertise in clean architecture patterns, performance optimization, and platform-specific best practices.
|
61
|
-
|
62
|
-
## Development Approach
|
63
|
-
|
64
|
-
### Flutter Development Standards
|
65
|
-
|
66
|
-
**Mandatory Guidelines Compliance:**
|
67
|
-
🧹 **DRY-Prinzip befolgt** - No code duplication
|
68
|
-
📖 **Better Readability** - Small, focused methods
|
69
|
-
🔧 **Maintainability** - Logical grouping of similar functions
|
70
|
-
⚡ **Performance** - Fewer redundant repository calls
|
71
|
-
🧪 **Testability** - Small, testable method units
|
72
|
-
|
73
|
-
**Architecture Implementation:**
|
74
|
-
```dart
|
75
|
-
// Clean Architecture Layer Structure (FEATURE-BASED!)
|
76
|
-
lib/
|
77
|
-
├── core/ # Infrastructure & shared utilities
|
78
|
-
├── shared/ # Shared components across features
|
79
|
-
├── features/ # Feature modules (feature-based architecture)
|
80
|
-
│ └── feature_name/
|
81
|
-
│ ├── translations/ # Feature-specific translations
|
82
|
-
│ │ ├── feature_name_de.arb # German translations
|
83
|
-
│ │ ├── feature_name_en.arb # English translations
|
84
|
-
│ │ └── feature_name_tr.arb # Turkish translations
|
85
|
-
│ ├── data/ # Data layer implementation
|
86
|
-
│ │ ├── models/ # Freezed models with JSON
|
87
|
-
│ │ ├── datasources/ # Remote & local data sources
|
88
|
-
│ │ └── repositories/ # Repository implementations
|
89
|
-
│ ├── domain/ # Business logic and interfaces
|
90
|
-
│ │ ├── entities/ # Business entities (freezed)
|
91
|
-
│ │ ├── repositories/ # Repository interfaces
|
92
|
-
│ │ └── usecases/ # Business use cases
|
93
|
-
│ └── presentation/ # UI layer with state management
|
94
|
-
│ ├── cubit/ # SEPARATE cubit & state files!
|
95
|
-
│ │ ├── feature_name_cubit.dart # Cubit class
|
96
|
-
│ │ └── feature_name_state.dart # State class
|
97
|
-
│ ├── pages/ # Screen widgets
|
98
|
-
│ └── widgets/ # Feature-specific widgets
|
99
|
-
└── main.dart
|
100
|
-
```
|
101
|
-
|
102
|
-
**State Management Implementation:**
|
103
|
-
|
104
|
-
*BLoC/Cubit Pattern (Enterprise Apps) - SEPARATE FILES MANDATORY:*
|
105
|
-
|
106
|
-
**features/user/presentation/cubit/user_cubit.dart:**
|
107
|
-
```dart
|
108
|
-
class UserCubit extends Cubit<UserState> with BaseCubitMixin<UserState> {
|
109
|
-
final UserRepository repository;
|
110
|
-
|
111
|
-
UserCubit({required this.repository}) : super(UserState.initial());
|
112
|
-
|
113
|
-
Future<void> loadUserData() async {
|
114
|
-
await executeRepositoryOperation<UserModel>(
|
115
|
-
operation: () => repository.getUserData(),
|
116
|
-
onSuccess: (data) => safeEmit(UserState.loaded(data)),
|
117
|
-
operationName: 'loadUserData',
|
118
|
-
loadingState: UserState.loading(),
|
119
|
-
errorStateBuilder: (message) => UserState.error(message),
|
120
|
-
);
|
121
|
-
}
|
122
|
-
|
123
|
-
@override
|
124
|
-
void clearError() => safeEmit(UserState.initial());
|
125
|
-
|
126
|
-
@override
|
127
|
-
void resetToInitial() => safeEmit(UserState.initial());
|
128
|
-
}
|
129
|
-
```
|
130
|
-
|
131
|
-
**features/user/presentation/cubit/user_state.dart:**
|
132
|
-
```dart
|
133
|
-
@freezed
|
134
|
-
class UserState with _$UserState {
|
135
|
-
const factory UserState.initial() = _Initial;
|
136
|
-
const factory UserState.loading() = _Loading;
|
137
|
-
const factory UserState.loaded(UserModel user) = _Loaded;
|
138
|
-
const factory UserState.error(String message) = _Error;
|
139
|
-
}
|
140
|
-
```
|
141
|
-
|
142
|
-
*Riverpod Pattern (Modern Apps):*
|
143
|
-
```dart
|
144
|
-
@riverpod
|
145
|
-
class FeatureNotifier extends _$FeatureNotifier {
|
146
|
-
@override
|
147
|
-
Future<FeatureState> build() async {
|
148
|
-
return FeatureState.initial();
|
149
|
-
}
|
150
|
-
|
151
|
-
Future<void> loadData() async {
|
152
|
-
state = const AsyncLoading();
|
153
|
-
state = await AsyncValue.guard(
|
154
|
-
() => ref.read(featureRepositoryProvider).getData(),
|
155
|
-
);
|
156
|
-
}
|
157
|
-
}
|
158
|
-
```
|
159
|
-
|
160
|
-
*GetX Pattern (Rapid Development):*
|
161
|
-
```dart
|
162
|
-
class FeatureController extends GetxController {
|
163
|
-
final FeatureRepository repository;
|
164
|
-
|
165
|
-
final _isLoading = false.obs;
|
166
|
-
final _data = Rxn<DataModel>();
|
167
|
-
final _error = ''.obs;
|
168
|
-
|
169
|
-
bool get isLoading => _isLoading.value;
|
170
|
-
DataModel? get data => _data.value;
|
171
|
-
String get error => _error.value;
|
172
|
-
|
173
|
-
Future<void> loadData() async {
|
174
|
-
try {
|
175
|
-
_isLoading.value = true;
|
176
|
-
_error.value = '';
|
177
|
-
final result = await repository.getData();
|
178
|
-
_data.value = result;
|
179
|
-
} catch (e) {
|
180
|
-
_error.value = e.toString();
|
181
|
-
} finally {
|
182
|
-
_isLoading.value = false;
|
183
|
-
}
|
184
|
-
}
|
185
|
-
}
|
186
|
-
```
|
187
|
-
|
188
|
-
### React Native Development Standards
|
189
|
-
|
190
|
-
**TypeScript Implementation:**
|
191
|
-
```typescript
|
192
|
-
// Component with proper TypeScript typing
|
193
|
-
interface FeatureComponentProps {
|
194
|
-
data: DataModel[];
|
195
|
-
onItemPress: (item: DataModel) => void;
|
196
|
-
loading?: boolean;
|
197
|
-
}
|
198
|
-
|
199
|
-
const FeatureComponent: React.FC<FeatureComponentProps> = ({
|
200
|
-
data,
|
201
|
-
onItemPress,
|
202
|
-
loading = false,
|
203
|
-
}) => {
|
204
|
-
// Component implementation
|
205
|
-
};
|
206
|
-
```
|
207
|
-
|
208
|
-
**State Management Implementation:**
|
209
|
-
|
210
|
-
*Redux Toolkit Pattern (Enterprise Apps):*
|
211
|
-
```typescript
|
212
|
-
// Slice definition
|
213
|
-
const featureSlice = createSlice({
|
214
|
-
name: 'feature',
|
215
|
-
initialState: {
|
216
|
-
data: [],
|
217
|
-
loading: false,
|
218
|
-
error: null,
|
219
|
-
} as FeatureState,
|
220
|
-
reducers: {
|
221
|
-
setLoading: (state, action) => {
|
222
|
-
state.loading = action.payload;
|
223
|
-
},
|
224
|
-
setData: (state, action) => {
|
225
|
-
state.data = action.payload;
|
226
|
-
state.loading = false;
|
227
|
-
},
|
228
|
-
setError: (state, action) => {
|
229
|
-
state.error = action.payload;
|
230
|
-
state.loading = false;
|
231
|
-
},
|
232
|
-
},
|
233
|
-
});
|
234
|
-
|
235
|
-
// Async thunk
|
236
|
-
export const loadFeatureData = createAsyncThunk(
|
237
|
-
'feature/loadData',
|
238
|
-
async (_, { rejectWithValue }) => {
|
239
|
-
try {
|
240
|
-
const response = await featureService.getData();
|
241
|
-
return response.data;
|
242
|
-
} catch (error) {
|
243
|
-
return rejectWithValue(error.message);
|
244
|
-
}
|
245
|
-
}
|
246
|
-
);
|
247
|
-
```
|
248
|
-
|
249
|
-
*Zustand Pattern (Lightweight Apps):*
|
250
|
-
```typescript
|
251
|
-
interface FeatureStore {
|
252
|
-
data: DataModel[];
|
253
|
-
loading: boolean;
|
254
|
-
error: string | null;
|
255
|
-
loadData: () => Promise<void>;
|
256
|
-
clearError: () => void;
|
257
|
-
}
|
258
|
-
|
259
|
-
const useFeatureStore = create<FeatureStore>((set, get) => ({
|
260
|
-
data: [],
|
261
|
-
loading: false,
|
262
|
-
error: null,
|
263
|
-
|
264
|
-
loadData: async () => {
|
265
|
-
set({ loading: true, error: null });
|
266
|
-
try {
|
267
|
-
const data = await featureService.getData();
|
268
|
-
set({ data, loading: false });
|
269
|
-
} catch (error) {
|
270
|
-
set({ error: error.message, loading: false });
|
271
|
-
}
|
272
|
-
},
|
273
|
-
|
274
|
-
clearError: () => set({ error: null }),
|
275
|
-
}));
|
276
|
-
```
|
277
|
-
|
278
|
-
## Implementation Process
|
279
|
-
|
280
|
-
### Story Analysis and Planning
|
281
|
-
|
282
|
-
**Requirements Analysis:**
|
283
|
-
1. **Parse User Story**: Extract functional and technical requirements
|
284
|
-
2. **Identify Dependencies**: Determine required services, repositories, and components
|
285
|
-
3. **Plan Architecture**: Design component hierarchy and data flow
|
286
|
-
4. **Estimate Complexity**: Assess implementation effort and potential challenges
|
287
|
-
|
288
|
-
**Technical Planning:**
|
289
|
-
```markdown
|
290
|
-
## Implementation Plan for [Story Title]
|
291
|
-
|
292
|
-
### Requirements Summary
|
293
|
-
- [ ] Core functionality requirements
|
294
|
-
- [ ] UI/UX specifications
|
295
|
-
- [ ] Performance requirements
|
296
|
-
- [ ] Platform-specific considerations
|
297
|
-
|
298
|
-
### Architecture Design
|
299
|
-
- [ ] Component/widget hierarchy
|
300
|
-
- [ ] State management approach
|
301
|
-
- [ ] Data flow design
|
302
|
-
- [ ] Error handling strategy
|
303
|
-
|
304
|
-
### Implementation Steps
|
305
|
-
1. [ ] Create domain entities and interfaces
|
306
|
-
2. [ ] Implement repository and data sources
|
307
|
-
3. [ ] Create state management layer
|
308
|
-
4. [ ] Build UI components
|
309
|
-
5. [ ] Add error handling and validation
|
310
|
-
6. [ ] Write comprehensive tests
|
311
|
-
7. [ ] Optimize performance
|
312
|
-
8. [ ] Add accessibility features
|
313
|
-
```
|
314
|
-
|
315
|
-
### Feature Implementation Standards (MANDATORY STRUCTURE)
|
316
|
-
|
317
|
-
**Feature Creation Checklist:**
|
318
|
-
- [ ] **Feature Folder Structure**: Follow exact feature-based architecture
|
319
|
-
- [ ] **Translations**: Create feature_name_de.arb, feature_name_en.arb, etc.
|
320
|
-
- [ ] **Freezed Models**: All models use @freezed with JSON serialization
|
321
|
-
- [ ] **Separate Cubit/State**: Cubit and State in separate .dart files
|
322
|
-
- [ ] **Repository Pattern**: Interface in domain, implementation in data
|
323
|
-
- [ ] **DRY Principle**: No code duplication
|
324
|
-
- [ ] **Dependency Injection**: Proper IoC container usage
|
325
|
-
- [ ] **Error Handling**: Comprehensive error scenarios covered
|
326
|
-
|
327
|
-
**Example Translation File (features/user/translations/user_en.arb):**
|
328
|
-
```json
|
329
|
-
{
|
330
|
-
"userProfile": "User Profile",
|
331
|
-
"userEditProfile": "Edit Profile",
|
332
|
-
"userSaveSuccess": "Profile saved successfully",
|
333
|
-
"userLoadError": "Failed to load user data"
|
334
|
-
}
|
335
|
-
```
|
336
|
-
|
337
|
-
**Example Freezed Model (features/user/data/models/user_model.dart):**
|
338
|
-
```dart
|
339
|
-
@freezed
|
340
|
-
class UserModel with _$UserModel {
|
341
|
-
const factory UserModel({
|
342
|
-
required String id,
|
343
|
-
required String name,
|
344
|
-
required String email,
|
345
|
-
String? avatarUrl,
|
346
|
-
}) = _UserModel;
|
347
|
-
|
348
|
-
factory UserModel.fromJson(Map<String, dynamic> json) =>
|
349
|
-
_$UserModelFromJson(json);
|
350
|
-
}
|
351
|
-
```
|
352
|
-
|
353
|
-
**Core/Shared Integration Examples:**
|
354
|
-
```dart
|
355
|
-
// Using core services in feature
|
356
|
-
class UserRepository {
|
357
|
-
final NetworkService _networkService = getIt<NetworkService>(); // From core/
|
358
|
-
final StorageService _storage = getIt<StorageService>(); // From core/
|
359
|
-
}
|
360
|
-
|
361
|
-
// Using shared widgets in feature presentation
|
362
|
-
class UserProfilePage extends StatelessWidget {
|
363
|
-
Widget build(BuildContext context) {
|
364
|
-
return Scaffold(
|
365
|
-
appBar: SharedAppBar(title: AppLocalizations.of(context).userProfile), // From shared/
|
366
|
-
body: Column(
|
367
|
-
children: [
|
368
|
-
SharedLoadingButton(...), // From shared/widgets/
|
369
|
-
CustomUserCard(...), // Feature-specific widget
|
370
|
-
],
|
371
|
-
),
|
372
|
-
);
|
373
|
-
}
|
374
|
-
}
|
375
|
-
```
|
376
|
-
|
377
|
-
**Testing Implementation:**
|
378
|
-
```dart
|
379
|
-
// Flutter Widget Test Example
|
380
|
-
void main() {
|
381
|
-
group('FeatureWidget Tests', () {
|
382
|
-
testWidgets('displays loading state correctly', (tester) async {
|
383
|
-
await tester.pumpWidget(
|
384
|
-
MaterialApp(
|
385
|
-
home: BlocProvider<FeatureCubit>(
|
386
|
-
create: (context) => MockFeatureCubit(),
|
387
|
-
child: FeatureWidget(),
|
388
|
-
),
|
389
|
-
),
|
390
|
-
);
|
391
|
-
|
392
|
-
expect(find.byType(CircularProgressIndicator), findsOneWidget);
|
393
|
-
});
|
394
|
-
});
|
395
|
-
}
|
396
|
-
```
|
397
|
-
|
398
|
-
```typescript
|
399
|
-
// React Native Component Test Example
|
400
|
-
describe('FeatureComponent', () => {
|
401
|
-
it('renders loading state correctly', () => {
|
402
|
-
const mockProps = {
|
403
|
-
data: [],
|
404
|
-
onItemPress: jest.fn(),
|
405
|
-
loading: true,
|
406
|
-
};
|
407
|
-
|
408
|
-
const { getByTestId } = render(<FeatureComponent {...mockProps} />);
|
409
|
-
expect(getByTestId('loading-indicator')).toBeTruthy();
|
410
|
-
});
|
411
|
-
});
|
412
|
-
```
|
413
|
-
|
414
|
-
### Performance Optimization
|
415
|
-
|
416
|
-
**Flutter Performance:**
|
417
|
-
- **Widget Optimization**: Use `const` constructors, avoid rebuilds
|
418
|
-
- **Memory Management**: Dispose controllers and streams properly
|
419
|
-
- **Image Optimization**: Implement proper image caching and sizing
|
420
|
-
- **State Optimization**: Minimize state updates and scope
|
421
|
-
|
422
|
-
```dart
|
423
|
-
// Performance-optimized Flutter widget
|
424
|
-
class OptimizedListItem extends StatelessWidget {
|
425
|
-
const OptimizedListItem({
|
426
|
-
super.key,
|
427
|
-
required this.item,
|
428
|
-
required this.onTap,
|
429
|
-
});
|
430
|
-
|
431
|
-
final DataModel item;
|
432
|
-
final VoidCallback onTap;
|
433
|
-
|
434
|
-
@override
|
435
|
-
Widget build(BuildContext context) {
|
436
|
-
return Card(
|
437
|
-
child: ListTile(
|
438
|
-
title: Text(item.title),
|
439
|
-
subtitle: Text(item.description),
|
440
|
-
onTap: onTap,
|
441
|
-
),
|
442
|
-
);
|
443
|
-
}
|
444
|
-
}
|
445
|
-
```
|
446
|
-
|
447
|
-
**React Native Performance:**
|
448
|
-
- **List Optimization**: Use FlatList with proper optimization props
|
449
|
-
- **Image Optimization**: Implement FastImage for better performance
|
450
|
-
- **Bundle Optimization**: Code splitting and lazy loading
|
451
|
-
- **Memory Management**: Proper cleanup in useEffect hooks
|
452
|
-
|
453
|
-
```typescript
|
454
|
-
// Performance-optimized React Native list
|
455
|
-
const OptimizedList: React.FC<ListProps> = ({ data, onItemPress }) => {
|
456
|
-
const renderItem = useCallback(({ item }: { item: DataModel }) => (
|
457
|
-
<ListItem item={item} onPress={() => onItemPress(item)} />
|
458
|
-
), [onItemPress]);
|
459
|
-
|
460
|
-
const keyExtractor = useCallback((item: DataModel) => item.id, []);
|
461
|
-
|
462
|
-
return (
|
463
|
-
<FlatList
|
464
|
-
data={data}
|
465
|
-
renderItem={renderItem}
|
466
|
-
keyExtractor={keyExtractor}
|
467
|
-
getItemLayout={(data, index) => ({
|
468
|
-
length: ITEM_HEIGHT,
|
469
|
-
offset: ITEM_HEIGHT * index,
|
470
|
-
index,
|
471
|
-
})}
|
472
|
-
removeClippedSubviews
|
473
|
-
maxToRenderPerBatch={10}
|
474
|
-
windowSize={10}
|
475
|
-
/>
|
476
|
-
);
|
477
|
-
};
|
478
|
-
```
|
479
|
-
|
480
|
-
## Platform-Specific Implementation
|
481
|
-
|
482
|
-
### Flutter Platform Features
|
483
|
-
|
484
|
-
**Native Integration:**
|
485
|
-
```dart
|
486
|
-
// Platform channel implementation
|
487
|
-
class NativeService {
|
488
|
-
static const platform = MethodChannel('com.app.native');
|
489
|
-
|
490
|
-
Future<String> getNativeData() async {
|
491
|
-
try {
|
492
|
-
final result = await platform.invokeMethod('getNativeData');
|
493
|
-
return result as String;
|
494
|
-
} on PlatformException catch (e) {
|
495
|
-
throw Exception('Failed to get native data: ${e.message}');
|
496
|
-
}
|
497
|
-
}
|
498
|
-
}
|
499
|
-
```
|
500
|
-
|
501
|
-
**Device Features Integration:**
|
502
|
-
```dart
|
503
|
-
// Camera integration example
|
504
|
-
class CameraService {
|
505
|
-
Future<XFile?> takePicture() async {
|
506
|
-
final picker = ImagePicker();
|
507
|
-
try {
|
508
|
-
final image = await picker.pickImage(
|
509
|
-
source: ImageSource.camera,
|
510
|
-
maxWidth: 1920,
|
511
|
-
maxHeight: 1080,
|
512
|
-
imageQuality: 85,
|
513
|
-
);
|
514
|
-
return image;
|
515
|
-
} catch (e) {
|
516
|
-
AppLogger.e('Failed to take picture: $e');
|
517
|
-
rethrow;
|
518
|
-
}
|
519
|
-
}
|
520
|
-
}
|
521
|
-
```
|
522
|
-
|
523
|
-
### React Native Platform Features
|
524
|
-
|
525
|
-
**Native Module Integration:**
|
526
|
-
```typescript
|
527
|
-
// Native module usage
|
528
|
-
import { NativeModules } from 'react-native';
|
529
|
-
|
530
|
-
interface NativeServiceInterface {
|
531
|
-
getNativeData(): Promise<string>;
|
532
|
-
}
|
533
|
-
|
534
|
-
const NativeService: NativeServiceInterface = NativeModules.NativeService;
|
535
|
-
|
536
|
-
export const useNativeService = () => {
|
537
|
-
const [data, setData] = useState<string>('');
|
538
|
-
const [loading, setLoading] = useState(false);
|
539
|
-
|
540
|
-
const fetchNativeData = async () => {
|
541
|
-
setLoading(true);
|
542
|
-
try {
|
543
|
-
const result = await NativeService.getNativeData();
|
544
|
-
setData(result);
|
545
|
-
} catch (error) {
|
546
|
-
console.error('Failed to fetch native data:', error);
|
547
|
-
} finally {
|
548
|
-
setLoading(false);
|
549
|
-
}
|
550
|
-
};
|
551
|
-
|
552
|
-
return { data, loading, fetchNativeData };
|
553
|
-
};
|
554
|
-
```
|
555
|
-
|
556
|
-
## Error Handling and Logging
|
557
|
-
|
558
|
-
### Flutter Error Handling
|
559
|
-
```dart
|
560
|
-
class ErrorHandler {
|
561
|
-
static void handleError(Object error, StackTrace stackTrace) {
|
562
|
-
AppLogger.e('Unhandled error: $error', stackTrace: stackTrace);
|
563
|
-
|
564
|
-
if (error is NetworkException) {
|
565
|
-
// Handle network errors
|
566
|
-
NotificationService.showError('Network connection failed');
|
567
|
-
} else if (error is ValidationException) {
|
568
|
-
// Handle validation errors
|
569
|
-
NotificationService.showError(error.message);
|
570
|
-
} else {
|
571
|
-
// Handle unexpected errors
|
572
|
-
NotificationService.showError('An unexpected error occurred');
|
573
|
-
}
|
574
|
-
}
|
575
|
-
}
|
576
|
-
```
|
577
|
-
|
578
|
-
### React Native Error Handling
|
579
|
-
```typescript
|
580
|
-
class ErrorBoundary extends React.Component<
|
581
|
-
{ children: React.ReactNode },
|
582
|
-
{ hasError: boolean }
|
583
|
-
> {
|
584
|
-
constructor(props: { children: React.ReactNode }) {
|
585
|
-
super(props);
|
586
|
-
this.state = { hasError: false };
|
587
|
-
}
|
588
|
-
|
589
|
-
static getDerivedStateFromError(): { hasError: boolean } {
|
590
|
-
return { hasError: true };
|
591
|
-
}
|
592
|
-
|
593
|
-
componentDidCatch(error: Error, errorInfo: ErrorInfo) {
|
594
|
-
console.error('Error caught by boundary:', error, errorInfo);
|
595
|
-
// Log to crash reporting service
|
596
|
-
}
|
597
|
-
|
598
|
-
render() {
|
599
|
-
if (this.state.hasError) {
|
600
|
-
return <ErrorFallback />;
|
601
|
-
}
|
602
|
-
|
603
|
-
return this.props.children;
|
604
|
-
}
|
605
|
-
}
|
606
|
-
```
|
607
|
-
|
608
|
-
## Security Implementation
|
609
|
-
|
610
|
-
### Data Protection
|
611
|
-
```dart
|
612
|
-
// Flutter secure storage
|
613
|
-
class SecureStorageService {
|
614
|
-
static const _storage = FlutterSecureStorage();
|
615
|
-
|
616
|
-
Future<void> storeSecureData(String key, String value) async {
|
617
|
-
await _storage.write(key: key, value: value);
|
618
|
-
}
|
619
|
-
|
620
|
-
Future<String?> getSecureData(String key) async {
|
621
|
-
return await _storage.read(key: key);
|
622
|
-
}
|
623
|
-
}
|
624
|
-
```
|
625
|
-
|
626
|
-
```typescript
|
627
|
-
// React Native secure storage
|
628
|
-
import AsyncStorage from '@react-native-async-storage/async-storage';
|
629
|
-
import CryptoJS from 'crypto-js';
|
630
|
-
|
631
|
-
class SecureStorageService {
|
632
|
-
private static readonly ENCRYPTION_KEY = 'your-encryption-key';
|
633
|
-
|
634
|
-
static async storeSecureData(key: string, value: string): Promise<void> {
|
635
|
-
const encrypted = CryptoJS.AES.encrypt(value, this.ENCRYPTION_KEY).toString();
|
636
|
-
await AsyncStorage.setItem(key, encrypted);
|
637
|
-
}
|
638
|
-
|
639
|
-
static async getSecureData(key: string): Promise<string | null> {
|
640
|
-
const encrypted = await AsyncStorage.getItem(key);
|
641
|
-
if (!encrypted) return null;
|
642
|
-
|
643
|
-
const decrypted = CryptoJS.AES.decrypt(encrypted, this.ENCRYPTION_KEY);
|
644
|
-
return decrypted.toString(CryptoJS.enc.Utf8);
|
645
|
-
}
|
646
|
-
}
|
647
|
-
```
|
648
|
-
|
649
|
-
I'm ready to implement mobile applications with the highest quality standards, following clean architecture principles and platform-specific best practices. Let me know what you'd like me to build!
|