appiq-solution 1.4.8 β 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +172 -48
- package/bmad-core/agent-teams/team-fullstack.yaml +1 -11
- package/bmad-core/agents/analyst.md +3 -7
- package/bmad-core/agents/architect.md +0 -6
- package/bmad-core/agents/dev.md +5 -24
- package/bmad-core/agents/pm.md +3 -7
- package/bmad-core/agents/qa.md +0 -17
- package/bmad-core/agents/sm.md +3 -8
- package/bmad-core/agents/ux-expert.md +3 -8
- package/bmad-core/data/technical-preferences.md +1 -147
- package/bmad-core/templates/fullstack-architecture-tmpl.yaml +5 -12
- package/bmad-core/workflows/brownfield-fullstack.yaml +1 -15
- package/bmad-core/workflows/greenfield-fullstack.yaml +5 -49
- package/bmad-core/working-in-the-brownfield.md +10 -19
- package/dist/agents/bmad-orchestrator.txt +0 -111
- package/dist/agents/pm.txt +2 -0
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +0 -111
- package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +0 -111
- package/dist/teams/team-all.txt +2 -111
- package/dist/teams/team-fullstack.txt +2 -111
- package/dist/teams/team-ide-minimal.txt +0 -111
- package/dist/teams/team-no-ui.txt +2 -111
- package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev β expansion-packs/appiq-flutter-mobile-dev}/config.yaml +1 -0
- package/package.json +60 -18
- package/tools/cli.js +3 -3
- package/tools/installer/lib/ide-setup.js +11 -0
- package/tools/installer/package-lock.json +2 -2
- package/#NEW APP PROMPT/ARCHITECTURE.md +0 -279
- package/#NEW APP PROMPT/ARCHITECTURE_UNIFIED.md +0 -414
- package/#NEW APP PROMPT/accesibility_prompt.md +0 -103
- package/#NEW APP PROMPT/clean-code.mdc +0 -55
- package/#NEW APP PROMPT/codequality.mdc +0 -47
- package/#NEW APP PROMPT/flutter-ai-rules/LICENSE +0 -21
- package/#NEW APP PROMPT/flutter-ai-rules/README.md +0 -104
- package/#NEW APP PROMPT/flutter-ai-rules/combined/README.md +0 -25
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart.md +0 -192
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart__under_6K.md +0 -99
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_bloc_mocktail.md +0 -308
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_bloc_mocktail__under_6K.md +0 -87
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_change_notifier.md +0 -254
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_change_notifier__under_6K.md +0 -98
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_provider.md +0 -261
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_provider__under_6K.md +0 -105
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_riverpod_mockito.md +0 -371
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_riverpod_mockito__under_6K.md +0 -92
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_bloc.md +0 -287
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_bloc__under_6K.md +0 -68
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_riverpod.md +0 -375
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_riverpod__under_6K.md +0 -106
- package/#NEW APP PROMPT/flutter-ai-rules/media/flutter_ai_rules.png +0 -0
- package/#NEW APP PROMPT/flutter-ai-rules/media/mocktail_md_01.png +0 -0
- package/#NEW APP PROMPT/flutter-ai-rules/media/mocktail_md_02.png +0 -0
- package/#NEW APP PROMPT/flutter-ai-rules/rules/bloc.md +0 -94
- package/#NEW APP PROMPT/flutter-ai-rules/rules/dart_3_updates.md +0 -93
- package/#NEW APP PROMPT/flutter-ai-rules/rules/effective_dart.md +0 -105
- package/#NEW APP PROMPT/flutter-ai-rules/rules/flutter_app_architecture.md +0 -57
- package/#NEW APP PROMPT/flutter-ai-rules/rules/flutter_change_notifier.md +0 -62
- package/#NEW APP PROMPT/flutter-ai-rules/rules/flutter_errors.md +0 -11
- package/#NEW APP PROMPT/flutter-ai-rules/rules/mockito.md +0 -31
- package/#NEW APP PROMPT/flutter-ai-rules/rules/mocktail.md +0 -24
- package/#NEW APP PROMPT/flutter-ai-rules/rules/provider.md +0 -69
- package/#NEW APP PROMPT/flutter-ai-rules/rules/riverpod.md +0 -188
- package/#NEW APP PROMPT/generate ssh.md +0 -4
- package/#NEW APP PROMPT/project_ai_prompt.md +0 -544
- package/#Tools/APPIQ-METHOD/.bmad-config.json +0 -13
- package/#Tools/APPIQ-METHOD/.cursor/commands/analyze.md +0 -27
- package/#Tools/APPIQ-METHOD/.cursor/commands/appiq.md +0 -27
- package/#Tools/APPIQ-METHOD/.cursor/commands/help.md +0 -27
- package/#Tools/APPIQ-METHOD/.cursor/commands/story.md +0 -27
- package/#Tools/APPIQ-METHOD/DEVELOPMENT_GUIDE.md +0 -855
- package/#Tools/APPIQ-METHOD/NPM-README.md +0 -138
- package/#Tools/APPIQ-METHOD/README.md +0 -107
- package/#Tools/APPIQ-METHOD/SMART_WORKFLOW_GUIDE.md +0 -401
- package/#Tools/APPIQ-METHOD/activate-appiq.js +0 -81
- package/#Tools/APPIQ-METHOD/appiq-solution/README.md +0 -226
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-all.yaml +0 -14
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-flutter-mobile.yaml +0 -114
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-fullstack.yaml +0 -28
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-ide-minimal.yaml +0 -10
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-no-ui.yaml +0 -13
- package/#Tools/APPIQ-METHOD/bmad-core/agents/analyst.md +0 -85
- package/#Tools/APPIQ-METHOD/bmad-core/agents/architect.md +0 -90
- package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-master.md +0 -108
- package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-orchestrator.md +0 -150
- package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-smart-launcher.md +0 -170
- package/#Tools/APPIQ-METHOD/bmad-core/agents/dev.md +0 -95
- package/#Tools/APPIQ-METHOD/bmad-core/agents/init-flow-po.md +0 -143
- package/#Tools/APPIQ-METHOD/bmad-core/agents/pm.md +0 -85
- package/#Tools/APPIQ-METHOD/bmad-core/agents/po.md +0 -76
- package/#Tools/APPIQ-METHOD/bmad-core/agents/qa.md +0 -86
- package/#Tools/APPIQ-METHOD/bmad-core/agents/sm.md +0 -67
- package/#Tools/APPIQ-METHOD/bmad-core/agents/ux-expert.md +0 -71
- package/#Tools/APPIQ-METHOD/bmad-core/bmad-core/user-guide.md +0 -0
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/architect-checklist.md +0 -443
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/change-checklist.md +0 -182
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/pm-checklist.md +0 -375
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/po-master-checklist.md +0 -441
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/security-validation-checklist.md +0 -332
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/story-dod-checklist.md +0 -101
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/story-draft-checklist.md +0 -156
- package/#Tools/APPIQ-METHOD/bmad-core/core-config.yaml +0 -20
- package/#Tools/APPIQ-METHOD/bmad-core/core-config.yaml.bak +0 -20
- package/#Tools/APPIQ-METHOD/bmad-core/data/backend-services-integration.md +0 -686
- package/#Tools/APPIQ-METHOD/bmad-core/data/bmad-kb.md +0 -803
- package/#Tools/APPIQ-METHOD/bmad-core/data/brainstorming-techniques.md +0 -36
- package/#Tools/APPIQ-METHOD/bmad-core/data/elicitation-methods.md +0 -134
- package/#Tools/APPIQ-METHOD/bmad-core/data/shadcn-ui-integration.md +0 -388
- package/#Tools/APPIQ-METHOD/bmad-core/data/technical-preferences.md +0 -149
- package/#Tools/APPIQ-METHOD/bmad-core/enhanced-ide-development-workflow.md +0 -43
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/advanced-elicitation.md +0 -117
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/brownfield-create-epic.md +0 -160
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/brownfield-create-story.md +0 -147
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/correct-course.md +0 -70
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-brownfield-story.md +0 -304
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-deep-research-prompt.md +0 -289
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-flutter-story.md +0 -197
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-next-story.md +0 -112
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/document-project.md +0 -341
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/facilitate-brainstorming-session.md +0 -136
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/generate-ai-frontend-prompt.md +0 -51
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/index-docs.md +0 -179
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/intelligent-epic-creation.md +0 -234
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/kb-mode-interaction.md +0 -75
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/review-story.md +0 -145
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/shard-doc.md +0 -187
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/smart-project-analysis.md +0 -289
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/validate-next-story.md +0 -134
- package/#Tools/APPIQ-METHOD/bmad-core/templates/architecture-tmpl.yaml +0 -650
- package/#Tools/APPIQ-METHOD/bmad-core/templates/brainstorming-output-tmpl.yaml +0 -156
- package/#Tools/APPIQ-METHOD/bmad-core/templates/brownfield-architecture-tmpl.yaml +0 -476
- package/#Tools/APPIQ-METHOD/bmad-core/templates/brownfield-prd-tmpl.yaml +0 -280
- package/#Tools/APPIQ-METHOD/bmad-core/templates/competitor-analysis-tmpl.yaml +0 -293
- package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-mobile-prd-tmpl.yaml +0 -330
- package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-story-tmpl.yaml +0 -376
- package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-ui-spec-tmpl.yaml +0 -415
- package/#Tools/APPIQ-METHOD/bmad-core/templates/front-end-architecture-tmpl.yaml +0 -206
- package/#Tools/APPIQ-METHOD/bmad-core/templates/front-end-spec-tmpl.yaml +0 -349
- package/#Tools/APPIQ-METHOD/bmad-core/templates/fullstack-architecture-tmpl.yaml +0 -812
- package/#Tools/APPIQ-METHOD/bmad-core/templates/market-research-tmpl.yaml +0 -252
- package/#Tools/APPIQ-METHOD/bmad-core/templates/prd-tmpl.yaml +0 -202
- package/#Tools/APPIQ-METHOD/bmad-core/templates/project-brief-tmpl.yaml +0 -221
- package/#Tools/APPIQ-METHOD/bmad-core/templates/story-tmpl.yaml +0 -137
- package/#Tools/APPIQ-METHOD/bmad-core/user-guide.md +0 -251
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/brownfield-fullstack.yaml +0 -311
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/brownfield-service.yaml +0 -187
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/brownfield-ui.yaml +0 -197
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/greenfield-fullstack.yaml +0 -284
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/greenfield-service.yaml +0 -206
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/greenfield-ui.yaml +0 -235
- package/#Tools/APPIQ-METHOD/bmad-core/working-in-the-brownfield.md +0 -373
- package/#Tools/APPIQ-METHOD/commands/README.md +0 -28
- package/#Tools/APPIQ-METHOD/commands/analyze.md +0 -27
- package/#Tools/APPIQ-METHOD/commands/appiq.md +0 -27
- package/#Tools/APPIQ-METHOD/commands/help.md +0 -27
- package/#Tools/APPIQ-METHOD/commands/story.md +0 -27
- package/#Tools/APPIQ-METHOD/dist/agents/analyst.txt +0 -2882
- package/#Tools/APPIQ-METHOD/dist/agents/architect.txt +0 -3543
- package/#Tools/APPIQ-METHOD/dist/agents/bmad-master.txt +0 -8756
- package/#Tools/APPIQ-METHOD/dist/agents/bmad-orchestrator.txt +0 -1490
- package/#Tools/APPIQ-METHOD/dist/agents/dev.txt +0 -428
- package/#Tools/APPIQ-METHOD/dist/agents/pm.txt +0 -2229
- package/#Tools/APPIQ-METHOD/dist/agents/po.txt +0 -1364
- package/#Tools/APPIQ-METHOD/dist/agents/qa.txt +0 -386
- package/#Tools/APPIQ-METHOD/dist/agents/sm.txt +0 -668
- package/#Tools/APPIQ-METHOD/dist/agents/ux-expert.txt +0 -701
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +0 -2408
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +0 -1631
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +0 -822
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +0 -10989
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +0 -4047
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +0 -3744
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -465
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +0 -990
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +0 -15467
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +0 -2077
- package/#Tools/APPIQ-METHOD/dist/teams/team-all.txt +0 -11062
- package/#Tools/APPIQ-METHOD/dist/teams/team-fullstack.txt +0 -10392
- package/#Tools/APPIQ-METHOD/dist/teams/team-ide-minimal.txt +0 -3507
- package/#Tools/APPIQ-METHOD/dist/teams/team-no-ui.txt +0 -8951
- package/#Tools/APPIQ-METHOD/install-appiq.sh +0 -41
- package/#Tools/APPIQ-METHOD/package-lock.json +0 -631
- package/#Tools/APPIQ-METHOD/package.json +0 -44
- package/#Tools/APPIQ-METHOD/tasks/todo.md +0 -275
- package/#Tools/APPIQ-METHOD/tools/appiq-installer.js +0 -2711
- package/#Tools/APPIQ-METHOD/tools/bmad-npx-wrapper.js +0 -39
- package/#Tools/APPIQ-METHOD/tools/builders/web-builder.js +0 -681
- package/#Tools/APPIQ-METHOD/tools/bump-all-versions.js +0 -106
- package/#Tools/APPIQ-METHOD/tools/bump-expansion-version.js +0 -83
- package/#Tools/APPIQ-METHOD/tools/cli.js +0 -152
- package/#Tools/APPIQ-METHOD/tools/epic-solution-installer.js +0 -536
- package/#Tools/APPIQ-METHOD/tools/flattener/main.js +0 -570
- package/#Tools/APPIQ-METHOD/tools/installer/README.md +0 -8
- package/#Tools/APPIQ-METHOD/tools/installer/bin/bmad.js +0 -483
- package/#Tools/APPIQ-METHOD/tools/installer/config/ide-agent-config.yaml +0 -58
- package/#Tools/APPIQ-METHOD/tools/installer/config/install.config.yaml +0 -92
- package/#Tools/APPIQ-METHOD/tools/installer/lib/config-loader.js +0 -253
- package/#Tools/APPIQ-METHOD/tools/installer/lib/file-manager.js +0 -411
- package/#Tools/APPIQ-METHOD/tools/installer/lib/ide-base-setup.js +0 -227
- package/#Tools/APPIQ-METHOD/tools/installer/lib/ide-setup.js +0 -1096
- package/#Tools/APPIQ-METHOD/tools/installer/lib/installer.js +0 -1772
- package/#Tools/APPIQ-METHOD/tools/installer/lib/memory-profiler.js +0 -224
- package/#Tools/APPIQ-METHOD/tools/installer/lib/module-manager.js +0 -110
- package/#Tools/APPIQ-METHOD/tools/installer/lib/resource-locator.js +0 -310
- package/#Tools/APPIQ-METHOD/tools/installer/package-lock.json +0 -906
- package/#Tools/APPIQ-METHOD/tools/installer/package.json +0 -43
- package/#Tools/APPIQ-METHOD/tools/lib/dependency-resolver.js +0 -179
- package/#Tools/APPIQ-METHOD/tools/lib/yaml-utils.js +0 -29
- package/#Tools/APPIQ-METHOD/tools/md-assets/web-agent-startup-instructions.md +0 -39
- package/#Tools/APPIQ-METHOD/tools/semantic-release-sync-installer.js +0 -30
- package/#Tools/APPIQ-METHOD/tools/setup-ide-commands.js +0 -348
- package/#Tools/APPIQ-METHOD/tools/smart-installer.js +0 -592
- package/#Tools/APPIQ-METHOD/tools/sync-installer-version.js +0 -34
- package/#Tools/APPIQ-METHOD/tools/update-expansion-version.js +0 -54
- package/#Tools/APPIQ-METHOD/tools/upgraders/v3-to-v4-upgrader.js +0 -763
- package/#Tools/APPIQ-METHOD/tools/version-bump.js +0 -79
- package/#Tools/APPIQ-METHOD/tools/yaml-format.js +0 -240
- package/#Tools/SkyReels-V2/.pre-commit-config.yaml +0 -25
- package/#Tools/SkyReels-V2/LICENSE.txt +0 -38
- package/#Tools/SkyReels-V2/README.md +0 -766
- package/#Tools/SkyReels-V2/generate_video.py +0 -161
- package/#Tools/SkyReels-V2/generate_video_df.py +0 -220
- package/#Tools/SkyReels-V2/requirements.txt +0 -16
- package/#Tools/SkyReels-V2/skycaptioner_v1/README.md +0 -278
- package/#Tools/SkyReels-V2/skycaptioner_v1/examples/test.csv +0 -5
- package/#Tools/SkyReels-V2/skycaptioner_v1/examples/test_result.csv +0 -5
- package/#Tools/SkyReels-V2/skycaptioner_v1/infer_fusion_caption.sh +0 -9
- package/#Tools/SkyReels-V2/skycaptioner_v1/infer_struct_caption.sh +0 -8
- package/#Tools/SkyReels-V2/skycaptioner_v1/requirements.txt +0 -3
- package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/gradio_fusion_caption.py +0 -146
- package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/gradio_struct_caption.py +0 -92
- package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/utils.py +0 -19
- package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/vllm_fusion_caption.py +0 -256
- package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/vllm_struct_caption.py +0 -156
- package/#Tools/SkyReels-V2/skyreels_v2_infer/__init__.py +0 -1
- package/#Tools/SkyReels-V2/skyreels_v2_infer/distributed/__init__.py +0 -0
- package/#Tools/SkyReels-V2/skyreels_v2_infer/distributed/xdit_context_parallel.py +0 -286
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/__init__.py +0 -69
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/attention.py +0 -179
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/clip.py +0 -525
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/t5.py +0 -454
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/tokenizers.py +0 -78
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/transformer.py +0 -839
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/vae.py +0 -639
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/xlm_roberta.py +0 -165
- package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/__init__.py +0 -5
- package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/diffusion_forcing_pipeline.py +0 -659
- package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/image2video_pipeline.py +0 -156
- package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/prompt_enhancer.py +0 -65
- package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/text2video_pipeline.py +0 -110
- package/#Tools/SkyReels-V2/skyreels_v2_infer/scheduler/__init__.py +0 -0
- package/#Tools/SkyReels-V2/skyreels_v2_infer/scheduler/fm_solvers_unipc.py +0 -759
- package/#Tools/SuperClaude/.claude/commands/analyze.md +0 -36
- package/#Tools/SuperClaude/.claude/commands/build.md +0 -35
- package/#Tools/SuperClaude/.claude/commands/cleanup.md +0 -46
- package/#Tools/SuperClaude/.claude/commands/deploy.md +0 -55
- package/#Tools/SuperClaude/.claude/commands/design.md +0 -91
- package/#Tools/SuperClaude/.claude/commands/dev-setup.md +0 -37
- package/#Tools/SuperClaude/.claude/commands/document.md +0 -99
- package/#Tools/SuperClaude/.claude/commands/estimate.md +0 -69
- package/#Tools/SuperClaude/.claude/commands/explain.md +0 -85
- package/#Tools/SuperClaude/.claude/commands/git.md +0 -47
- package/#Tools/SuperClaude/.claude/commands/improve.md +0 -162
- package/#Tools/SuperClaude/.claude/commands/index.md +0 -159
- package/#Tools/SuperClaude/.claude/commands/load.md +0 -65
- package/#Tools/SuperClaude/.claude/commands/migrate.md +0 -76
- package/#Tools/SuperClaude/.claude/commands/scan.md +0 -163
- package/#Tools/SuperClaude/.claude/commands/shared/ambiguity-check.yml +0 -40
- package/#Tools/SuperClaude/.claude/commands/shared/audit.yml +0 -21
- package/#Tools/SuperClaude/.claude/commands/shared/checkpoint.yml +0 -28
- package/#Tools/SuperClaude/.claude/commands/shared/cleanup-patterns.yml +0 -107
- package/#Tools/SuperClaude/.claude/commands/shared/command-memory.yml +0 -52
- package/#Tools/SuperClaude/.claude/commands/shared/command-templates.yml +0 -167
- package/#Tools/SuperClaude/.claude/commands/shared/config-validator.yml +0 -206
- package/#Tools/SuperClaude/.claude/commands/shared/constants.yml +0 -311
- package/#Tools/SuperClaude/.claude/commands/shared/documentation-dirs.yml +0 -134
- package/#Tools/SuperClaude/.claude/commands/shared/error-handling.yml +0 -341
- package/#Tools/SuperClaude/.claude/commands/shared/evidence.yml +0 -75
- package/#Tools/SuperClaude/.claude/commands/shared/execution-lifecycle.yml +0 -277
- package/#Tools/SuperClaude/.claude/commands/shared/git-operations.yml +0 -217
- package/#Tools/SuperClaude/.claude/commands/shared/git-workflow.yml +0 -37
- package/#Tools/SuperClaude/.claude/commands/shared/implementation.yml +0 -199
- package/#Tools/SuperClaude/.claude/commands/shared/loading-config.yml +0 -73
- package/#Tools/SuperClaude/.claude/commands/shared/mcp-flags.yml +0 -109
- package/#Tools/SuperClaude/.claude/commands/shared/migration-report.md +0 -165
- package/#Tools/SuperClaude/.claude/commands/shared/patterns.yml +0 -155
- package/#Tools/SuperClaude/.claude/commands/shared/performance.yml +0 -317
- package/#Tools/SuperClaude/.claude/commands/shared/planning-mode.yml +0 -51
- package/#Tools/SuperClaude/.claude/commands/shared/research-first.yml +0 -278
- package/#Tools/SuperClaude/.claude/commands/shared/session-recovery.yml +0 -144
- package/#Tools/SuperClaude/.claude/commands/shared/severity-levels.yml +0 -252
- package/#Tools/SuperClaude/.claude/commands/shared/task-system.yml +0 -380
- package/#Tools/SuperClaude/.claude/commands/shared/task-ultracompressed.yml +0 -88
- package/#Tools/SuperClaude/.claude/commands/shared/templates/feature-template.md +0 -59
- package/#Tools/SuperClaude/.claude/commands/shared/templates/task-ultracompressed.md +0 -26
- package/#Tools/SuperClaude/.claude/commands/shared/thinking-modes.yml +0 -61
- package/#Tools/SuperClaude/.claude/commands/shared/ultracompressed.yml +0 -97
- package/#Tools/SuperClaude/.claude/commands/shared/user-experience.yml +0 -208
- package/#Tools/SuperClaude/.claude/commands/shared/validation.yml +0 -54
- package/#Tools/SuperClaude/.claude/commands/shared/workflow-chains.yml +0 -138
- package/#Tools/SuperClaude/.claude/commands/spawn.md +0 -106
- package/#Tools/SuperClaude/.claude/commands/task.md +0 -110
- package/#Tools/SuperClaude/.claude/commands/test.md +0 -67
- package/#Tools/SuperClaude/.claude/commands/troubleshoot.md +0 -93
- package/#Tools/SuperClaude/.github/ISSUE_TEMPLATE/bug_report.yml +0 -114
- package/#Tools/SuperClaude/.github/ISSUE_TEMPLATE/feature_request.yml +0 -119
- package/#Tools/SuperClaude/.github/ISSUE_TEMPLATE/question.yml +0 -87
- package/#Tools/SuperClaude/.github/pull_request_template.md +0 -62
- package/#Tools/SuperClaude/CHANGELOG.md +0 -109
- package/#Tools/SuperClaude/CLAUDE.md +0 -95
- package/#Tools/SuperClaude/CODE_OF_CONDUCT.md +0 -45
- package/#Tools/SuperClaude/CONTRIBUTING.md +0 -225
- package/#Tools/SuperClaude/Commands_Cheat_Sheet.md +0 -160
- package/#Tools/SuperClaude/LICENSE +0 -21
- package/#Tools/SuperClaude/MCP.md +0 -117
- package/#Tools/SuperClaude/PERSONAS.md +0 -115
- package/#Tools/SuperClaude/README.md +0 -249
- package/#Tools/SuperClaude/RULES.md +0 -220
- package/#Tools/SuperClaude/SECURITY.md +0 -91
- package/#Tools/SuperClaude/install.sh +0 -296
- package/#Tools/claude-talk-to-figma-mcp/.github/workflows/test.yml +0 -36
- package/#Tools/claude-talk-to-figma-mcp/CHANGELOG.md +0 -88
- package/#Tools/claude-talk-to-figma-mcp/Dockerfile +0 -16
- package/#Tools/claude-talk-to-figma-mcp/LICENSE +0 -22
- package/#Tools/claude-talk-to-figma-mcp/TESTING.md +0 -216
- package/#Tools/claude-talk-to-figma-mcp/bun.lock +0 -964
- package/#Tools/claude-talk-to-figma-mcp/context/01/00-analisis.md +0 -151
- package/#Tools/claude-talk-to-figma-mcp/context/01/01-tools-refactor.md +0 -370
- package/#Tools/claude-talk-to-figma-mcp/context/01/02-tools-refactor-backlog.md +0 -253
- package/#Tools/claude-talk-to-figma-mcp/context/01/03-tools-refactor-test.md +0 -138
- package/#Tools/claude-talk-to-figma-mcp/context/01/04-tools-refactor-channel-error.md +0 -133
- package/#Tools/claude-talk-to-figma-mcp/context/01/04-tools-refactor-test-backlog.md +0 -0
- package/#Tools/claude-talk-to-figma-mcp/context/01/05-tools-refactor-four-tools-error.md +0 -356
- package/#Tools/claude-talk-to-figma-mcp/context/01/06-tools-refactor-four-tools-error-backlog.md +0 -425
- package/#Tools/claude-talk-to-figma-mcp/context/01/prompt-dev-nodejs-bun.md +0 -105
- package/#Tools/claude-talk-to-figma-mcp/context/01-prompt.md +0 -135
- package/#Tools/claude-talk-to-figma-mcp/context/02/00-analisis.md +0 -131
- package/#Tools/claude-talk-to-figma-mcp/context/02/01-plan.md +0 -162
- package/#Tools/claude-talk-to-figma-mcp/context/02/02-backlog.md +0 -241
- package/#Tools/claude-talk-to-figma-mcp/context/02-analisis.md +0 -202
- package/#Tools/claude-talk-to-figma-mcp/context/99-notas.md +0 -139
- package/#Tools/claude-talk-to-figma-mcp/context/pr-14/pr-14-analisis.md +0 -221
- package/#Tools/claude-talk-to-figma-mcp/context/pr-14/pr-14-claude-tests.md +0 -152
- package/#Tools/claude-talk-to-figma-mcp/context/pr-14/pr-14-npm-publishing.md +0 -272
- package/#Tools/claude-talk-to-figma-mcp/images/claude-talk-to-figma.png +0 -0
- package/#Tools/claude-talk-to-figma-mcp/images/mcp-figma-plugin-configuration.png +0 -0
- package/#Tools/claude-talk-to-figma-mcp/jest.config.cjs +0 -25
- package/#Tools/claude-talk-to-figma-mcp/package.json +0 -67
- package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-especialista-es.md +0 -82
- package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-especialista-gal.md +0 -80
- package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-especialista-pt.md +0 -80
- package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-specialist.md +0 -80
- package/#Tools/claude-talk-to-figma-mcp/readme.md +0 -307
- package/#Tools/claude-talk-to-figma-mcp/scripts/configure-claude.js +0 -90
- package/#Tools/claude-talk-to-figma-mcp/scripts/setup.sh +0 -30
- package/#Tools/claude-talk-to-figma-mcp/scripts/test-integration.js +0 -339
- package/#Tools/claude-talk-to-figma-mcp/smithery.yaml +0 -26
- package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/code.js +0 -3295
- package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/manifest.json +0 -24
- package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/setcharacters.js +0 -215
- package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/ui.html +0 -656
- package/#Tools/claude-talk-to-figma-mcp/src/socket.ts +0 -349
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/bun.lock +0 -246
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/config/config.ts +0 -22
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/package.json +0 -31
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/prompts/index.ts +0 -297
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/server.ts +0 -62
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/component-tools.ts +0 -48
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/creation-tools.ts +0 -620
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/document-tools.ts +0 -390
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/index.ts +0 -28
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/modification-tools.ts +0 -408
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/text-tools.ts +0 -531
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tsconfig.json +0 -18
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/types/color.ts +0 -13
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/types/index.ts +0 -87
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/defaults.ts +0 -23
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/figma-helpers.ts +0 -142
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/logger.ts +0 -8
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/websocket.ts +0 -258
- package/#Tools/claude-talk-to-figma-mcp/tests/fixtures/test-data.ts +0 -32
- package/#Tools/claude-talk-to-figma-mcp/tests/integration/set-fill-color.test.ts +0 -309
- package/#Tools/claude-talk-to-figma-mcp/tests/integration/set-stroke-color.test.ts +0 -387
- package/#Tools/claude-talk-to-figma-mcp/tests/setup.ts +0 -7
- package/#Tools/claude-talk-to-figma-mcp/tests/unit/utils/defaults.test.ts +0 -131
- package/#Tools/claude-talk-to-figma-mcp/tsconfig.json +0 -17
- package/#Tools/claude-talk-to-figma-mcp/tsup.config.ts +0 -14
- package/#Tools/jwt creator/AuthKey_MZ7UQGFV2Q.p8 +0 -6
- package/#Tools/jwt creator/generate_apple_jwt.js +0 -18
- package/#Tools/jwt creator/node_modules/.package-lock.json +0 -145
- package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/.travis.yml +0 -4
- package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/LICENSE.txt +0 -12
- package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/README.md +0 -50
- package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/index.js +0 -41
- package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/package.json +0 -21
- package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/test.js +0 -42
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/CODEOWNERS +0 -1
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/LICENSE +0 -201
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/README.md +0 -65
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/package.json +0 -46
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts +0 -17
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js +0 -187
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js +0 -23
- package/#Tools/jwt creator/node_modules/jsonwebtoken/LICENSE +0 -21
- package/#Tools/jwt creator/node_modules/jsonwebtoken/README.md +0 -396
- package/#Tools/jwt creator/node_modules/jsonwebtoken/decode.js +0 -30
- package/#Tools/jwt creator/node_modules/jsonwebtoken/index.js +0 -8
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/JsonWebTokenError.js +0 -14
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/NotBeforeError.js +0 -13
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/TokenExpiredError.js +0 -13
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js +0 -3
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/psSupported.js +0 -3
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js +0 -3
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/timespan.js +0 -18
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js +0 -66
- package/#Tools/jwt creator/node_modules/jsonwebtoken/package.json +0 -71
- package/#Tools/jwt creator/node_modules/jsonwebtoken/sign.js +0 -253
- package/#Tools/jwt creator/node_modules/jsonwebtoken/verify.js +0 -263
- package/#Tools/jwt creator/node_modules/jwa/LICENSE +0 -17
- package/#Tools/jwt creator/node_modules/jwa/README.md +0 -150
- package/#Tools/jwt creator/node_modules/jwa/index.js +0 -266
- package/#Tools/jwt creator/node_modules/jwa/package.json +0 -37
- package/#Tools/jwt creator/node_modules/jws/CHANGELOG.md +0 -34
- package/#Tools/jwt creator/node_modules/jws/LICENSE +0 -17
- package/#Tools/jwt creator/node_modules/jws/index.js +0 -22
- package/#Tools/jwt creator/node_modules/jws/lib/data-stream.js +0 -55
- package/#Tools/jwt creator/node_modules/jws/lib/sign-stream.js +0 -78
- package/#Tools/jwt creator/node_modules/jws/lib/tostring.js +0 -10
- package/#Tools/jwt creator/node_modules/jws/lib/verify-stream.js +0 -120
- package/#Tools/jwt creator/node_modules/jws/package.json +0 -34
- package/#Tools/jwt creator/node_modules/jws/readme.md +0 -255
- package/#Tools/jwt creator/node_modules/lodash.includes/LICENSE +0 -47
- package/#Tools/jwt creator/node_modules/lodash.includes/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.includes/index.js +0 -745
- package/#Tools/jwt creator/node_modules/lodash.includes/package.json +0 -17
- package/#Tools/jwt creator/node_modules/lodash.isboolean/LICENSE +0 -22
- package/#Tools/jwt creator/node_modules/lodash.isboolean/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.isboolean/index.js +0 -70
- package/#Tools/jwt creator/node_modules/lodash.isboolean/package.json +0 -17
- package/#Tools/jwt creator/node_modules/lodash.isinteger/LICENSE +0 -47
- package/#Tools/jwt creator/node_modules/lodash.isinteger/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.isinteger/index.js +0 -265
- package/#Tools/jwt creator/node_modules/lodash.isinteger/package.json +0 -17
- package/#Tools/jwt creator/node_modules/lodash.isnumber/LICENSE +0 -22
- package/#Tools/jwt creator/node_modules/lodash.isnumber/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.isnumber/index.js +0 -79
- package/#Tools/jwt creator/node_modules/lodash.isnumber/package.json +0 -17
- package/#Tools/jwt creator/node_modules/lodash.isplainobject/LICENSE +0 -47
- package/#Tools/jwt creator/node_modules/lodash.isplainobject/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.isplainobject/index.js +0 -139
- package/#Tools/jwt creator/node_modules/lodash.isplainobject/package.json +0 -17
- package/#Tools/jwt creator/node_modules/lodash.isstring/LICENSE +0 -22
- package/#Tools/jwt creator/node_modules/lodash.isstring/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.isstring/index.js +0 -95
- package/#Tools/jwt creator/node_modules/lodash.isstring/package.json +0 -17
- package/#Tools/jwt creator/node_modules/lodash.once/LICENSE +0 -47
- package/#Tools/jwt creator/node_modules/lodash.once/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.once/index.js +0 -294
- package/#Tools/jwt creator/node_modules/lodash.once/package.json +0 -17
- package/#Tools/jwt creator/node_modules/ms/index.js +0 -162
- package/#Tools/jwt creator/node_modules/ms/license.md +0 -21
- package/#Tools/jwt creator/node_modules/ms/package.json +0 -38
- package/#Tools/jwt creator/node_modules/ms/readme.md +0 -59
- package/#Tools/jwt creator/node_modules/safe-buffer/LICENSE +0 -21
- package/#Tools/jwt creator/node_modules/safe-buffer/README.md +0 -584
- package/#Tools/jwt creator/node_modules/safe-buffer/index.d.ts +0 -187
- package/#Tools/jwt creator/node_modules/safe-buffer/index.js +0 -65
- package/#Tools/jwt creator/node_modules/safe-buffer/package.json +0 -51
- package/#Tools/jwt creator/node_modules/semver/LICENSE +0 -15
- package/#Tools/jwt creator/node_modules/semver/README.md +0 -664
- package/#Tools/jwt creator/node_modules/semver/bin/semver.js +0 -191
- package/#Tools/jwt creator/node_modules/semver/classes/comparator.js +0 -143
- package/#Tools/jwt creator/node_modules/semver/classes/index.js +0 -7
- package/#Tools/jwt creator/node_modules/semver/classes/range.js +0 -556
- package/#Tools/jwt creator/node_modules/semver/classes/semver.js +0 -319
- package/#Tools/jwt creator/node_modules/semver/functions/clean.js +0 -8
- package/#Tools/jwt creator/node_modules/semver/functions/cmp.js +0 -54
- package/#Tools/jwt creator/node_modules/semver/functions/coerce.js +0 -62
- package/#Tools/jwt creator/node_modules/semver/functions/compare-build.js +0 -9
- package/#Tools/jwt creator/node_modules/semver/functions/compare-loose.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/compare.js +0 -7
- package/#Tools/jwt creator/node_modules/semver/functions/diff.js +0 -60
- package/#Tools/jwt creator/node_modules/semver/functions/eq.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/gt.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/gte.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/inc.js +0 -21
- package/#Tools/jwt creator/node_modules/semver/functions/lt.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/lte.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/major.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/minor.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/neq.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/parse.js +0 -18
- package/#Tools/jwt creator/node_modules/semver/functions/patch.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/prerelease.js +0 -8
- package/#Tools/jwt creator/node_modules/semver/functions/rcompare.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/rsort.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/satisfies.js +0 -12
- package/#Tools/jwt creator/node_modules/semver/functions/sort.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/valid.js +0 -8
- package/#Tools/jwt creator/node_modules/semver/index.js +0 -91
- package/#Tools/jwt creator/node_modules/semver/internal/constants.js +0 -37
- package/#Tools/jwt creator/node_modules/semver/internal/debug.js +0 -11
- package/#Tools/jwt creator/node_modules/semver/internal/identifiers.js +0 -25
- package/#Tools/jwt creator/node_modules/semver/internal/lrucache.js +0 -42
- package/#Tools/jwt creator/node_modules/semver/internal/parse-options.js +0 -17
- package/#Tools/jwt creator/node_modules/semver/internal/re.js +0 -223
- package/#Tools/jwt creator/node_modules/semver/package.json +0 -78
- package/#Tools/jwt creator/node_modules/semver/preload.js +0 -4
- package/#Tools/jwt creator/node_modules/semver/range.bnf +0 -16
- package/#Tools/jwt creator/node_modules/semver/ranges/gtr.js +0 -6
- package/#Tools/jwt creator/node_modules/semver/ranges/intersects.js +0 -9
- package/#Tools/jwt creator/node_modules/semver/ranges/ltr.js +0 -6
- package/#Tools/jwt creator/node_modules/semver/ranges/max-satisfying.js +0 -27
- package/#Tools/jwt creator/node_modules/semver/ranges/min-satisfying.js +0 -26
- package/#Tools/jwt creator/node_modules/semver/ranges/min-version.js +0 -63
- package/#Tools/jwt creator/node_modules/semver/ranges/outside.js +0 -82
- package/#Tools/jwt creator/node_modules/semver/ranges/simplify.js +0 -49
- package/#Tools/jwt creator/node_modules/semver/ranges/subset.js +0 -249
- package/#Tools/jwt creator/node_modules/semver/ranges/to-comparators.js +0 -10
- package/#Tools/jwt creator/node_modules/semver/ranges/valid.js +0 -13
- package/#Tools/jwt creator/package-lock.json +0 -150
- package/#Tools/jwt creator/package.json +0 -5
- package/#Tools/package.json +0 -94
- package/SuperClaude/.claude/commands/analyze.md +0 -36
- package/SuperClaude/.claude/commands/build.md +0 -35
- package/SuperClaude/.claude/commands/cleanup.md +0 -46
- package/SuperClaude/.claude/commands/deploy.md +0 -55
- package/SuperClaude/.claude/commands/design.md +0 -91
- package/SuperClaude/.claude/commands/dev-setup.md +0 -37
- package/SuperClaude/.claude/commands/document.md +0 -99
- package/SuperClaude/.claude/commands/estimate.md +0 -69
- package/SuperClaude/.claude/commands/explain.md +0 -85
- package/SuperClaude/.claude/commands/git.md +0 -47
- package/SuperClaude/.claude/commands/improve.md +0 -162
- package/SuperClaude/.claude/commands/index.md +0 -159
- package/SuperClaude/.claude/commands/load.md +0 -65
- package/SuperClaude/.claude/commands/migrate.md +0 -76
- package/SuperClaude/.claude/commands/scan.md +0 -163
- package/SuperClaude/.claude/commands/shared/ambiguity-check.yml +0 -40
- package/SuperClaude/.claude/commands/shared/audit.yml +0 -21
- package/SuperClaude/.claude/commands/shared/checkpoint.yml +0 -28
- package/SuperClaude/.claude/commands/shared/cleanup-patterns.yml +0 -107
- package/SuperClaude/.claude/commands/shared/command-memory.yml +0 -52
- package/SuperClaude/.claude/commands/shared/command-templates.yml +0 -167
- package/SuperClaude/.claude/commands/shared/config-validator.yml +0 -206
- package/SuperClaude/.claude/commands/shared/constants.yml +0 -311
- package/SuperClaude/.claude/commands/shared/documentation-dirs.yml +0 -134
- package/SuperClaude/.claude/commands/shared/error-handling.yml +0 -341
- package/SuperClaude/.claude/commands/shared/evidence.yml +0 -75
- package/SuperClaude/.claude/commands/shared/execution-lifecycle.yml +0 -277
- package/SuperClaude/.claude/commands/shared/git-operations.yml +0 -217
- package/SuperClaude/.claude/commands/shared/git-workflow.yml +0 -37
- package/SuperClaude/.claude/commands/shared/implementation.yml +0 -199
- package/SuperClaude/.claude/commands/shared/loading-config.yml +0 -73
- package/SuperClaude/.claude/commands/shared/mcp-flags.yml +0 -109
- package/SuperClaude/.claude/commands/shared/migration-report.md +0 -165
- package/SuperClaude/.claude/commands/shared/patterns.yml +0 -155
- package/SuperClaude/.claude/commands/shared/performance.yml +0 -317
- package/SuperClaude/.claude/commands/shared/planning-mode.yml +0 -51
- package/SuperClaude/.claude/commands/shared/research-first.yml +0 -278
- package/SuperClaude/.claude/commands/shared/session-recovery.yml +0 -144
- package/SuperClaude/.claude/commands/shared/severity-levels.yml +0 -252
- package/SuperClaude/.claude/commands/shared/task-system.yml +0 -380
- package/SuperClaude/.claude/commands/shared/task-ultracompressed.yml +0 -88
- package/SuperClaude/.claude/commands/shared/templates/feature-template.md +0 -59
- package/SuperClaude/.claude/commands/shared/templates/task-ultracompressed.md +0 -26
- package/SuperClaude/.claude/commands/shared/thinking-modes.yml +0 -61
- package/SuperClaude/.claude/commands/shared/ultracompressed.yml +0 -97
- package/SuperClaude/.claude/commands/shared/user-experience.yml +0 -208
- package/SuperClaude/.claude/commands/shared/validation.yml +0 -54
- package/SuperClaude/.claude/commands/shared/workflow-chains.yml +0 -138
- package/SuperClaude/.claude/commands/spawn.md +0 -106
- package/SuperClaude/.claude/commands/task.md +0 -110
- package/SuperClaude/.claude/commands/test.md +0 -67
- package/SuperClaude/.claude/commands/troubleshoot.md +0 -93
- package/SuperClaude/.github/ISSUE_TEMPLATE/bug_report.yml +0 -114
- package/SuperClaude/.github/ISSUE_TEMPLATE/feature_request.yml +0 -119
- package/SuperClaude/.github/ISSUE_TEMPLATE/question.yml +0 -87
- package/SuperClaude/.github/pull_request_template.md +0 -62
- package/SuperClaude/CHANGELOG.md +0 -109
- package/SuperClaude/CLAUDE.md +0 -95
- package/SuperClaude/CODE_OF_CONDUCT.md +0 -45
- package/SuperClaude/CONTRIBUTING.md +0 -225
- package/SuperClaude/Commands_Cheat_Sheet.md +0 -160
- package/SuperClaude/LICENSE +0 -21
- package/SuperClaude/MCP.md +0 -117
- package/SuperClaude/PERSONAS.md +0 -115
- package/SuperClaude/README.md +0 -249
- package/SuperClaude/RULES.md +0 -220
- package/SuperClaude/SECURITY.md +0 -91
- package/SuperClaude/install.sh +0 -296
- package/appiq-mcp installer/How-to.md +0 -250
- package/appiq-mcp installer/LICENSE +0 -21
- package/appiq-mcp installer/README.md +0 -235
- package/appiq-mcp installer/index.js +0 -672
- package/appiq-mcp installer/my_mcps.md +0 -105
- package/appiq-mcp installer/package-lock.json +0 -708
- package/appiq-mcp installer/package.json +0 -46
- package/appiq-mcp installer/test-install.bat +0 -60
- package/appiq-mcp installer/test-install.sh +0 -55
- package/appiq-mcp installer/test-load.js +0 -40
- package/bmad-core/agent-teams/team-flutter-mobile.yaml +0 -114
- package/bmad-core/agents/bmad-smart-launcher.md +0 -170
- package/bmad-core/agents/init-flow-po.md +0 -143
- package/bmad-core/checklists/security-validation-checklist.md +0 -332
- package/bmad-core/core-config.yaml.bak +0 -20
- package/bmad-core/data/backend-services-integration.md +0 -686
- package/bmad-core/data/shadcn-ui-integration.md +0 -388
- package/bmad-core/tasks/create-flutter-story.md +0 -197
- package/bmad-core/tasks/intelligent-epic-creation.md +0 -234
- package/bmad-core/tasks/smart-project-analysis.md +0 -289
- package/bmad-core/templates/flutter-mobile-prd-tmpl.yaml +0 -330
- package/bmad-core/templates/flutter-story-tmpl.yaml +0 -376
- package/bmad-core/templates/flutter-ui-spec-tmpl.yaml +0 -415
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.txt +0 -1530
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.txt +0 -322
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.txt +0 -692
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.txt +0 -382
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.txt +0 -665
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.txt +0 -1070
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.txt +0 -1494
- package/dist/expansion-packs/bmad-mobile-app-dev/teams/mobile-team-cross-platform.txt +0 -15613
- package/flutter/CLAUDE.md +0 -58
- package/flutter/punkt.claude/New Folder With Items/channel.md +0 -221
- package/flutter/punkt.claude/New Folder With Items/commands/add-translations.md +0 -12
- package/flutter/punkt.claude/New Folder With Items/commands/create-feature.md +0 -168
- package/flutter/punkt.claude/New Folder With Items/commands/explain-codebase.md +0 -1
- package/flutter/punkt.claude/New Folder With Items/commands/feature-business-logic.md +0 -551
- package/flutter/punkt.claude/New Folder With Items/commands/feature-data-layer.md +0 -924
- package/flutter/punkt.claude/New Folder With Items/commands/feature-domain-layer.md +0 -540
- package/flutter/punkt.claude/New Folder With Items/commands/feature-integration.md +0 -493
- package/flutter/punkt.claude/New Folder With Items/commands/feature-localization.md +0 -427
- package/flutter/punkt.claude/New Folder With Items/commands/feature-ui-layer.md +0 -300
- package/flutter/punkt.claude/New Folder With Items/commands/git-commit.md +0 -3
- package/flutter/punkt.claude/New Folder With Items/commands/search-web.md +0 -1
- package/flutter/punkt.claude/punkt.claude/channel.md +0 -225
- package/flutter/punkt.claude/punkt.claude/commands/add-translations.md +0 -60
- package/flutter/punkt.claude/punkt.claude/commands/bug-fix.md +0 -32
- package/flutter/punkt.claude/punkt.claude/commands/checkdev.md +0 -122
- package/flutter/punkt.claude/punkt.claude/commands/create-feature.md +0 -174
- package/flutter/punkt.claude/punkt.claude/commands/dev.md +0 -79
- package/flutter/punkt.claude/punkt.claude/commands/explain-codebase.md +0 -1
- package/flutter/punkt.claude/punkt.claude/commands/feature-business-logic.md +0 -430
- package/flutter/punkt.claude/punkt.claude/commands/feature-data-layer.md +0 -572
- package/flutter/punkt.claude/punkt.claude/commands/feature-domain-layer.md +0 -537
- package/flutter/punkt.claude/punkt.claude/commands/feature-integration.md +0 -493
- package/flutter/punkt.claude/punkt.claude/commands/feature-localization.md +0 -427
- package/flutter/punkt.claude/punkt.claude/commands/feature-ui-layer.md +0 -831
- package/flutter/punkt.claude/punkt.claude/commands/git-commit.md +0 -3
- package/flutter/punkt.claude/punkt.claude/commands/manage-translations.md +0 -433
- package/flutter/punkt.claude/punkt.claude/commands/search-web.md +0 -1
- package/flutter/punkt.claude/punkt.claude/developer_check.md +0 -121
- package/tools/appiq-installer.js +0 -2711
- package/tools/epic-solution-installer.js +0 -536
- package/tools/setup-ide-commands.js +0 -348
- package/tools/smart-installer.js +0 -592
- package/web/CLAUDE.md +0 -58
- /package/{#Tools/APPIQ-METHOD/.github β .github}/FUNDING.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/.github β .github}/ISSUE_TEMPLATE/bug_report.md +0 -0
- /package/{#Tools/APPIQ-METHOD/.github β .github}/ISSUE_TEMPLATE/feature_request.md +0 -0
- /package/{#Tools/APPIQ-METHOD/.github β .github}/workflows/release.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/.releaserc.json β .releaserc.json} +0 -0
- /package/{#Tools/APPIQ-METHOD/.vscode β .vscode}/settings.json +0 -0
- /package/{#Tools/APPIQ-METHOD/CHANGELOG.md β CHANGELOG.md} +0 -0
- /package/{#Tools/APPIQ-METHOD/CONTRIBUTING.md β CONTRIBUTING.md} +0 -0
- /package/{#Tools/APPIQ-METHOD/LICENSE β LICENSE} +0 -0
- /package/{#Tools/APPIQ-METHOD/common β common}/tasks/create-doc.md +0 -0
- /package/{#Tools/APPIQ-METHOD/common β common}/tasks/execute-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/common β common}/utils/bmad-doc-template.md +0 -0
- /package/{#Tools/APPIQ-METHOD/common β common}/utils/workflow-management.md +0 -0
- /package/{#Tools/APPIQ-METHOD/docs β docs}/GUIDING-PRINCIPLES.md +0 -0
- /package/{#Tools/APPIQ-METHOD/docs β docs}/core-architecture.md +0 -0
- /package/{#Tools/APPIQ-METHOD/docs β docs}/expansion-packs.md +0 -0
- /package/{#Tools/APPIQ-METHOD/docs β docs}/how-to-contribute-with-pull-requests.md +0 -0
- /package/{#Tools/APPIQ-METHOD/docs β docs}/versioning-and-releases.md +0 -0
- /package/{#Tools/APPIQ-METHOD/docs β docs}/versions.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/README.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev β expansion-packs/appiq-flutter-mobile-dev}/agent-teams/flutter-mobile-team.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev β expansion-packs/appiq-flutter-mobile-dev}/agents/flutter-cubit-agent.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev β expansion-packs/appiq-flutter-mobile-dev}/agents/flutter-data-agent.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev β expansion-packs/appiq-flutter-mobile-dev}/agents/flutter-domain-agent.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev β expansion-packs/appiq-flutter-mobile-dev}/agents/flutter-ui-agent.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev β expansion-packs/appiq-flutter-mobile-dev}/agents/shared-components-agent.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev β expansion-packs/appiq-flutter-mobile-dev}/checklists/flutter-story-dod-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev β expansion-packs/appiq-flutter-mobile-dev}/data/flutter-development-guidelines.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev β expansion-packs/appiq-flutter-mobile-dev}/templates/flutter-mobile-architecture-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev β expansion-packs/appiq-flutter-mobile-dev}/workflows/flutter-ui-first-development.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/agents/game-designer.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/agents/game-developer.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/agents/game-sm.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/config.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/data/bmad-kb.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/data/development-guidelines.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/tasks/create-game-story.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/agents/game-architect.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/agents/game-designer.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/agents/game-developer.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/agents/game-sm.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/config.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/data/bmad-kb.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/data/development-guidelines.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/tasks/correct-course-game.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/tasks/create-game-story.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/tasks/validate-game-story.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-infrastructure-devops/README.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-infrastructure-devops/agents/infra-devops-platform.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-infrastructure-devops/config.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-infrastructure-devops/data/bmad-kb.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-infrastructure-devops/tasks/review-infrastructure.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-infrastructure-devops/tasks/validate-infrastructure.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs β expansion-packs}/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +0 -0
@@ -1,855 +0,0 @@
|
|
1
|
-
# Flutter Clean Architecture Development Guide
|
2
|
-
|
3
|
-
## π Project Overview
|
4
|
-
|
5
|
-
**NX SourceCode** ist eine umfassende Flutter-Anwendung, die Clean Architecture Prinzipien implementiert und als soziale Plattform mit vielfΓ€ltigen Features fungiert. Das Projekt demonstriert professionelle Flutter-Entwicklung mit skalierbarer, testbarer und wartbarer Code-Architektur.
|
6
|
-
|
7
|
-
## ποΈ Architecture Overview
|
8
|
-
|
9
|
-
### Clean Architecture Layers
|
10
|
-
|
11
|
-
```
|
12
|
-
lib/
|
13
|
-
βββ core/ # Shared Core Functionality
|
14
|
-
β βββ constants/ # API endpoints, app constants
|
15
|
-
β βββ di/ # Dependency injection setup
|
16
|
-
β βββ error/ # Error handling (failures, exceptions)
|
17
|
-
β βββ network/ # Networking setup (API client, network info)
|
18
|
-
β βββ local_storage/ # Hive service for local storage
|
19
|
-
βββ features/ # Feature-based modules (17 Features)
|
20
|
-
β βββ [feature_name]/ # Individual features
|
21
|
-
β βββ data/ # Data layer
|
22
|
-
β β βββ datasources/ # Remote/Local data sources
|
23
|
-
β β βββ models/ # Data models with JSON serialization
|
24
|
-
β β βββ repositories/ # Repository implementations
|
25
|
-
β βββ domain/ # Domain layer (Business Logic)
|
26
|
-
β β βββ entities/ # Business entities
|
27
|
-
β β βββ repositories/ # Repository interfaces
|
28
|
-
β β βββ usecases/ # Business use cases
|
29
|
-
β βββ presentation/ # Presentation layer (UI)
|
30
|
-
β βββ cubit/ # State management (Cubit + State)
|
31
|
-
β βββ pages/ # UI pages/screens
|
32
|
-
β βββ widgets/ # Feature-specific widgets
|
33
|
-
βββ shared/ # Shared UI components and utilities
|
34
|
-
β βββ theme/ # Theme management
|
35
|
-
β βββ widgets/ # Reusable widgets (BaseScaffold, etc.)
|
36
|
-
βββ l10n/ # Localization files (.arb)
|
37
|
-
```
|
38
|
-
|
39
|
-
## π― Development Patterns & Style Guide
|
40
|
-
|
41
|
-
### 1. Entity Pattern (Domain Layer)
|
42
|
-
|
43
|
-
**Struktur:**
|
44
|
-
- Extends `Equatable` fΓΌr Value Equality
|
45
|
-
- Immutable mit `const` Konstruktoren
|
46
|
-
- `copyWith` Methoden fΓΌr Updates
|
47
|
-
- Alle Properties in `props` Liste
|
48
|
-
|
49
|
-
```dart
|
50
|
-
class UserEntity extends Equatable {
|
51
|
-
const UserEntity({
|
52
|
-
required this.id,
|
53
|
-
required this.name,
|
54
|
-
required this.email,
|
55
|
-
this.bio,
|
56
|
-
this.avatarUrl,
|
57
|
-
this.createdAt,
|
58
|
-
this.updatedAt,
|
59
|
-
});
|
60
|
-
|
61
|
-
final String id;
|
62
|
-
final String name;
|
63
|
-
final String email;
|
64
|
-
final String? bio;
|
65
|
-
final String? avatarUrl;
|
66
|
-
final DateTime? createdAt;
|
67
|
-
final DateTime? updatedAt;
|
68
|
-
|
69
|
-
@override
|
70
|
-
List<Object?> get props => [
|
71
|
-
id, name, email, bio, avatarUrl, createdAt, updatedAt,
|
72
|
-
];
|
73
|
-
|
74
|
-
UserEntity copyWith({
|
75
|
-
String? id,
|
76
|
-
String? name,
|
77
|
-
String? email,
|
78
|
-
String? bio,
|
79
|
-
String? avatarUrl,
|
80
|
-
DateTime? createdAt,
|
81
|
-
DateTime? updatedAt,
|
82
|
-
}) {
|
83
|
-
return UserEntity(
|
84
|
-
id: id ?? this.id,
|
85
|
-
name: name ?? this.name,
|
86
|
-
email: email ?? this.email,
|
87
|
-
bio: bio ?? this.bio,
|
88
|
-
avatarUrl: avatarUrl ?? this.avatarUrl,
|
89
|
-
createdAt: createdAt ?? this.createdAt,
|
90
|
-
updatedAt: updatedAt ?? this.updatedAt,
|
91
|
-
);
|
92
|
-
}
|
93
|
-
}
|
94
|
-
```
|
95
|
-
|
96
|
-
### 2. Model Pattern (Data Layer)
|
97
|
-
|
98
|
-
**Struktur:**
|
99
|
-
- `@freezed` Annotation fΓΌr Immutability
|
100
|
-
- JSON Serialization mit `json_serializable`
|
101
|
-
- `@JsonKey` fΓΌr API Field Mapping
|
102
|
-
- Extension Methods fΓΌr Entity Conversion
|
103
|
-
|
104
|
-
```dart
|
105
|
-
import 'package:freezed_annotation/freezed_annotation.dart';
|
106
|
-
import '../../domain/entities/user_entity.dart';
|
107
|
-
|
108
|
-
part 'user_model.freezed.dart';
|
109
|
-
part 'user_model.g.dart';
|
110
|
-
|
111
|
-
@freezed
|
112
|
-
class UserModel with _$UserModel {
|
113
|
-
const factory UserModel({
|
114
|
-
required String id,
|
115
|
-
required String name,
|
116
|
-
required String email,
|
117
|
-
String? bio,
|
118
|
-
@JsonKey(name: 'avatar_url') String? avatarUrl,
|
119
|
-
@JsonKey(name: 'created_at') String? createdAt,
|
120
|
-
@JsonKey(name: 'updated_at') String? updatedAt,
|
121
|
-
}) = _UserModel;
|
122
|
-
|
123
|
-
factory UserModel.fromJson(Map<String, dynamic> json) =>
|
124
|
-
_$UserModelFromJson(json);
|
125
|
-
}
|
126
|
-
|
127
|
-
extension UserModelExtension on UserModel {
|
128
|
-
UserEntity toEntity() {
|
129
|
-
return UserEntity(
|
130
|
-
id: id,
|
131
|
-
name: name,
|
132
|
-
email: email,
|
133
|
-
bio: bio,
|
134
|
-
avatarUrl: avatarUrl,
|
135
|
-
createdAt: createdAt != null ? DateTime.tryParse(createdAt!) : null,
|
136
|
-
updatedAt: updatedAt != null ? DateTime.tryParse(updatedAt!) : null,
|
137
|
-
);
|
138
|
-
}
|
139
|
-
}
|
140
|
-
|
141
|
-
extension UserEntityExtension on UserEntity {
|
142
|
-
UserModel toModel() {
|
143
|
-
return UserModel(
|
144
|
-
id: id,
|
145
|
-
name: name,
|
146
|
-
email: email,
|
147
|
-
bio: bio,
|
148
|
-
avatarUrl: avatarUrl,
|
149
|
-
createdAt: createdAt?.toIso8601String(),
|
150
|
-
updatedAt: updatedAt?.toIso8601String(),
|
151
|
-
);
|
152
|
-
}
|
153
|
-
}
|
154
|
-
```
|
155
|
-
|
156
|
-
### 3. Repository Pattern
|
157
|
-
|
158
|
-
**Interface (Domain Layer):**
|
159
|
-
```dart
|
160
|
-
import 'package:dartz/dartz.dart';
|
161
|
-
import '../../../../core/error/failures.dart';
|
162
|
-
import '../entities/user_entity.dart';
|
163
|
-
|
164
|
-
abstract class UserRepository {
|
165
|
-
Future<Either<Failure, List<UserEntity>>> getUsers();
|
166
|
-
Future<Either<Failure, UserEntity>> getUserById(String id);
|
167
|
-
Future<Either<Failure, UserEntity>> createUser(UserEntity user);
|
168
|
-
Future<Either<Failure, UserEntity>> updateUser(UserEntity user);
|
169
|
-
Future<Either<Failure, void>> deleteUser(String id);
|
170
|
-
Future<Either<Failure, List<UserEntity>>> searchUsers(String query);
|
171
|
-
}
|
172
|
-
```
|
173
|
-
|
174
|
-
**Implementation (Data Layer):**
|
175
|
-
```dart
|
176
|
-
import 'package:dartz/dartz.dart';
|
177
|
-
import 'package:injectable/injectable.dart';
|
178
|
-
import '../../../../core/error/exceptions.dart';
|
179
|
-
import '../../../../core/error/failures.dart';
|
180
|
-
import '../../../../core/network/network_info.dart';
|
181
|
-
|
182
|
-
@LazySingleton(as: UserRepository)
|
183
|
-
class UserRepositoryImpl implements UserRepository {
|
184
|
-
const UserRepositoryImpl(
|
185
|
-
this._remoteDataSource,
|
186
|
-
this._networkInfo,
|
187
|
-
);
|
188
|
-
|
189
|
-
final UserRemoteDataSource _remoteDataSource;
|
190
|
-
final NetworkInfo _networkInfo;
|
191
|
-
|
192
|
-
@override
|
193
|
-
Future<Either<Failure, List<UserEntity>>> getUsers() async {
|
194
|
-
if (await _networkInfo.isConnected) {
|
195
|
-
try {
|
196
|
-
final users = await _remoteDataSource.getUsers();
|
197
|
-
return Right(users.map((model) => model.toEntity()).toList());
|
198
|
-
} on ServerException catch (e) {
|
199
|
-
return Left(ServerFailure(e.message));
|
200
|
-
} on NetworkException catch (e) {
|
201
|
-
return Left(NetworkFailure(e.message));
|
202
|
-
} catch (e) {
|
203
|
-
return Left(UnknownFailure(e.toString()));
|
204
|
-
}
|
205
|
-
} else {
|
206
|
-
return const Left(NetworkFailure('No internet connection'));
|
207
|
-
}
|
208
|
-
}
|
209
|
-
}
|
210
|
-
```
|
211
|
-
|
212
|
-
### 4. UseCase Pattern
|
213
|
-
|
214
|
-
**Struktur:**
|
215
|
-
- `@injectable` fΓΌr Dependency Injection
|
216
|
-
- `call` Methode als Main Entry Point
|
217
|
-
- Business Logic & Validation
|
218
|
-
- `Either<Failure, Success>` Return Type
|
219
|
-
|
220
|
-
```dart
|
221
|
-
import 'package:dartz/dartz.dart';
|
222
|
-
import 'package:injectable/injectable.dart';
|
223
|
-
import '../../../../core/error/failures.dart';
|
224
|
-
import '../entities/user_entity.dart';
|
225
|
-
import '../repositories/user_repository.dart';
|
226
|
-
|
227
|
-
@injectable
|
228
|
-
class CreateUserUseCase {
|
229
|
-
const CreateUserUseCase(this._repository);
|
230
|
-
|
231
|
-
final UserRepository _repository;
|
232
|
-
|
233
|
-
Future<Either<Failure, UserEntity>> call(UserEntity user) async {
|
234
|
-
// Validate user data
|
235
|
-
final validationResult = _validateUser(user);
|
236
|
-
if (validationResult != null) {
|
237
|
-
return Left(ValidationFailure(validationResult));
|
238
|
-
}
|
239
|
-
|
240
|
-
return await _repository.createUser(user);
|
241
|
-
}
|
242
|
-
|
243
|
-
String? _validateUser(UserEntity user) {
|
244
|
-
if (user.name.trim().isEmpty) {
|
245
|
-
return 'Name is required';
|
246
|
-
}
|
247
|
-
|
248
|
-
if (user.email.trim().isEmpty) {
|
249
|
-
return 'Email is required';
|
250
|
-
}
|
251
|
-
|
252
|
-
if (!_isValidEmail(user.email)) {
|
253
|
-
return 'Please enter a valid email address';
|
254
|
-
}
|
255
|
-
|
256
|
-
return null;
|
257
|
-
}
|
258
|
-
|
259
|
-
bool _isValidEmail(String email) {
|
260
|
-
return RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$').hasMatch(email);
|
261
|
-
}
|
262
|
-
}
|
263
|
-
```
|
264
|
-
|
265
|
-
### 5. State Management Pattern
|
266
|
-
|
267
|
-
**State Class:**
|
268
|
-
```dart
|
269
|
-
import 'package:equatable/equatable.dart';
|
270
|
-
import '../../domain/entities/user_entity.dart';
|
271
|
-
|
272
|
-
enum UserStatus {
|
273
|
-
initial,
|
274
|
-
loading,
|
275
|
-
success,
|
276
|
-
failure,
|
277
|
-
}
|
278
|
-
|
279
|
-
class UserState extends Equatable {
|
280
|
-
const UserState({
|
281
|
-
this.status = UserStatus.initial,
|
282
|
-
this.users = const [],
|
283
|
-
this.selectedUser,
|
284
|
-
this.message,
|
285
|
-
});
|
286
|
-
|
287
|
-
final UserStatus status;
|
288
|
-
final List<UserEntity> users;
|
289
|
-
final UserEntity? selectedUser;
|
290
|
-
final String? message;
|
291
|
-
|
292
|
-
UserState copyWith({
|
293
|
-
UserStatus? status,
|
294
|
-
List<UserEntity>? users,
|
295
|
-
UserEntity? selectedUser,
|
296
|
-
String? message,
|
297
|
-
}) {
|
298
|
-
return UserState(
|
299
|
-
status: status ?? this.status,
|
300
|
-
users: users ?? this.users,
|
301
|
-
selectedUser: selectedUser ?? this.selectedUser,
|
302
|
-
message: message ?? this.message,
|
303
|
-
);
|
304
|
-
}
|
305
|
-
|
306
|
-
@override
|
307
|
-
List<Object?> get props => [status, users, selectedUser, message];
|
308
|
-
}
|
309
|
-
```
|
310
|
-
|
311
|
-
**Cubit Implementation:**
|
312
|
-
```dart
|
313
|
-
import 'package:flutter_bloc/flutter_bloc.dart';
|
314
|
-
import 'package:injectable/injectable.dart';
|
315
|
-
import '../../domain/entities/user_entity.dart';
|
316
|
-
import '../../domain/usecases/get_users_usecase.dart';
|
317
|
-
import 'user_state.dart';
|
318
|
-
|
319
|
-
@injectable
|
320
|
-
class UserCubit extends Cubit<UserState> {
|
321
|
-
UserCubit(
|
322
|
-
this._getUsersUseCase,
|
323
|
-
this._getUserByIdUseCase,
|
324
|
-
this._createUserUseCase,
|
325
|
-
this._updateUserUseCase,
|
326
|
-
this._deleteUserUseCase,
|
327
|
-
this._searchUsersUseCase,
|
328
|
-
) : super(const UserState());
|
329
|
-
|
330
|
-
final GetUsersUseCase _getUsersUseCase;
|
331
|
-
final GetUserByIdUseCase _getUserByIdUseCase;
|
332
|
-
final CreateUserUseCase _createUserUseCase;
|
333
|
-
final UpdateUserUseCase _updateUserUseCase;
|
334
|
-
final DeleteUserUseCase _deleteUserUseCase;
|
335
|
-
final SearchUsersUseCase _searchUsersUseCase;
|
336
|
-
|
337
|
-
Future<void> getUsers() async {
|
338
|
-
emit(state.copyWith(status: UserStatus.loading));
|
339
|
-
|
340
|
-
final result = await _getUsersUseCase();
|
341
|
-
result.fold(
|
342
|
-
(failure) => emit(state.copyWith(
|
343
|
-
status: UserStatus.failure,
|
344
|
-
message: failure.message ?? 'Failed to load users',
|
345
|
-
)),
|
346
|
-
(users) => emit(state.copyWith(
|
347
|
-
status: UserStatus.success,
|
348
|
-
users: users,
|
349
|
-
)),
|
350
|
-
);
|
351
|
-
}
|
352
|
-
|
353
|
-
Future<void> createUser(UserEntity user) async {
|
354
|
-
emit(state.copyWith(status: UserStatus.loading));
|
355
|
-
|
356
|
-
final result = await _createUserUseCase(user);
|
357
|
-
result.fold(
|
358
|
-
(failure) => emit(state.copyWith(
|
359
|
-
status: UserStatus.failure,
|
360
|
-
message: failure.message ?? 'Failed to create user',
|
361
|
-
)),
|
362
|
-
(createdUser) {
|
363
|
-
final updatedUsers = [...state.users, createdUser];
|
364
|
-
emit(state.copyWith(
|
365
|
-
status: UserStatus.success,
|
366
|
-
users: updatedUsers,
|
367
|
-
));
|
368
|
-
},
|
369
|
-
);
|
370
|
-
}
|
371
|
-
}
|
372
|
-
```
|
373
|
-
|
374
|
-
### 6. DataSource Pattern
|
375
|
-
|
376
|
-
**Abstract Class:**
|
377
|
-
```dart
|
378
|
-
abstract class UserRemoteDataSource {
|
379
|
-
Future<List<UserModel>> getUsers();
|
380
|
-
Future<UserModel> getUserById(String id);
|
381
|
-
Future<UserModel> createUser(UserModel user);
|
382
|
-
Future<UserModel> updateUser(UserModel user);
|
383
|
-
Future<void> deleteUser(String id);
|
384
|
-
Future<List<UserModel>> searchUsers(String query);
|
385
|
-
}
|
386
|
-
```
|
387
|
-
|
388
|
-
**Implementation:**
|
389
|
-
```dart
|
390
|
-
import 'package:injectable/injectable.dart';
|
391
|
-
import '../../../../core/constants/api_constants.dart';
|
392
|
-
import '../../../../core/network/api_client.dart';
|
393
|
-
import '../models/user_model.dart';
|
394
|
-
|
395
|
-
@LazySingleton(as: UserRemoteDataSource)
|
396
|
-
class UserRemoteDataSourceImpl implements UserRemoteDataSource {
|
397
|
-
const UserRemoteDataSourceImpl(this._apiClient);
|
398
|
-
|
399
|
-
final ApiClient _apiClient;
|
400
|
-
|
401
|
-
@override
|
402
|
-
Future<List<UserModel>> getUsers() async {
|
403
|
-
final response = await _apiClient.get(ApiConstants.users);
|
404
|
-
final List<dynamic> usersJson = response.data['data'] ?? response.data;
|
405
|
-
return usersJson.map((json) => UserModel.fromJson(json)).toList();
|
406
|
-
}
|
407
|
-
|
408
|
-
@override
|
409
|
-
Future<UserModel> getUserById(String id) async {
|
410
|
-
final response = await _apiClient.get('${ApiConstants.users}/$id');
|
411
|
-
return UserModel.fromJson(response.data['data'] ?? response.data);
|
412
|
-
}
|
413
|
-
|
414
|
-
@override
|
415
|
-
Future<UserModel> createUser(UserModel user) async {
|
416
|
-
final response = await _apiClient.post(
|
417
|
-
ApiConstants.users,
|
418
|
-
data: user.toJson(),
|
419
|
-
);
|
420
|
-
return UserModel.fromJson(response.data['data'] ?? response.data);
|
421
|
-
}
|
422
|
-
}
|
423
|
-
```
|
424
|
-
|
425
|
-
### 7. UI Page Pattern
|
426
|
-
|
427
|
-
```dart
|
428
|
-
import 'package:flutter/material.dart';
|
429
|
-
import 'package:flutter_bloc/flutter_bloc.dart';
|
430
|
-
import '../../../../core/di/injection_container.dart';
|
431
|
-
import '../../../../shared/widgets/base_scaffold.dart';
|
432
|
-
import '../../../../shared/widgets/loading_widget.dart';
|
433
|
-
import '../../../../shared/widgets/error_widget.dart';
|
434
|
-
import '../cubit/user_cubit.dart';
|
435
|
-
import '../cubit/user_state.dart';
|
436
|
-
import '../widgets/user_list_item.dart';
|
437
|
-
|
438
|
-
class UserListPage extends StatelessWidget {
|
439
|
-
const UserListPage({super.key});
|
440
|
-
|
441
|
-
@override
|
442
|
-
Widget build(BuildContext context) {
|
443
|
-
return BlocProvider(
|
444
|
-
create: (context) => getIt<UserCubit>()..getUsers(),
|
445
|
-
child: const UserListView(),
|
446
|
-
);
|
447
|
-
}
|
448
|
-
}
|
449
|
-
|
450
|
-
class UserListView extends StatelessWidget {
|
451
|
-
const UserListView({super.key});
|
452
|
-
|
453
|
-
@override
|
454
|
-
Widget build(BuildContext context) {
|
455
|
-
return BaseScaffold(
|
456
|
-
title: 'Users',
|
457
|
-
floatingActionButton: FloatingActionButton(
|
458
|
-
onPressed: () => _showCreateUserDialog(context),
|
459
|
-
child: const Icon(Icons.add),
|
460
|
-
),
|
461
|
-
body: BlocConsumer<UserCubit, UserState>(
|
462
|
-
listener: (context, state) {
|
463
|
-
if (state.status == UserStatus.failure && state.message != null) {
|
464
|
-
ScaffoldMessenger.of(context).showSnackBar(
|
465
|
-
SnackBar(
|
466
|
-
content: Text(state.message!),
|
467
|
-
backgroundColor: Theme.of(context).colorScheme.error,
|
468
|
-
),
|
469
|
-
);
|
470
|
-
}
|
471
|
-
},
|
472
|
-
builder: (context, state) {
|
473
|
-
return switch (state.status) {
|
474
|
-
UserStatus.loading => const LoadingWidget(),
|
475
|
-
UserStatus.failure => CustomErrorWidget(
|
476
|
-
message: state.message ?? 'Unknown error occurred',
|
477
|
-
onRetry: () => context.read<UserCubit>().getUsers(),
|
478
|
-
),
|
479
|
-
UserStatus.success => RefreshIndicator(
|
480
|
-
onRefresh: () => context.read<UserCubit>().getUsers(),
|
481
|
-
child: ListView.builder(
|
482
|
-
itemCount: state.users.length,
|
483
|
-
itemBuilder: (context, index) {
|
484
|
-
return UserListItem(
|
485
|
-
user: state.users[index],
|
486
|
-
onTap: () => _navigateToUserDetail(context, state.users[index]),
|
487
|
-
);
|
488
|
-
},
|
489
|
-
),
|
490
|
-
),
|
491
|
-
_ => const SizedBox.shrink(),
|
492
|
-
};
|
493
|
-
},
|
494
|
-
),
|
495
|
-
);
|
496
|
-
}
|
497
|
-
}
|
498
|
-
```
|
499
|
-
|
500
|
-
## π οΈ Technology Stack
|
501
|
-
|
502
|
-
### Core Dependencies
|
503
|
-
- **State Management**: `flutter_bloc` ^8.1.6
|
504
|
-
- **Dependency Injection**: `get_it` ^8.0.2 + `injectable` ^2.5.0
|
505
|
-
- **Code Generation**: `freezed` ^2.5.7 + `json_serializable` ^6.8.0
|
506
|
-
- **Networking**: `dio` ^5.7.0
|
507
|
-
- **Local Storage**: `hive` ^2.2.3
|
508
|
-
- **Error Handling**: `dartz` ^0.10.1
|
509
|
-
- **Value Equality**: `equatable` ^2.0.7
|
510
|
-
|
511
|
-
### Dev Dependencies
|
512
|
-
- **Build Runner**: `build_runner` ^2.4.13
|
513
|
-
- **Code Generation**: `injectable_generator` ^2.6.2
|
514
|
-
- **Testing**: `bloc_test` ^9.1.7 + `mocktail` ^1.0.4
|
515
|
-
|
516
|
-
## π Networking Layer
|
517
|
-
|
518
|
-
### API Client Implementation
|
519
|
-
```dart
|
520
|
-
import 'package:dio/dio.dart';
|
521
|
-
import 'package:injectable/injectable.dart';
|
522
|
-
import '../constants/api_constants.dart';
|
523
|
-
import '../error/exceptions.dart';
|
524
|
-
|
525
|
-
@LazySingleton()
|
526
|
-
class ApiClient {
|
527
|
-
late final Dio _dio;
|
528
|
-
|
529
|
-
ApiClient() {
|
530
|
-
_dio = Dio(
|
531
|
-
BaseOptions(
|
532
|
-
baseUrl: ApiConstants.baseUrl,
|
533
|
-
connectTimeout: const Duration(seconds: 30),
|
534
|
-
receiveTimeout: const Duration(seconds: 30),
|
535
|
-
headers: {
|
536
|
-
'Content-Type': 'application/json',
|
537
|
-
'Accept': 'application/json',
|
538
|
-
},
|
539
|
-
),
|
540
|
-
);
|
541
|
-
|
542
|
-
_dio.interceptors.add(
|
543
|
-
InterceptorsWrapper(
|
544
|
-
onError: (error, handler) {
|
545
|
-
final exception = _handleDioError(error);
|
546
|
-
handler.reject(DioException(
|
547
|
-
requestOptions: error.requestOptions,
|
548
|
-
error: exception,
|
549
|
-
));
|
550
|
-
},
|
551
|
-
),
|
552
|
-
);
|
553
|
-
}
|
554
|
-
|
555
|
-
Exception _handleDioError(DioException error) {
|
556
|
-
switch (error.type) {
|
557
|
-
case DioExceptionType.connectionTimeout:
|
558
|
-
case DioExceptionType.sendTimeout:
|
559
|
-
case DioExceptionType.receiveTimeout:
|
560
|
-
return const NetworkException('Connection timeout');
|
561
|
-
case DioExceptionType.badResponse:
|
562
|
-
final statusCode = error.response?.statusCode;
|
563
|
-
switch (statusCode) {
|
564
|
-
case 400:
|
565
|
-
return ValidationException(
|
566
|
-
error.response?.data?['message'] ?? 'Bad request',
|
567
|
-
);
|
568
|
-
case 401:
|
569
|
-
return const AuthenticationException('Unauthorized');
|
570
|
-
case 403:
|
571
|
-
return const AuthorizationException('Forbidden');
|
572
|
-
case 404:
|
573
|
-
return const NotFoundException('Resource not found');
|
574
|
-
case 500:
|
575
|
-
default:
|
576
|
-
return ServerException(
|
577
|
-
error.response?.data?['message'] ?? 'Server error',
|
578
|
-
);
|
579
|
-
}
|
580
|
-
case DioExceptionType.connectionError:
|
581
|
-
return const NetworkException('No internet connection');
|
582
|
-
default:
|
583
|
-
return ServerException(error.message);
|
584
|
-
}
|
585
|
-
}
|
586
|
-
}
|
587
|
-
```
|
588
|
-
|
589
|
-
## π¨ Error Handling System
|
590
|
-
|
591
|
-
### Failure Types
|
592
|
-
```dart
|
593
|
-
import 'package:equatable/equatable.dart';
|
594
|
-
|
595
|
-
abstract class Failure extends Equatable {
|
596
|
-
const Failure([this.message]);
|
597
|
-
final String? message;
|
598
|
-
|
599
|
-
@override
|
600
|
-
List<Object?> get props => [message];
|
601
|
-
}
|
602
|
-
|
603
|
-
class ServerFailure extends Failure {
|
604
|
-
const ServerFailure([super.message]);
|
605
|
-
}
|
606
|
-
|
607
|
-
class NetworkFailure extends Failure {
|
608
|
-
const NetworkFailure([super.message]);
|
609
|
-
}
|
610
|
-
|
611
|
-
class ValidationFailure extends Failure {
|
612
|
-
const ValidationFailure([super.message]);
|
613
|
-
}
|
614
|
-
|
615
|
-
class AuthenticationFailure extends Failure {
|
616
|
-
const AuthenticationFailure([super.message]);
|
617
|
-
}
|
618
|
-
|
619
|
-
// ... weitere Failure Types
|
620
|
-
```
|
621
|
-
|
622
|
-
### Exception Types
|
623
|
-
```dart
|
624
|
-
class ServerException implements Exception {
|
625
|
-
const ServerException([this.message]);
|
626
|
-
final String? message;
|
627
|
-
|
628
|
-
@override
|
629
|
-
String toString() => 'ServerException: ${message ?? 'Unknown server error'}';
|
630
|
-
}
|
631
|
-
|
632
|
-
class NetworkException implements Exception {
|
633
|
-
const NetworkException([this.message]);
|
634
|
-
final String? message;
|
635
|
-
|
636
|
-
@override
|
637
|
-
String toString() => 'NetworkException: ${message ?? 'Network error'}';
|
638
|
-
}
|
639
|
-
|
640
|
-
// ... weitere Exception Types
|
641
|
-
```
|
642
|
-
|
643
|
-
## π¨ UI/UX Patterns
|
644
|
-
|
645
|
-
### Shared Components
|
646
|
-
|
647
|
-
**BaseScaffold - Responsive Layout:**
|
648
|
-
```dart
|
649
|
-
class BaseScaffold extends StatelessWidget {
|
650
|
-
const BaseScaffold({
|
651
|
-
super.key,
|
652
|
-
required this.body,
|
653
|
-
this.title,
|
654
|
-
this.actions,
|
655
|
-
this.floatingActionButton,
|
656
|
-
this.safeArea = true,
|
657
|
-
});
|
658
|
-
|
659
|
-
@override
|
660
|
-
Widget build(BuildContext context) {
|
661
|
-
final mediaQuery = MediaQuery.of(context);
|
662
|
-
final isTablet = mediaQuery.size.width >= 768;
|
663
|
-
final isDesktop = mediaQuery.size.width >= 1024;
|
664
|
-
|
665
|
-
Widget bodyWidget = body;
|
666
|
-
|
667
|
-
// Responsive constraints
|
668
|
-
if (isDesktop) {
|
669
|
-
bodyWidget = Center(
|
670
|
-
child: ConstrainedBox(
|
671
|
-
constraints: const BoxConstraints(maxWidth: 1200),
|
672
|
-
child: bodyWidget,
|
673
|
-
),
|
674
|
-
);
|
675
|
-
} else if (isTablet) {
|
676
|
-
bodyWidget = Padding(
|
677
|
-
padding: const EdgeInsets.symmetric(horizontal: 32),
|
678
|
-
child: bodyWidget,
|
679
|
-
);
|
680
|
-
}
|
681
|
-
|
682
|
-
return Scaffold(
|
683
|
-
appBar: title != null ? AppBar(title: Text(title!)) : null,
|
684
|
-
body: safeArea ? SafeArea(child: bodyWidget) : bodyWidget,
|
685
|
-
floatingActionButton: floatingActionButton,
|
686
|
-
);
|
687
|
-
}
|
688
|
-
}
|
689
|
-
```
|
690
|
-
|
691
|
-
### Theme System
|
692
|
-
```dart
|
693
|
-
enum ThemeType { light, dark, custom }
|
694
|
-
|
695
|
-
class ThemeCubit extends Cubit<ThemeState> {
|
696
|
-
ThemeCubit() : super(const ThemeState());
|
697
|
-
|
698
|
-
void changeTheme(ThemeType themeType) {
|
699
|
-
emit(state.copyWith(themeType: themeType));
|
700
|
-
// Save to local storage
|
701
|
-
}
|
702
|
-
|
703
|
-
void toggleTheme() {
|
704
|
-
final newTheme = switch (state.themeType) {
|
705
|
-
ThemeType.light => ThemeType.dark,
|
706
|
-
ThemeType.dark => ThemeType.custom,
|
707
|
-
ThemeType.custom => ThemeType.light,
|
708
|
-
};
|
709
|
-
changeTheme(newTheme);
|
710
|
-
}
|
711
|
-
}
|
712
|
-
```
|
713
|
-
|
714
|
-
## π Feature Template Structure
|
715
|
-
|
716
|
-
### FΓΌr jedes neue Feature:
|
717
|
-
|
718
|
-
```
|
719
|
-
feature_name/
|
720
|
-
βββ data/
|
721
|
-
β βββ datasources/
|
722
|
-
β β βββ feature_remote_datasource.dart
|
723
|
-
β βββ models/
|
724
|
-
β β βββ feature_model.dart
|
725
|
-
β βββ repositories/
|
726
|
-
β βββ feature_repository_impl.dart
|
727
|
-
βββ domain/
|
728
|
-
β βββ entities/
|
729
|
-
β β βββ feature_entity.dart
|
730
|
-
β βββ repositories/
|
731
|
-
β β βββ feature_repository.dart
|
732
|
-
β βββ usecases/
|
733
|
-
β βββ get_features_usecase.dart
|
734
|
-
β βββ get_feature_by_id_usecase.dart
|
735
|
-
β βββ create_feature_usecase.dart
|
736
|
-
β βββ update_feature_usecase.dart
|
737
|
-
β βββ delete_feature_usecase.dart
|
738
|
-
β βββ search_features_usecase.dart
|
739
|
-
βββ presentation/
|
740
|
-
βββ cubit/
|
741
|
-
β βββ feature_cubit.dart
|
742
|
-
β βββ feature_state.dart
|
743
|
-
βββ pages/
|
744
|
-
β βββ feature_list_page.dart
|
745
|
-
β βββ feature_detail_page.dart
|
746
|
-
βββ widgets/
|
747
|
-
βββ feature_list_item.dart
|
748
|
-
```
|
749
|
-
|
750
|
-
## π§ Development Commands
|
751
|
-
|
752
|
-
### Code Generation
|
753
|
-
```bash
|
754
|
-
# Generate all code (models, DI, etc.)
|
755
|
-
flutter packages pub run build_runner build --delete-conflicting-outputs
|
756
|
-
|
757
|
-
# Generate localization files
|
758
|
-
flutter gen-l10n
|
759
|
-
|
760
|
-
# Clean ARB files
|
761
|
-
dart run scripts/clean_arb_files.dart
|
762
|
-
```
|
763
|
-
|
764
|
-
### Testing
|
765
|
-
```bash
|
766
|
-
# Run all tests
|
767
|
-
flutter test
|
768
|
-
|
769
|
-
# Run with coverage
|
770
|
-
flutter test --coverage
|
771
|
-
```
|
772
|
-
|
773
|
-
## π Naming Conventions
|
774
|
-
|
775
|
-
### Files & Directories
|
776
|
-
- **Files**: `snake_case.dart`
|
777
|
-
- **Directories**: `snake_case/`
|
778
|
-
- **Assets**: `snake_case.png`
|
779
|
-
|
780
|
-
### Code
|
781
|
-
- **Classes**: `PascalCase`
|
782
|
-
- **Variables & Methods**: `camelCase`
|
783
|
-
- **Constants**: `SCREAMING_SNAKE_CASE` in static classes
|
784
|
-
- **Private Members**: `_leadingUnderscore`
|
785
|
-
|
786
|
-
### Feature Naming Pattern
|
787
|
-
- **Entity**: `FeatureEntity`
|
788
|
-
- **Model**: `FeatureModel`
|
789
|
-
- **Repository Interface**: `FeatureRepository`
|
790
|
-
- **Repository Implementation**: `FeatureRepositoryImpl`
|
791
|
-
- **DataSource Interface**: `FeatureRemoteDataSource`
|
792
|
-
- **DataSource Implementation**: `FeatureRemoteDataSourceImpl`
|
793
|
-
- **UseCase**: `GetFeatureUseCase`, `CreateFeatureUseCase`, etc.
|
794
|
-
- **Cubit**: `FeatureCubit`
|
795
|
-
- **State**: `FeatureState`
|
796
|
-
- **Page**: `FeatureListPage`, `FeatureDetailPage`
|
797
|
-
|
798
|
-
## π― Development Guidelines
|
799
|
-
|
800
|
-
### Best Practices
|
801
|
-
1. **Immutability**: Alle Data Classes sind immutable
|
802
|
-
2. **Single Responsibility**: Jede Klasse hat eine einzige Verantwortung
|
803
|
-
3. **Dependency Injection**: Alle Dependencies werden injected
|
804
|
-
4. **Error Handling**: Consistent Either<Failure, Success> Pattern
|
805
|
-
5. **Testing**: Jeder Use Case und Repository wird getestet
|
806
|
-
6. **Documentation**: Alle Public APIs sind dokumentiert
|
807
|
-
|
808
|
-
### Code Quality Checks
|
809
|
-
- **Linting**: `flutter_lints` fΓΌr Code-QualitΓ€t
|
810
|
-
- **Type Safety**: Null Safety aktiviert
|
811
|
-
- **Build Runner**: RegelmΓ€Γige Code-Generierung
|
812
|
-
- **Testing**: Unit Tests fΓΌr Business Logic
|
813
|
-
|
814
|
-
## π Implemented Features
|
815
|
-
|
816
|
-
### Core Features (17 Total)
|
817
|
-
1. **user** - User Management
|
818
|
-
2. **auth** - Authentication & Authorization
|
819
|
-
3. **profile** - User Profiles & Settings
|
820
|
-
4. **chat** - Real-time Messaging
|
821
|
-
5. **forum** - Discussion Forums
|
822
|
-
6. **livestream** - Live Streaming
|
823
|
-
7. **media** - Photo/Video Management
|
824
|
-
8. **learning_hub** - Educational Content
|
825
|
-
9. **shop** - Product Catalog
|
826
|
-
10. **sponsorship** - Sponsorship Requests
|
827
|
-
11. **coin_system** - Virtual Currency
|
828
|
-
12. **support** - Customer Support
|
829
|
-
13. **partners** - Partner Management
|
830
|
-
14. **membership** - Membership System
|
831
|
-
15. **legal_settings** - Legal Compliance
|
832
|
-
16. **admin_panel** - Administration
|
833
|
-
17. **admin_panel** - Admin Interface
|
834
|
-
|
835
|
-
## π Getting Started Template
|
836
|
-
|
837
|
-
### Neues Feature erstellen:
|
838
|
-
|
839
|
-
1. **Feature Ordner erstellen:**
|
840
|
-
```bash
|
841
|
-
mkdir -p lib/features/new_feature/{data/{datasources,models,repositories},domain/{entities,repositories,usecases},presentation/{cubit,pages,widgets}}
|
842
|
-
```
|
843
|
-
|
844
|
-
2. **Entity definieren** (Domain Layer)
|
845
|
-
3. **Repository Interface erstellen** (Domain Layer)
|
846
|
-
4. **Use Cases implementieren** (Domain Layer)
|
847
|
-
5. **Model mit Freezed erstellen** (Data Layer)
|
848
|
-
6. **DataSource implementieren** (Data Layer)
|
849
|
-
7. **Repository implementieren** (Data Layer)
|
850
|
-
8. **State und Cubit erstellen** (Presentation Layer)
|
851
|
-
9. **Pages und Widgets erstellen** (Presentation Layer)
|
852
|
-
10. **Dependency Injection registrieren**
|
853
|
-
11. **Build Runner ausfΓΌhren**
|
854
|
-
|
855
|
-
Diese Anleitung dient als umfassende Referenz fΓΌr die Entwicklung neuer Features und das Training von AI-Agenten auf Basis der etablierten Architektur und Patterns.
|