appiq-solution 1.6.4 → 1.7.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/CHANGELOG.md +62 -0
- package/README.md +109 -63
- package/bmad-core/core-config-extended.yaml +39 -0
- package/bmad-core/core-config-smart.yaml +184 -0
- package/bmad-core/core-config.yaml +165 -1
- package/bmad-core/data/mandatory-development-rules.md +170 -0
- package/bmad-core/tasks/auto-detect-prds.md +162 -0
- package/bmad-core/tasks/smart-auto-detect-prds.md +299 -0
- package/bmad-core/tasks/validate-mandatory-rules.md +322 -0
- package/docs/enhanced_prd_template.md +202 -0
- package/docs/livestream_prd_example.md +93 -0
- package/docs/livestream_prd_smart.md +278 -0
- package/docs/onboarding_prd.md +93 -0
- package/expansion-packs/appiq-flutter-mobile-dev/agents/flutter-ui-agent.md +34 -8
- package/expansion-packs/appiq-flutter-mobile-dev/config.yaml +1 -1
- package/expansion-packs/appiq-flutter-mobile-dev/data/flutter-development-guidelines.md +66 -0
- package/package.json +1 -1
@@ -0,0 +1,278 @@
|
|
1
|
+
# Livestream Feature PRD
|
2
|
+
|
3
|
+
## Overview
|
4
|
+
Implementierung einer Live-Streaming-Funktionalität in die bestehende Flutter-App mit intelligenter Integration in vorhandene Komponenten.
|
5
|
+
|
6
|
+
## Implementation Paths
|
7
|
+
> Spezifische Pfade für optimale Integration
|
8
|
+
|
9
|
+
### Suggested File Structure
|
10
|
+
```
|
11
|
+
lib/
|
12
|
+
├── features/
|
13
|
+
│ └── livestream/ # ← Neues Feature
|
14
|
+
│ ├── data/
|
15
|
+
│ │ ├── datasources/
|
16
|
+
│ │ │ ├── livestream_remote_datasource.dart
|
17
|
+
│ │ │ └── livestream_local_datasource.dart
|
18
|
+
│ │ ├── models/
|
19
|
+
│ │ │ ├── stream_model.dart
|
20
|
+
│ │ │ └── stream_chat_model.dart
|
21
|
+
│ │ └── repositories/
|
22
|
+
│ │ └── livestream_repository_impl.dart
|
23
|
+
│ ├── domain/
|
24
|
+
│ │ ├── entities/
|
25
|
+
│ │ │ ├── stream_entity.dart
|
26
|
+
│ │ │ └── stream_message_entity.dart
|
27
|
+
│ │ ├── repositories/
|
28
|
+
│ │ │ └── livestream_repository.dart
|
29
|
+
│ │ └── usecases/
|
30
|
+
│ │ ├── start_stream_usecase.dart
|
31
|
+
│ │ ├── join_stream_usecase.dart
|
32
|
+
│ │ └── send_chat_message_usecase.dart
|
33
|
+
│ └── presentation/
|
34
|
+
│ ├── cubit/
|
35
|
+
│ │ ├── livestream_cubit.dart
|
36
|
+
│ │ ├── livestream_state.dart
|
37
|
+
│ │ ├── stream_chat_cubit.dart
|
38
|
+
│ │ └── stream_chat_state.dart
|
39
|
+
│ ├── pages/
|
40
|
+
│ │ ├── stream_list_page.dart
|
41
|
+
│ │ ├── stream_viewer_page.dart
|
42
|
+
│ │ └── stream_creator_page.dart
|
43
|
+
│ └── widgets/
|
44
|
+
│ ├── stream_player_widget.dart
|
45
|
+
│ ├── stream_controls_widget.dart
|
46
|
+
│ └── stream_chat_widget.dart
|
47
|
+
```
|
48
|
+
|
49
|
+
### Integration Points
|
50
|
+
> Bestehende Dateien/Klassen für Integration:
|
51
|
+
|
52
|
+
- **Main Navigation**: `lib/features/home/presentation/pages/home_page.dart`
|
53
|
+
- Füge "Go Live" Button in AppBar hinzu
|
54
|
+
- Integriere Stream-Liste in Home-Feed
|
55
|
+
|
56
|
+
- **Existing API Service**: `lib/shared/services/api_service.dart`
|
57
|
+
- Erweitere für WebRTC-Endpoints
|
58
|
+
- Nutze bestehende Auth-Header
|
59
|
+
|
60
|
+
- **Video Player Base**: `lib/features/media/presentation/widgets/video_player_widget.dart`
|
61
|
+
- Erweitere für Live-Stream-Funktionalität
|
62
|
+
- Nutze bestehende Player-Controls
|
63
|
+
|
64
|
+
- **Chat System**: `lib/features/chat/presentation/widgets/chat_widget.dart`
|
65
|
+
- Adaptiere für Live-Stream-Chat
|
66
|
+
- Nutze bestehende Message-Patterns
|
67
|
+
|
68
|
+
- **User Profile Integration**: `lib/features/user/presentation/pages/profile_page.dart`
|
69
|
+
- Füge "My Streams" Sektion hinzu
|
70
|
+
- Zeige Stream-History
|
71
|
+
|
72
|
+
### Code Reuse Analysis
|
73
|
+
> Bestehende Komponenten prüfen und wiederverwenden:
|
74
|
+
|
75
|
+
#### Existing Similar Features (PRÜFEN ZUERST!)
|
76
|
+
- [ ] **Video Feature**: `lib/features/video/` - Für Player-Logik
|
77
|
+
- [ ] **Chat Feature**: `lib/features/chat/` - Für Chat-Implementation
|
78
|
+
- [ ] **Camera Feature**: `lib/features/camera/` - Für Stream-Aufnahme
|
79
|
+
- [ ] **Notification Feature**: `lib/features/notifications/` - Für Stream-Alerts
|
80
|
+
|
81
|
+
#### Shared Components to Reuse (VERWENDEN STATT NEU ERSTELLEN!)
|
82
|
+
- [ ] `lib/shared/widgets/loading_widget.dart` - Für Stream-Loading
|
83
|
+
- [ ] `lib/shared/widgets/error_widget.dart` - Für Stream-Errors
|
84
|
+
- [ ] `lib/shared/widgets/custom_button.dart` - Für Stream-Controls
|
85
|
+
- [ ] `lib/shared/widgets/user_avatar.dart` - Für Streamer-Avatar
|
86
|
+
- [ ] `lib/shared/widgets/bottom_sheet_widget.dart` - Für Stream-Settings
|
87
|
+
- [ ] `lib/shared/services/navigation_service.dart` - Für Stream-Navigation
|
88
|
+
- [ ] `lib/shared/services/websocket_service.dart` - Für Real-time Chat
|
89
|
+
- [ ] `lib/shared/utils/validators.dart` - Für Stream-Input-Validation
|
90
|
+
- [ ] `lib/shared/utils/permission_handler.dart` - Für Camera/Mic-Permissions
|
91
|
+
|
92
|
+
#### Common Patterns to Follow (BESTEHENDE PATTERNS BEFOLGEN!)
|
93
|
+
- [ ] **Cubit Naming**: `LivestreamCubit`, `LivestreamState` (wie `AuthCubit`)
|
94
|
+
- [ ] **Error Handling**: `StreamFailure` extends `Failure` (wie `AuthFailure`)
|
95
|
+
- [ ] **API Patterns**: `ApiResponse<StreamModel>` (wie bestehende APIs)
|
96
|
+
- [ ] **Repository Pattern**: Folge `UserRepository` Struktur
|
97
|
+
- [ ] **DI Pattern**: Registrierung wie in `injection_container.dart`
|
98
|
+
|
99
|
+
## UI References
|
100
|
+
> Mockups und Referenz-Bilder für Development
|
101
|
+
|
102
|
+
### Design Assets Location
|
103
|
+
```
|
104
|
+
assets/
|
105
|
+
├── images/
|
106
|
+
│ └── livestream/
|
107
|
+
│ ├── mockup_stream_list.png # ← Haupt-Stream-Liste
|
108
|
+
│ ├── mockup_stream_viewer.png # ← Stream-Viewer mit Chat
|
109
|
+
│ ├── mockup_stream_creator.png # ← Stream-Erstellung
|
110
|
+
│ ├── wireframe_stream_flow.png # ← User-Flow Diagramm
|
111
|
+
│ └── ui_components_reference.png # ← UI-Komponenten Guide
|
112
|
+
└── icons/
|
113
|
+
└── livestream/
|
114
|
+
├── stream_icon.svg # ← Live-Stream Icon
|
115
|
+
├── camera_icon.svg # ← Kamera Icon
|
116
|
+
├── chat_icon.svg # ← Chat Icon
|
117
|
+
└── viewer_count_icon.svg # ← Viewer-Anzahl Icon
|
118
|
+
```
|
119
|
+
|
120
|
+
### UI Reference Links
|
121
|
+
- **Figma Design**: https://figma.com/livestream-feature-v2
|
122
|
+
- **Design System**: `lib/shared/theme/app_theme.dart` - Folge bestehende Patterns
|
123
|
+
- **Similar UI Reference**:
|
124
|
+
- `lib/features/video/presentation/pages/video_player_page.dart` - Für Player-Layout
|
125
|
+
- `lib/features/chat/presentation/widgets/chat_list_widget.dart` - Für Chat-UI
|
126
|
+
|
127
|
+
### Visual Guidelines (BESTEHENDE PATTERNS VERWENDEN!)
|
128
|
+
- **Theme**: Erweitere `lib/shared/theme/app_theme.dart`
|
129
|
+
- Füge `livestreamColors` zu `AppColors` hinzu
|
130
|
+
- Nutze bestehende `primaryColor` für Live-Indicator
|
131
|
+
- **Typography**: Verwende `AppTextStyles.headline1` für Stream-Titel
|
132
|
+
- **Spacing**: Nutze `AppSpacing.medium` für konsistente Abstände
|
133
|
+
- **Components**: Erweitere `lib/shared/widgets/` statt neue zu erstellen
|
134
|
+
|
135
|
+
## Features
|
136
|
+
- **Live Stream Starten**: Integration mit bestehender Camera-Feature
|
137
|
+
- **Stream Discovery**: Erweitere Home-Feed um Stream-Liste
|
138
|
+
- **Real-time Chat**: Nutze bestehende Chat-Infrastruktur
|
139
|
+
- **Stream Controls**: Erweitere bestehende Video-Controls
|
140
|
+
- **Viewer Analytics**: Integration in bestehende Analytics
|
141
|
+
|
142
|
+
## Acceptance Criteria
|
143
|
+
|
144
|
+
### Live Stream Starten
|
145
|
+
- [ ] **Reuse Camera Permission**: Nutze `lib/shared/utils/permission_handler.dart`
|
146
|
+
- [ ] **Extend Navigation**: Füge zu `lib/core/routing/app_router.dart` hinzu
|
147
|
+
- [ ] **Follow Button Pattern**: Nutze `lib/shared/widgets/custom_button.dart`
|
148
|
+
|
149
|
+
### Stream Viewer
|
150
|
+
- [ ] **Extend Video Player**: Erweitere `lib/features/video/presentation/widgets/video_player_widget.dart`
|
151
|
+
- [ ] **Reuse Loading States**: Nutze `lib/shared/widgets/loading_widget.dart`
|
152
|
+
- [ ] **Follow Page Structure**: Wie `lib/features/video/presentation/pages/video_player_page.dart`
|
153
|
+
|
154
|
+
### Chat Integration
|
155
|
+
- [ ] **Extend Chat Widget**: Adaptiere `lib/features/chat/presentation/widgets/chat_widget.dart`
|
156
|
+
- [ ] **Reuse WebSocket**: Nutze `lib/shared/services/websocket_service.dart`
|
157
|
+
- [ ] **Follow Message Pattern**: Wie `lib/features/chat/domain/entities/message_entity.dart`
|
158
|
+
|
159
|
+
## Technical Requirements
|
160
|
+
|
161
|
+
### Architecture Compliance (BESTEHENDE PATTERNS BEFOLGEN!)
|
162
|
+
- [ ] **Clean Architecture**: Folge `lib/features/user/` Struktur
|
163
|
+
- [ ] **Cubit State Management**: Wie `lib/features/auth/presentation/cubit/auth_cubit.dart`
|
164
|
+
- [ ] **Repository Pattern**: Wie `lib/features/user/data/repositories/user_repository_impl.dart`
|
165
|
+
- [ ] **Dependency Injection**: Registrierung in `lib/core/di/injection_container.dart`
|
166
|
+
|
167
|
+
### Code Integration Requirements (ZUERST PRÜFEN!)
|
168
|
+
- [ ] **Before New API Client**: Erweitere `lib/shared/services/api_service.dart`
|
169
|
+
- [ ] **Before New WebSocket**: Prüfe `lib/shared/services/websocket_service.dart`
|
170
|
+
- [ ] **Before New Widgets**: Prüfe `lib/shared/widgets/` für ähnliche Komponenten
|
171
|
+
- [ ] **Before New Utils**: Prüfe `lib/shared/utils/` für Helper-Functions
|
172
|
+
- [ ] **Before New Services**: Prüfe `lib/shared/services/` für ähnliche Services
|
173
|
+
|
174
|
+
### Performance Requirements (BESTEHENDE OPTIMIERUNGEN NUTZEN!)
|
175
|
+
- [ ] **Image Caching**: Nutze bestehende `lib/shared/services/image_cache_service.dart`
|
176
|
+
- [ ] **Network Optimization**: Folge bestehende API-Caching-Patterns
|
177
|
+
- [ ] **Memory Management**: Wie in `lib/features/video/` implementiert
|
178
|
+
|
179
|
+
## Auto-Analysis Instructions
|
180
|
+
> Für das smart-auto-detect System
|
181
|
+
|
182
|
+
### Code Analysis Tasks
|
183
|
+
1. **Scan Similar Features**:
|
184
|
+
```bash
|
185
|
+
# Prüfe Video-Feature für Player-Patterns
|
186
|
+
find lib/features/video/ -name "*.dart" | head -10
|
187
|
+
|
188
|
+
# Prüfe Chat-Feature für Message-Patterns
|
189
|
+
find lib/features/chat/ -name "*.dart" | head -10
|
190
|
+
|
191
|
+
# Prüfe Camera-Feature für Aufnahme-Patterns
|
192
|
+
find lib/features/camera/ -name "*.dart" | head -10
|
193
|
+
```
|
194
|
+
|
195
|
+
2. **Shared Component Analysis**:
|
196
|
+
```bash
|
197
|
+
# Prüfe verfügbare Widgets
|
198
|
+
ls -la lib/shared/widgets/ | grep -E "(video|chat|button|loading)"
|
199
|
+
|
200
|
+
# Prüfe verfügbare Services
|
201
|
+
ls -la lib/shared/services/ | grep -E "(api|websocket|navigation)"
|
202
|
+
|
203
|
+
# Prüfe verfügbare Utils
|
204
|
+
ls -la lib/shared/utils/ | grep -E "(validator|permission|formatter)"
|
205
|
+
```
|
206
|
+
|
207
|
+
### Architect Fallback Rules
|
208
|
+
> Wenn Pfade nicht spezifiziert sind:
|
209
|
+
|
210
|
+
1. **Feature Complexity**: HOCH → Eigenes Feature-Verzeichnis
|
211
|
+
2. **Dependencies**: Video + Chat + Camera → Nutze bestehende Integration-Patterns
|
212
|
+
3. **UI Complexity**: Multiple Screens → Folge `lib/features/video/` Struktur
|
213
|
+
|
214
|
+
## User Stories
|
215
|
+
|
216
|
+
### Epic: Live Streaming Infrastructure
|
217
|
+
- Als Entwickler möchte ich bestehende Video-Player-Komponenten erweitern, damit ich keine redundante Player-Logik erstelle
|
218
|
+
- Als Entwickler möchte ich bestehende Chat-Infrastruktur nutzen, damit Real-time-Messaging bereits funktioniert
|
219
|
+
- Als Entwickler möchte ich bestehende Camera-Services verwenden, damit Permissions bereits verwaltet sind
|
220
|
+
|
221
|
+
### Epic: Stream Creation & Management
|
222
|
+
- Als Content Creator möchte ich den vertrauten Camera-Button verwenden, damit die Stream-Erstellung intuitiv ist
|
223
|
+
- Als Content Creator möchte ich bestehende Navigation-Patterns nutzen, damit die App konsistent bleibt
|
224
|
+
- Als Content Creator möchte ich bekannte UI-Komponenten sehen, damit die Bedienung vertraut ist
|
225
|
+
|
226
|
+
### Epic: Stream Consumption
|
227
|
+
- Als Viewer möchte ich den gewohnten Video-Player sehen, damit die Bedienung vertraut ist
|
228
|
+
- Als Viewer möchte ich das bekannte Chat-Interface nutzen, damit ich sofort weiß, wie ich interagiere
|
229
|
+
- Als Viewer möchte ich konsistente Loading-States sehen, damit die App professionell wirkt
|
230
|
+
|
231
|
+
## Dependencies
|
232
|
+
|
233
|
+
### Existing Code Dependencies (WIEDERVERWENDEN!)
|
234
|
+
- `lib/features/video/` - Video Player Base-Funktionalität
|
235
|
+
- `lib/features/chat/` - Real-time Chat Infrastructure
|
236
|
+
- `lib/features/camera/` - Camera Access & Permissions
|
237
|
+
- `lib/shared/services/api_service.dart` - HTTP Client für Stream-APIs
|
238
|
+
- `lib/shared/services/websocket_service.dart` - Real-time Communication
|
239
|
+
- `lib/shared/widgets/` - UI Components (Button, Loading, Error)
|
240
|
+
|
241
|
+
### New External Dependencies
|
242
|
+
- `webrtc_interface: ^1.0.0` - Für Live-Streaming
|
243
|
+
- `agora_rtc_engine: ^6.0.0` - Stream Infrastructure (falls nicht WebRTC)
|
244
|
+
|
245
|
+
### Backend Dependencies
|
246
|
+
- WebRTC Signaling Server
|
247
|
+
- Stream Media Server (RTMP/HLS)
|
248
|
+
- Chat WebSocket Endpoints (erweitere bestehende)
|
249
|
+
|
250
|
+
## Migration/Integration Notes
|
251
|
+
|
252
|
+
### Existing Feature Integration
|
253
|
+
- [ ] **Video Feature**: Erweitere Player für Live-Streams
|
254
|
+
- [ ] **Chat Feature**: Adaptiere für Stream-spezifische Messages
|
255
|
+
- [ ] **Home Feature**: Integriere Stream-Liste in Feed
|
256
|
+
- [ ] **Profile Feature**: Füge Stream-History hinzu
|
257
|
+
|
258
|
+
### Navigation Integration
|
259
|
+
- [ ] Erweitere `lib/core/routing/app_router.dart`:
|
260
|
+
```dart
|
261
|
+
GoRoute(
|
262
|
+
path: '/livestream',
|
263
|
+
builder: (context, state) => const StreamListPage(),
|
264
|
+
),
|
265
|
+
GoRoute(
|
266
|
+
path: '/livestream/:streamId',
|
267
|
+
builder: (context, state) => StreamViewerPage(
|
268
|
+
streamId: state.params['streamId']!,
|
269
|
+
),
|
270
|
+
),
|
271
|
+
```
|
272
|
+
|
273
|
+
### State Management Integration
|
274
|
+
- [ ] Erweitere globale App-State falls nötig
|
275
|
+
- [ ] Integration mit bestehenden User-State für Streamer-Info
|
276
|
+
- [ ] Benachrichtigungs-State für Stream-Alerts
|
277
|
+
|
278
|
+
Das ist ein intelligentes PRD, das maximale Code-Wiederverwendung sicherstellt! 🧠✨
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# Onboarding Product Requirements Document
|
2
|
+
|
3
|
+
## 1. Overview
|
4
|
+
This document outlines the requirements for the **User Onboarding** feature in our Flutter mobile application. The onboarding flow should guide new users through the app's key features and help them get started quickly.
|
5
|
+
|
6
|
+
## 2. Feature Description
|
7
|
+
A comprehensive onboarding experience consisting of:
|
8
|
+
- Welcome screen with app introduction
|
9
|
+
- Feature highlights (3-4 key screens)
|
10
|
+
- Account setup/login integration
|
11
|
+
- Permissions requests (notifications, location, etc.)
|
12
|
+
- Tutorial completion confirmation
|
13
|
+
|
14
|
+
The onboarding should be skippable and only shown to first-time users.
|
15
|
+
|
16
|
+
## 3. Functional Requirements
|
17
|
+
- FR1: Display welcome screen with app logo and tagline
|
18
|
+
- FR2: Show 3-4 feature highlight screens with illustrations
|
19
|
+
- FR3: Integrate with existing authentication system
|
20
|
+
- FR4: Request necessary permissions (push notifications, location)
|
21
|
+
- FR5: Allow users to skip onboarding at any point
|
22
|
+
- FR6: Remember onboarding completion status
|
23
|
+
- FR7: Provide "Get Started" button to proceed to main app
|
24
|
+
- FR8: Support both light and dark themes
|
25
|
+
|
26
|
+
## 4. Non-Functional Requirements
|
27
|
+
- NFR1: Performance - Smooth page transitions with animations
|
28
|
+
- NFR2: Accessibility - Support for screen readers and large text
|
29
|
+
- NFR3: Localization - Support for all app languages
|
30
|
+
- NFR4: Security - No sensitive data collection during onboarding
|
31
|
+
- NFR5: Analytics - Track onboarding completion rates
|
32
|
+
|
33
|
+
## 5. User Stories
|
34
|
+
- As a new user, I want to understand what the app does so that I can decide to continue using it.
|
35
|
+
- As a new user, I want to see key features highlighted so that I know what's available.
|
36
|
+
- As a new user, I want to quickly set up my account so that I can start using the app.
|
37
|
+
- As a returning user, I want to skip onboarding so that I can access the app immediately.
|
38
|
+
- As a user with accessibility needs, I want the onboarding to be screen reader friendly.
|
39
|
+
|
40
|
+
## 6. Implementation Details (Optional - for Brownfield Projects)
|
41
|
+
**Implementation Path:** `lib/features/onboarding`
|
42
|
+
* **Rationale**: New standalone feature that doesn't interfere with existing authentication flow. Clean separation from other features.
|
43
|
+
* **Integration Points**:
|
44
|
+
- `lib/main.dart` (for routing - add onboarding route)
|
45
|
+
- `lib/core/di/injection_container.dart` (for dependency injection)
|
46
|
+
- `lib/features/auth/presentation/cubit/auth_cubit.dart` (check if user is first-time)
|
47
|
+
- `lib/shared/widgets/base_scaffold.dart` (for consistent styling)
|
48
|
+
- `lib/core/storage/local_storage_service.dart` (store onboarding completion)
|
49
|
+
* **Existing Components to Check for Reuse**:
|
50
|
+
- `lib/shared/widgets/custom_button.dart` (for CTA buttons)
|
51
|
+
- `lib/shared/widgets/loading_widget.dart` (for loading states)
|
52
|
+
- `lib/shared/utils/theme_helper.dart` (for theme-aware styling)
|
53
|
+
- `lib/shared/widgets/animated_page_view.dart` (if exists for page transitions)
|
54
|
+
- `lib/features/auth/data/models/user_model.dart` (for user state)
|
55
|
+
- `lib/core/error/failures.dart` (for error handling)
|
56
|
+
|
57
|
+
## 7. UI Reference (Optional)
|
58
|
+
* **Mockups/Wireframes**:
|
59
|
+
- `docs/ui/mockups/onboarding_welcome_screen.png`
|
60
|
+
- `docs/ui/mockups/onboarding_feature_highlights.png`
|
61
|
+
- `docs/ui/mockups/onboarding_permissions.png`
|
62
|
+
- `docs/ui/mockups/onboarding_completion.png`
|
63
|
+
* **Design Notes**:
|
64
|
+
- Use app's primary brand colors
|
65
|
+
- Consistent with Material 3 design system
|
66
|
+
- Smooth page transitions with fade/slide animations
|
67
|
+
- Minimum 44pt touch targets for accessibility
|
68
|
+
|
69
|
+
## 8. Acceptance Criteria
|
70
|
+
- AC1: New users see onboarding flow on first app launch
|
71
|
+
- AC2: Returning users bypass onboarding and go directly to main app
|
72
|
+
- AC3: Users can skip onboarding at any point using "Skip" button
|
73
|
+
- AC4: All text is localized and supports app's languages
|
74
|
+
- AC5: Onboarding works in both light and dark themes
|
75
|
+
- AC6: Page transitions are smooth with appropriate animations
|
76
|
+
- AC7: Permissions are requested at appropriate moments
|
77
|
+
- AC8: Onboarding completion is persisted locally
|
78
|
+
- AC9: Analytics events are fired for onboarding steps
|
79
|
+
- AC10: Accessibility features work correctly (screen readers, large text)
|
80
|
+
|
81
|
+
## 9. Dependencies
|
82
|
+
- Existing authentication system integration
|
83
|
+
- Local storage service for persistence
|
84
|
+
- Analytics service for tracking
|
85
|
+
- Permission handling service
|
86
|
+
- Theme system integration
|
87
|
+
|
88
|
+
## 10. Future Scope
|
89
|
+
- A/B testing different onboarding flows
|
90
|
+
- Personalized onboarding based on user type
|
91
|
+
- Interactive tutorials for complex features
|
92
|
+
- Video introductions for key features
|
93
|
+
- Progressive onboarding (show features when relevant)
|
@@ -111,12 +111,38 @@ security_considerations:
|
|
111
111
|
- Prevent UI-based attacks (like tapjacking)
|
112
112
|
|
113
113
|
standard_workflow:
|
114
|
-
- Think through UI requirements and read existing codebase
|
115
|
-
- Write implementation plan to tasks/todo.md
|
116
|
-
- Get plan verified before beginning work
|
117
|
-
-
|
118
|
-
-
|
119
|
-
-
|
120
|
-
-
|
121
|
-
-
|
114
|
+
- MANDATORY: Think through UI requirements and read existing codebase FIRST
|
115
|
+
- MANDATORY: Write detailed implementation plan to tasks/todo.md with checkable items
|
116
|
+
- MANDATORY: Get plan verified before beginning ANY work
|
117
|
+
- MANDATORY: Check lib/shared/widgets/ for existing components BEFORE creating new ones
|
118
|
+
- MANDATORY: Follow existing UI patterns - NEVER create new patterns without approval
|
119
|
+
- MANDATORY: Use AppLocalizations for ALL text - NO static text allowed
|
120
|
+
- MANDATORY: Implement UI components marking todo items complete as you go
|
121
|
+
- MANDATORY: Provide high-level explanations of changes at every step
|
122
|
+
- MANDATORY: Keep changes simple and focused - minimal code impact
|
123
|
+
- MANDATORY: Ensure all 5 quality criteria pass (DRY, Readable, Maintainable, Performant, Testable)
|
124
|
+
- MANDATORY: Add review section to todo.md with quality validation
|
125
|
+
- MANDATORY: Make git commit after completion with proper message
|
126
|
+
|
127
|
+
mandatory_quality_gates:
|
128
|
+
- DRY: No widget duplication - reuse existing shared widgets
|
129
|
+
- Readable: Clear widget composition and self-documenting code
|
130
|
+
- Maintainable: Modular widget architecture following existing patterns
|
131
|
+
- Performant: Optimized widget trees with const constructors
|
132
|
+
- Testable: All widgets must have widget tests
|
133
|
+
|
134
|
+
mandatory_pre_coding_checklist:
|
135
|
+
- Check lib/shared/widgets/ for existing similar widgets
|
136
|
+
- Review existing page structures in lib/features/*/presentation/pages/
|
137
|
+
- Verify theme compliance with lib/shared/theme/app_theme.dart
|
138
|
+
- Plan localization keys - NO static text allowed
|
139
|
+
- Identify reusable components before creating new ones
|
140
|
+
- Follow existing naming conventions exactly
|
141
|
+
|
142
|
+
mandatory_failure_conditions:
|
143
|
+
- Static text in widgets (instant failure)
|
144
|
+
- Widget duplication when shared widget exists (instant failure)
|
145
|
+
- Breaking existing UI patterns (instant failure)
|
146
|
+
- Missing widget tests (instant failure)
|
147
|
+
- Theme inconsistencies (instant failure)
|
122
148
|
```
|
@@ -548,4 +548,70 @@ flutter test integration_test/
|
|
548
548
|
- Use secure token storage
|
549
549
|
- Handle token refresh properly
|
550
550
|
|
551
|
+
## 🚨 MANDATORY DEVELOPMENT RULES - ALWAYS FOLLOW!
|
552
|
+
|
553
|
+
### CRITICAL: These rules MUST be followed by ALL agents, ALL workflows, ALL IDEs!
|
554
|
+
|
555
|
+
#### Standard Workflow (NO EXCEPTIONS!)
|
556
|
+
1. **THINK**: Analyze problem and read existing codebase
|
557
|
+
2. **PLAN**: Write detailed plan to `tasks/todo.md` with checkable items
|
558
|
+
3. **VERIFY**: Get plan approved before starting ANY coding
|
559
|
+
4. **WORK**: Execute todo items, marking complete as you go
|
560
|
+
5. **EXPLAIN**: Provide high-level explanations at every step
|
561
|
+
6. **SIMPLE**: Make minimal impact changes - avoid complexity
|
562
|
+
7. **REVIEW**: Add review section to `todo.md` with summary
|
563
|
+
8. **COMMIT**: Make git commit after each completed task
|
564
|
+
|
565
|
+
#### MANDATORY Quality Gates (ALL 5 MUST PASS!)
|
566
|
+
- 🧹 **DRY**: No code duplication - ALWAYS reuse existing code
|
567
|
+
- 📖 **Readable**: Self-documenting code with clear naming
|
568
|
+
- 🔧 **Maintainable**: Clean Architecture with proper separation
|
569
|
+
- ⚡ **Performant**: Efficient algorithms and resource usage
|
570
|
+
- 🧪 **Testable**: Comprehensive test coverage
|
571
|
+
|
572
|
+
#### MANDATORY Pre-Coding Checklist
|
573
|
+
- [ ] **Check existing code** for similar functionality FIRST
|
574
|
+
- [ ] **Review shared components** in `lib/shared/`
|
575
|
+
- [ ] **Follow existing patterns** - NEVER create new patterns
|
576
|
+
- [ ] **Plan localization keys** - NO static text allowed
|
577
|
+
- [ ] **Verify architecture compliance** with Clean Architecture
|
578
|
+
- [ ] **Identify reusable components** before creating new ones
|
579
|
+
|
580
|
+
#### MANDATORY Flutter Rules
|
581
|
+
- ✅ **Clean Architecture**: Presentation → Domain ← Data
|
582
|
+
- ✅ **Cubit State Management**: Follow existing Cubit patterns
|
583
|
+
- ✅ **Repository Pattern**: Implement like existing repositories
|
584
|
+
- ✅ **Dependency Injection**: Use GetIt like existing features
|
585
|
+
- ✅ **Localization**: ALL text must use AppLocalizations
|
586
|
+
- ✅ **Testing**: Unit tests for business logic, widget tests for UI
|
587
|
+
|
588
|
+
#### MANDATORY Code Integration Rules
|
589
|
+
- ✅ **BEFORE new files**: Check if similar functionality exists
|
590
|
+
- ✅ **BEFORE new widgets**: Review `lib/shared/widgets/`
|
591
|
+
- ✅ **BEFORE new services**: Check `lib/shared/services/`
|
592
|
+
- ✅ **BEFORE new utilities**: Review `lib/shared/utils/`
|
593
|
+
- ✅ **EXTEND existing code** instead of duplicating
|
594
|
+
- ✅ **FOLLOW existing naming conventions** exactly
|
595
|
+
|
596
|
+
#### MANDATORY Validation Criteria
|
597
|
+
All code MUST pass these criteria:
|
598
|
+
1. **Architecture**: Follows Clean Architecture with proper layer separation
|
599
|
+
2. **Localization**: All text supports multi-language (NO static text!)
|
600
|
+
3. **Quality**: Passes all 5 quality criteria (DRY, Readable, Maintainable, Performant, Testable)
|
601
|
+
4. **Documentation**: Code is properly documented with examples
|
602
|
+
5. **Consistency**: Code style matches existing patterns EXACTLY
|
603
|
+
|
604
|
+
#### FAILURE CONDITIONS (NEVER ALLOWED!)
|
605
|
+
- ❌ Static text in UI (instant failure)
|
606
|
+
- ❌ Code duplication (instant failure)
|
607
|
+
- ❌ Breaking existing patterns (instant failure)
|
608
|
+
- ❌ Missing tests (instant failure)
|
609
|
+
- ❌ Architecture violations (instant failure)
|
610
|
+
|
611
|
+
### 🎯 REMEMBER: When in doubt, ALWAYS follow existing patterns!
|
612
|
+
|
613
|
+
**These rules apply to ALL development work - NO EXCEPTIONS!**
|
614
|
+
|
615
|
+
---
|
616
|
+
|
551
617
|
This guide ensures consistent, high-quality Flutter development that meets professional standards and security requirements.
|