appiq-solution 1.6.3 → 1.6.5
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/bmad-core/core-config-extended.yaml +39 -0
- package/bmad-core/core-config-smart.yaml +184 -0
- 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/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
- package/tools/installer/bin/bmad.js +6 -6
@@ -0,0 +1,202 @@
|
|
1
|
+
# {Feature Name} PRD
|
2
|
+
|
3
|
+
## Overview
|
4
|
+
Brief description of the feature
|
5
|
+
|
6
|
+
## Implementation Paths
|
7
|
+
> Specify where this feature should be implemented. If not specified, Architect will determine optimal location.
|
8
|
+
|
9
|
+
### Suggested File Structure
|
10
|
+
```
|
11
|
+
lib/
|
12
|
+
├── features/
|
13
|
+
│ └── {feature_name}/ # ← Main feature folder
|
14
|
+
│ ├── data/
|
15
|
+
│ │ ├── datasources/
|
16
|
+
│ │ │ └── {feature}_remote_datasource.dart
|
17
|
+
│ │ ├── models/
|
18
|
+
│ │ │ └── {feature}_model.dart
|
19
|
+
│ │ └── repositories/
|
20
|
+
│ │ └── {feature}_repository_impl.dart
|
21
|
+
│ ├── domain/
|
22
|
+
│ │ ├── entities/
|
23
|
+
│ │ │ └── {feature}_entity.dart
|
24
|
+
│ │ ├── repositories/
|
25
|
+
│ │ │ └── {feature}_repository.dart
|
26
|
+
│ │ └── usecases/
|
27
|
+
│ │ ├── get_{feature}_usecase.dart
|
28
|
+
│ │ └── create_{feature}_usecase.dart
|
29
|
+
│ └── presentation/
|
30
|
+
│ ├── cubit/
|
31
|
+
│ │ ├── {feature}_cubit.dart
|
32
|
+
│ │ └── {feature}_state.dart
|
33
|
+
│ ├── pages/
|
34
|
+
│ │ └── {feature}_page.dart
|
35
|
+
│ └── widgets/
|
36
|
+
│ └── {feature}_widget.dart
|
37
|
+
```
|
38
|
+
|
39
|
+
### Integration Points
|
40
|
+
> Specify existing files/classes to integrate with:
|
41
|
+
|
42
|
+
- **Existing Pages**: `lib/features/home/presentation/pages/home_page.dart`
|
43
|
+
- **Shared Services**: `lib/shared/services/api_service.dart`
|
44
|
+
- **Common Widgets**: `lib/shared/widgets/custom_button.dart`
|
45
|
+
- **Routing**: `lib/core/routing/app_router.dart`
|
46
|
+
- **DI Container**: `lib/core/di/injection_container.dart`
|
47
|
+
|
48
|
+
### Code Reuse Analysis
|
49
|
+
> List existing components that should be checked/reused:
|
50
|
+
|
51
|
+
#### Existing Similar Features
|
52
|
+
- [ ] Check `lib/features/user_profile/` for similar patterns
|
53
|
+
- [ ] Review `lib/features/authentication/` for auth integration
|
54
|
+
- [ ] Analyze `lib/shared/widgets/` for reusable UI components
|
55
|
+
|
56
|
+
#### Shared Components to Reuse
|
57
|
+
- [ ] `lib/shared/widgets/loading_widget.dart` - For loading states
|
58
|
+
- [ ] `lib/shared/widgets/error_widget.dart` - For error handling
|
59
|
+
- [ ] `lib/shared/services/navigation_service.dart` - For navigation
|
60
|
+
- [ ] `lib/shared/utils/validators.dart` - For input validation
|
61
|
+
|
62
|
+
#### Common Patterns to Follow
|
63
|
+
- [ ] Follow existing Cubit naming: `{Feature}Cubit`, `{Feature}State`
|
64
|
+
- [ ] Use existing error handling: `Failure` classes in `lib/core/error/`
|
65
|
+
- [ ] Follow existing API patterns: `ApiResponse<T>` wrapper
|
66
|
+
- [ ] Use existing dependency injection patterns
|
67
|
+
|
68
|
+
## UI References
|
69
|
+
> Include mockups, wireframes, or reference images
|
70
|
+
|
71
|
+
### Design Assets Location
|
72
|
+
```
|
73
|
+
assets/
|
74
|
+
├── images/
|
75
|
+
│ └── {feature_name}/
|
76
|
+
│ ├── mockup_main_screen.png
|
77
|
+
│ ├── wireframe_flow.png
|
78
|
+
│ └── ui_components_reference.png
|
79
|
+
└── icons/
|
80
|
+
└── {feature_name}/
|
81
|
+
├── feature_icon.svg
|
82
|
+
└── action_icons/
|
83
|
+
```
|
84
|
+
|
85
|
+
### UI Reference Links
|
86
|
+
- **Figma Design**: [Link to Figma prototype]
|
87
|
+
- **Design System**: [Link to design system/style guide]
|
88
|
+
- **Similar UI Patterns**: `lib/features/existing_feature/presentation/pages/` for reference
|
89
|
+
|
90
|
+
### Visual Guidelines
|
91
|
+
- **Theme**: Follow existing `lib/shared/theme/app_theme.dart`
|
92
|
+
- **Colors**: Use existing color palette from `AppColors`
|
93
|
+
- **Typography**: Follow `AppTextStyles` definitions
|
94
|
+
- **Spacing**: Use `AppSpacing` constants
|
95
|
+
- **Components**: Extend existing `lib/shared/widgets/` where possible
|
96
|
+
|
97
|
+
## Features
|
98
|
+
- Feature 1: Description
|
99
|
+
- Feature 2: Description
|
100
|
+
- Feature 3: Description
|
101
|
+
|
102
|
+
## Acceptance Criteria
|
103
|
+
### Feature 1
|
104
|
+
- [ ] Criteria 1
|
105
|
+
- [ ] Criteria 2
|
106
|
+
|
107
|
+
## Technical Requirements
|
108
|
+
|
109
|
+
### Architecture Compliance
|
110
|
+
- [ ] Follow Clean Architecture pattern
|
111
|
+
- [ ] Use existing Cubit state management patterns
|
112
|
+
- [ ] Implement Repository pattern following existing conventions
|
113
|
+
- [ ] Use GetIt dependency injection like other features
|
114
|
+
|
115
|
+
### Code Integration Requirements
|
116
|
+
- [ ] **Before creating new files**: Check if similar functionality exists
|
117
|
+
- [ ] **Before new widgets**: Review `lib/shared/widgets/` for reusable components
|
118
|
+
- [ ] **Before new services**: Check `lib/shared/services/` for existing solutions
|
119
|
+
- [ ] **Before new utilities**: Review `lib/shared/utils/` for helper functions
|
120
|
+
|
121
|
+
### Performance Requirements
|
122
|
+
- [ ] Reuse existing cached data where applicable
|
123
|
+
- [ ] Follow existing image loading/caching patterns
|
124
|
+
- [ ] Use existing performance monitoring setup
|
125
|
+
|
126
|
+
## Auto-Analysis Instructions
|
127
|
+
> Instructions for the auto-detect system
|
128
|
+
|
129
|
+
### Code Analysis Tasks
|
130
|
+
1. **Scan Existing Codebase**:
|
131
|
+
```bash
|
132
|
+
# Analyze similar features
|
133
|
+
find lib/features/ -name "*{similar_keyword}*" -type f
|
134
|
+
|
135
|
+
# Check shared components
|
136
|
+
ls -la lib/shared/widgets/ | grep -i {relevant_widgets}
|
137
|
+
|
138
|
+
# Review existing services
|
139
|
+
find lib/shared/services/ -name "*{service_type}*"
|
140
|
+
```
|
141
|
+
|
142
|
+
2. **Dependency Analysis**:
|
143
|
+
- Check `pubspec.yaml` for existing packages that could be reused
|
144
|
+
- Review `lib/core/di/injection_container.dart` for existing service registrations
|
145
|
+
- Analyze existing API endpoints in data sources
|
146
|
+
|
147
|
+
3. **Pattern Analysis**:
|
148
|
+
- Review existing Cubit implementations for state management patterns
|
149
|
+
- Check existing repository implementations for data access patterns
|
150
|
+
- Analyze existing widget compositions for UI patterns
|
151
|
+
|
152
|
+
### Architect Fallback Rules
|
153
|
+
> If implementation paths are not specified:
|
154
|
+
|
155
|
+
1. **Analyze Feature Complexity**:
|
156
|
+
- Simple feature → Integrate into existing feature folder
|
157
|
+
- Complex feature → Create new feature folder
|
158
|
+
- Cross-cutting concern → Add to shared/
|
159
|
+
|
160
|
+
2. **Check Dependencies**:
|
161
|
+
- Heavy external dependencies → Separate feature
|
162
|
+
- Uses existing services → Integrate with existing structure
|
163
|
+
- New infrastructure needed → Consult with data layer architecture
|
164
|
+
|
165
|
+
3. **UI Complexity Assessment**:
|
166
|
+
- Single screen → Add to existing feature
|
167
|
+
- Multiple screens with navigation → New feature folder
|
168
|
+
- Shared UI components → Extract to shared/widgets/
|
169
|
+
|
170
|
+
## User Stories
|
171
|
+
### Epic: {Epic Name}
|
172
|
+
- As a user I want to... so that...
|
173
|
+
- As a user I want to... so that...
|
174
|
+
|
175
|
+
## Dependencies
|
176
|
+
- Backend API endpoints
|
177
|
+
- Third-party integrations
|
178
|
+
- Design assets
|
179
|
+
- Existing code dependencies
|
180
|
+
|
181
|
+
## Migration/Integration Notes
|
182
|
+
> Special considerations for integrating with existing codebase
|
183
|
+
|
184
|
+
### Database Changes
|
185
|
+
- [ ] Check if existing database schema can be extended
|
186
|
+
- [ ] Review existing migration patterns
|
187
|
+
- [ ] Consider data migration requirements
|
188
|
+
|
189
|
+
### API Changes
|
190
|
+
- [ ] Review existing API client setup
|
191
|
+
- [ ] Check if new endpoints fit existing patterns
|
192
|
+
- [ ] Consider backwards compatibility
|
193
|
+
|
194
|
+
### Navigation Changes
|
195
|
+
- [ ] Review existing routing structure
|
196
|
+
- [ ] Check if new routes fit existing patterns
|
197
|
+
- [ ] Consider deep linking requirements
|
198
|
+
|
199
|
+
### State Management Integration
|
200
|
+
- [ ] Review existing global state management
|
201
|
+
- [ ] Check if feature state needs to be shared
|
202
|
+
- [ ] Consider state persistence requirements
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# Livestream Feature PRD
|
2
|
+
|
3
|
+
## Overview
|
4
|
+
Implementierung einer Live-Streaming-Funktionalität in die bestehende Flutter-App, die es Benutzern ermöglicht, Live-Videos zu streamen und zu konsumieren.
|
5
|
+
|
6
|
+
## Features
|
7
|
+
- **Live Stream Starten**: Benutzer können einen Live-Stream über die Kamera starten
|
8
|
+
- **Stream Viewer**: Andere Benutzer können Live-Streams ansehen
|
9
|
+
- **Chat Integration**: Real-time Chat während des Streams
|
10
|
+
- **Stream Controls**: Play/Pause, Qualitätseinstellungen, Vollbild
|
11
|
+
- **Stream Discovery**: Liste aktiver Streams
|
12
|
+
- **Stream Analytics**: Viewer-Zahlen, Stream-Dauer
|
13
|
+
|
14
|
+
## Acceptance Criteria
|
15
|
+
|
16
|
+
### Live Stream Starten
|
17
|
+
- [ ] Benutzer kann über einen "Go Live" Button einen Stream starten
|
18
|
+
- [ ] Kamera-Berechtigung wird angefordert und verwaltet
|
19
|
+
- [ ] Stream-Titel und Beschreibung können eingegeben werden
|
20
|
+
- [ ] Stream-Qualität kann ausgewählt werden (720p, 1080p)
|
21
|
+
- [ ] Stream kann jederzeit beendet werden
|
22
|
+
|
23
|
+
### Stream Viewer
|
24
|
+
- [ ] Liste aller aktiven Streams wird angezeigt
|
25
|
+
- [ ] Stream kann durch Tippen geöffnet werden
|
26
|
+
- [ ] Video-Player mit Standard-Controls (Play/Pause, Lautstärke)
|
27
|
+
- [ ] Fullscreen-Modus verfügbar
|
28
|
+
- [ ] Viewer-Anzahl wird angezeigt
|
29
|
+
|
30
|
+
### Chat Integration
|
31
|
+
- [ ] Chat-Interface neben/unter dem Video
|
32
|
+
- [ ] Nachrichten werden in Echtzeit angezeigt
|
33
|
+
- [ ] Benutzer können Nachrichten senden
|
34
|
+
- [ ] Chat-Moderation (Nachrichten löschen)
|
35
|
+
- [ ] Emoji-Support im Chat
|
36
|
+
|
37
|
+
## Technical Requirements
|
38
|
+
|
39
|
+
### Flutter Architecture
|
40
|
+
- Clean Architecture mit Domain/Data/Presentation Layers
|
41
|
+
- Cubit für State Management
|
42
|
+
- Repository Pattern für Data Access
|
43
|
+
- Dependency Injection mit GetIt
|
44
|
+
|
45
|
+
### Backend Integration
|
46
|
+
- WebRTC für Live-Streaming
|
47
|
+
- WebSocket für Real-time Chat
|
48
|
+
- REST API für Stream-Metadaten
|
49
|
+
- Firebase/Supabase für User Management
|
50
|
+
|
51
|
+
### Performance
|
52
|
+
- Adaptive Bitrate Streaming
|
53
|
+
- Efficient Memory Management
|
54
|
+
- Background Processing für Chat
|
55
|
+
- Caching für Stream-Thumbnails
|
56
|
+
|
57
|
+
## User Stories
|
58
|
+
|
59
|
+
### Epic: Live Streaming Core
|
60
|
+
- Als Content Creator möchte ich einen Live-Stream starten können, damit ich meine Inhalte in Echtzeit teilen kann
|
61
|
+
- Als Viewer möchte ich aktive Streams entdecken können, damit ich interessante Inhalte finden kann
|
62
|
+
- Als Viewer möchte ich Streams in hoher Qualität ansehen können, damit ich ein gutes Seherlebnis habe
|
63
|
+
|
64
|
+
### Epic: Chat & Interaction
|
65
|
+
- Als Viewer möchte ich während des Streams chatten können, damit ich mit dem Creator und anderen Viewern interagieren kann
|
66
|
+
- Als Content Creator möchte ich Chat-Nachrichten moderieren können, damit ich eine positive Community-Atmosphäre schaffe
|
67
|
+
- Als Benutzer möchte ich Emojis im Chat verwenden können, damit ich meine Reaktionen ausdrücken kann
|
68
|
+
|
69
|
+
### Epic: Stream Management
|
70
|
+
- Als Content Creator möchte ich meine Stream-Einstellungen anpassen können, damit ich die beste Qualität für meine Zielgruppe biete
|
71
|
+
- Als Content Creator möchte ich Stream-Analytics einsehen können, damit ich den Erfolg meiner Streams messen kann
|
72
|
+
- Als Benutzer möchte ich Streams als Favoriten markieren können, damit ich sie später leicht wiederfinden kann
|
73
|
+
|
74
|
+
## Dependencies
|
75
|
+
- **Backend API**: Stream-Management Endpoints
|
76
|
+
- **WebRTC Service**: Live-Streaming Infrastructure
|
77
|
+
- **Chat Service**: Real-time Messaging
|
78
|
+
- **CDN**: Video-Delivery Network
|
79
|
+
- **Push Notifications**: Stream-Start Benachrichtigungen
|
80
|
+
|
81
|
+
## Design Requirements
|
82
|
+
- Material Design 3 Guidelines
|
83
|
+
- Responsive Layout (Phone/Tablet)
|
84
|
+
- Dark/Light Theme Support
|
85
|
+
- Accessibility Compliance (WCAG 2.1)
|
86
|
+
- Lokalisierung (DE/EN)
|
87
|
+
|
88
|
+
## Testing Requirements
|
89
|
+
- Unit Tests für alle Business Logic
|
90
|
+
- Widget Tests für UI Components
|
91
|
+
- Integration Tests für Stream-Flows
|
92
|
+
- Performance Tests für Video-Streaming
|
93
|
+
- Security Tests für User Data
|
@@ -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! 🧠✨
|
@@ -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
|
```
|