prprompts-flutter-generator
Version:
AI-powered Flutter development with full automation + official extension support - Generate 32 security-audited guides & auto-implement in 2-3 hours. NEW v5.1: Official Claude Code plugin with hooks, Gemini TOML commands, Qwen MCP settings. Features: Comp
1,356 lines (1,140 loc) • 36.7 kB
Markdown
# Feature Implementation Examples - Real-World Scenarios
> **8 industry-specific examples showing how to use the feature-implementer skill**
>
> Each example includes complete IMPLEMENTATION_PLAN.md specifications, expected output, and implementation notes.
## Table of Contents
1. [E-Commerce: Product Catalog](#1-e-commerce-product-catalog)
2. [Healthcare: Patient Records (HIPAA)](#2-healthcare-patient-records-hipaa)
3. [FinTech: Transaction History (PCI-DSS)](#3-fintech-transaction-history-pci-dss)
4. [Social Media: User Feed](#4-social-media-user-feed)
5. [Education: Course Management](#5-education-course-management)
6. [Real Estate: Property Listings](#6-real-estate-property-listings)
7. [Food Delivery: Order Tracking](#7-food-delivery-order-tracking)
8. [Enterprise SaaS: Team Management](#8-enterprise-saas-team-management)
## 1. E-Commerce: Product Catalog
### Scenario
Building a product browsing and search feature for an e-commerce app. Users need to:
- Browse products by category
- Search products by name/description
- Filter by price range, brand, ratings
- View product details
- Add to cart
### IMPLEMENTATION_PLAN.md Specification
```markdown
### Feature 3: Product Catalog
**Priority:** HIGH
**Estimated Time:** 8-10 hours
**Dependencies:** None
**Requirements:**
- Browse products by category (Electronics, Clothing, Home, etc.)
- Search products by name/description (fuzzy search)
- Filter products by:
- Price range ($0-$50, $50-$100, $100+)
- Brand (Apple, Samsung, Nike, etc.)
- Average rating (4+ stars, 3+ stars)
- Sort by: Price (low to high, high to low), Rating, Newest
- Pagination (20 products per page)
- View product details (images, description, reviews)
- Add to cart
**User Stories:**
- As a user, I can browse products by category
- As a user, I can search for products by name
- As a user, I can filter products by price and brand
- As a user, I can view detailed product information
- As a user, I can add products to my shopping cart
**Acceptance Criteria:**
- [ ] Product list loads in under 2 seconds
- [ ] Search returns relevant results
- [ ] Filters work independently and in combination
- [ ] Product images load progressively
- [ ] Cart badge updates immediately
- [ ] Offline: Show cached products
**Data Models:**
```dart
class Product {
final String id;
final String name;
final String description;
final double price;
final String currency;
final String brand;
final List<String> imageUrls;
final double averageRating;
final int reviewCount;
final int stockQuantity;
final String category;
final DateTime createdAt;
}
class ProductFilter {
final String? category;
final double? minPrice;
final double? maxPrice;
final String? brand;
final double? minRating;
final ProductSortBy sortBy;
}
enum ProductSortBy {
priceLowToHigh,
priceHighToLow,
rating,
newest,
}
class PaginatedProducts {
final List<Product> products;
final int page;
final int totalPages;
final bool hasMore;
}
```
**API Endpoints:**
- GET /api/products?page=1&limit=20&category=electronics
- GET /api/products/search?q=iphone&page=1
- GET /api/products/{id}
- GET /api/categories
**UI Screens:**
- ProductListScreen (grid/list view)
- ProductDetailScreen
- ProductSearchScreen
- FilterBottomSheet
**Technical Details:**
- Image caching: cached_network_image package
- Search debouncing: 500ms delay
- Infinite scroll pagination
- Skeleton loaders while loading
- Error retry with exponential backoff
```
### Usage
```bash
@claude use skill automation/feature-implementer
# Input:
Feature name: Product Catalog
Test coverage target: 75
Generate integration tests: yes
```
### Expected Output
```
✅ Feature "Product Catalog" implemented successfully!
📊 Summary:
- Files Created: 28
- Domain: 9 files (entities, use cases, repositories)
- Data: 10 files (models, data sources, repositories)
- Presentation: 9 files (BLoC, screens, widgets)
- Test Coverage: 77.3%
- Implementation Time: 7 minutes
📁 Key Files:
Domain:
- lib/features/products/domain/entities/product.dart
- lib/features/products/domain/entities/product_filter.dart
- lib/features/products/domain/usecases/get_products.dart
- lib/features/products/domain/usecases/search_products.dart
- lib/features/products/domain/usecases/get_product_details.dart
Presentation:
- lib/features/products/presentation/pages/product_list_screen.dart
- lib/features/products/presentation/pages/product_detail_screen.dart
- lib/features/products/presentation/widgets/product_card.dart
- lib/features/products/presentation/widgets/filter_bottom_sheet.dart
✨ Special Features Generated:
- Infinite scroll pagination with loading indicators
- Image caching and progressive loading
- Search debouncing (500ms)
- Skeleton loaders for better UX
- Offline mode with cached products
```
### Implementation Notes
**Pagination Handling:**
```dart
// Generated BLoC handles infinite scroll
class ProductBloc extends Bloc<ProductEvent, ProductState> {
int _currentPage = 1;
final List<Product> _allProducts = [];
Future<void> _onLoadProducts(LoadProductsEvent event, Emitter emit) async {
if (event.isRefresh) {
_currentPage = 1;
_allProducts.clear();
emit(ProductLoading());
} else {
emit(ProductLoadingMore(products: _allProducts));
}
final result = await getProducts(GetProductsParams(
page: _currentPage,
filter: event.filter,
));
result.fold(
(failure) => emit(ProductError(message: failure.message)),
(paginatedProducts) {
_allProducts.addAll(paginatedProducts.products);
_currentPage++;
emit(ProductLoaded(
products: _allProducts,
hasMore: paginatedProducts.hasMore,
));
},
);
}
}
// In UI
ListView.builder(
controller: _scrollController,
itemCount: products.length + (hasMore ? 1 : 0),
itemBuilder: (context, index) {
if (index == products.length) {
// Load more indicator
return CircularProgressIndicator();
}
return ProductCard(product: products[index]);
},
);
_scrollController.addListener(() {
if (_scrollController.position.pixels ==
_scrollController.position.maxScrollExtent) {
// Reached bottom, load more
context.read<ProductBloc>().add(LoadProductsEvent(isRefresh: false));
}
});
```
**Search Debouncing:**
```dart
// Generated search widget includes debouncing
class ProductSearchDelegate extends SearchDelegate<Product?> {
Timer? _debounce;
@override
Widget buildResults(BuildContext context) {
return BlocBuilder<ProductBloc, ProductState>(
builder: (context, state) {
if (_debounce?.isActive ?? false) _debounce!.cancel();
_debounce = Timer(Duration(milliseconds: 500), () {
// Trigger search after 500ms of no typing
context.read<ProductBloc>().add(SearchProductsEvent(query));
});
if (state is ProductLoading) {
return Center(child: CircularProgressIndicator());
} else if (state is ProductLoaded) {
return ListView.builder(
itemCount: state.products.length,
itemBuilder: (context, index) {
return ProductCard(product: state.products[index]);
},
);
}
return SizedBox.shrink();
},
);
}
}
```
## 2. Healthcare: Patient Records (HIPAA)
### Scenario
Building a patient records management feature for a healthcare app. Must comply with HIPAA regulations:
- View patient demographics and medical history
- Encrypted storage of PHI (Protected Health Information)
- Audit logging for all PHI access
- Session timeout after 15 minutes
- Role-based access control
### IMPLEMENTATION_PLAN.md Specification
```markdown
### Feature 4: Patient Records
**Priority:** CRITICAL
**Estimated Time:** 12-16 hours
**Compliance:** HIPAA
**Dependencies:** Authentication with role-based access
**Requirements:**
- View patient demographics (name, DOB, address, insurance)
- View medical history (diagnoses, medications, allergies)
- View visit notes (doctor notes, vitals, prescriptions)
- Encrypt all PHI at rest (AES-256-GCM)
- Audit log all PHI access (who, when, what)
- Auto-logout after 15 minutes of inactivity
- Role-based access:
- Doctor: Full access (read/write)
- Nurse: Limited access (read vitals, update vitals)
- Admin: Demographics only (no medical data)
**User Stories:**
- As a doctor, I can view complete patient records
- As a nurse, I can view and update patient vitals
- As an admin, I can view patient demographics for billing
- As a compliance officer, I can review PHI access logs
**Acceptance Criteria:**
- [ ] All PHI encrypted with AES-256-GCM
- [ ] Audit log created for every PHI access
- [ ] Session timeout after 15 minutes inactivity
- [ ] Role-based access enforced at API level
- [ ] PHI never logged to console or crash reports
- [ ] Offline mode disabled (PHI must stay on server)
**Security Requirements (HIPAA):**
- Encryption at rest: AES-256-GCM for all PHI
- Encryption in transit: TLS 1.2+ (HTTPS only)
- Access control: Role-based with MFA
- Audit logging: Track all create/read/update/delete of PHI
- Session management: 15-minute timeout, secure logout
- Data minimization: Only fetch necessary fields
- No PHI in logs: Redact sensitive data in error messages
**Data Models:**
```dart
class Patient {
final String id;
final String mrn; // Medical Record Number
final String firstName;
final String lastName;
final DateTime dateOfBirth;
final String gender;
final String? photoUrl;
// PHI - encrypted
final String address;
final String phone;
final String? email;
final String? ssn; // Last 4 digits only
final InsuranceInfo? insurance;
}
class MedicalHistory {
final String patientId;
final List<Diagnosis> diagnoses;
final List<Medication> medications;
final List<Allergy> allergies;
final List<Immunization> immunizations;
}
class VisitNote {
final String id;
final String patientId;
final DateTime visitDate;
final String chiefComplaint;
final Vitals vitals;
final String doctorNotes;
final List<Prescription> prescriptions;
final String doctorId;
}
class AuditLog {
final String id;
final String userId;
final String action; // VIEW_PATIENT, UPDATE_VITALS, etc.
final String resourceType; // Patient, MedicalHistory, VisitNote
final String resourceId;
final DateTime timestamp;
final String ipAddress;
final String deviceId;
}
```
**API Endpoints:**
- GET /api/patients/{id}
- GET /api/patients/{id}/medical-history
- GET /api/patients/{id}/visits
- POST /api/patients/{id}/visits
- GET /api/audit-logs?patient_id={id}
**UI Screens:**
- PatientListScreen
- PatientDetailScreen (demographics + medical summary)
- MedicalHistoryScreen (detailed history)
- VisitNoteScreen (individual visit)
- CreateVisitScreen (doctor only)
**Technical Details:**
- Encryption: encrypt package with AES-256-GCM
- Audit logging: Background sync every 5 minutes
- Session timeout: Reset on user interaction
- Role check: Middleware on every API call
- PHI redaction: Custom logger that redacts sensitive fields
```
### Usage
```bash
@claude use skill automation/feature-implementer
# Input:
Feature name: Patient Records
Test coverage target: 90
Generate integration tests: yes
```
### Expected Output
```
✅ Feature "Patient Records" implemented successfully!
📊 Summary:
- Files Created: 35
- Test Coverage: 91.2%
- Security Validated: Yes (HIPAA compliant)
- Implementation Time: 12 minutes
🔒 HIPAA Compliance Checks:
✅ PHI Encryption:
- All sensitive fields encrypted with AES-256-GCM
- Encryption keys stored in FlutterSecureStorage
- Key rotation every 90 days (scheduled)
✅ Audit Logging:
- AuditLog entity created
- All PHI access logged (user, action, timestamp, IP)
- Audit logs synced to server every 5 minutes
- Audit logs retained for 7 years (per HIPAA)
✅ Session Management:
- 15-minute inactivity timeout implemented
- SessionManager monitors user interactions
- Auto-logout on timeout with clear PHI from memory
✅ Access Control:
- Role-based permissions enforced in repository
- API calls include role header
- Unauthorized access throws AuthFailure
✅ Data Minimization:
- Only requested fields fetched from API
- SSN stored as last 4 digits only
- Full SSN NEVER sent to app
✅ No PHI in Logs:
- Custom logger redacts sensitive fields
- PHI excluded from crash reports (Sentry integration)
- Console logs disabled in production
📝 Additional Files Created:
- lib/core/security/phi_encryptor.dart
- lib/core/security/audit_logger.dart
- lib/core/security/session_manager.dart
- lib/core/logging/phi_redactor.dart
```
### Implementation Notes
**PHI Encryption:**
```dart
// Generated PHI encryptor
class PhiEncryptor {
final FlutterSecureStorage storage;
final Encrypter encrypter;
Future<String> encrypt(String plaintext) async {
final key = await _getEncryptionKey();
final iv = IV.fromSecureRandom(16);
final encrypted = encrypter.encrypt(plaintext, iv: iv);
return '${iv.base64}:${encrypted.base64}';
}
Future<String> decrypt(String ciphertext) async {
final parts = ciphertext.split(':');
final iv = IV.fromBase64(parts[0]);
final encrypted = Encrypted.fromBase64(parts[1]);
final key = await _getEncryptionKey();
return encrypter.decrypt(encrypted, iv: iv);
}
Future<Key> _getEncryptionKey() async {
var keyString = await storage.read(key: 'phi_encryption_key');
if (keyString == null) {
// Generate new key
final key = Key.fromSecureRandom(32); // AES-256
await storage.write(key: 'phi_encryption_key', value: key.base64);
keyString = key.base64;
}
return Key.fromBase64(keyString);
}
}
// Usage in model
class PatientModel extends Patient {
@override
Map<String, dynamic> toJson() {
return {
'id': id,
'first_name': firstName,
'last_name': lastName,
// PHI fields encrypted before storage
'address': phiEncryptor.encrypt(address),
'phone': phiEncryptor.encrypt(phone),
'ssn_last4': ssn, // Only last 4 digits
};
}
}
```
**Audit Logging:**
```dart
// Generated audit logger
class AuditLogger {
final AuditLogRepository repository;
Future<void> log(AuditEvent event) async {
final auditLog = AuditLog(
id: Uuid().v4(),
userId: event.userId,
action: event.action,
resourceType: event.resourceType,
resourceId: event.resourceId,
timestamp: DateTime.now(),
ipAddress: await NetworkInfo.getIpAddress(),
deviceId: await DeviceInfo.getDeviceId(),
);
// Save locally first (guaranteed)
await repository.saveLocal(auditLog);
// Sync to server (background)
_syncQueue.add(auditLog);
}
}
// Usage in use case
class GetPatientDetails implements UseCase<Patient, GetPatientParams> {
@override
Future<Either<Failure, Patient>> call(GetPatientParams params) async {
final result = await repository.getPatient(params.patientId);
// Log PHI access
result.fold(
(_) => null,
(patient) async {
await auditLogger.log(AuditEvent(
userId: params.currentUserId,
action: 'VIEW_PATIENT',
resourceType: 'Patient',
resourceId: patient.id,
));
},
);
return result;
}
}
```
**Session Timeout:**
```dart
// Generated session manager
class SessionManager {
Timer? _timeout;
final Duration inactivityLimit = Duration(minutes: 15);
final VoidCallback onTimeout;
SessionManager({required this.onTimeout});
void resetTimeout() {
_timeout?.cancel();
_timeout = Timer(inactivityLimit, () {
// Clear PHI from memory
_clearSensitiveData();
// Logout user
onTimeout();
});
}
void _clearSensitiveData() {
// Clear cached patient data
// Clear PHI from BLoC states
// Clear encryption keys from memory
}
}
// In main.dart
void main() {
final sessionManager = SessionManager(
onTimeout: () {
// Logout user
navigator.pushReplacementNamed('/session-expired');
},
);
// Reset timeout on user interaction
runApp(
GestureDetector(
onTap: () => sessionManager.resetTimeout(),
onPanDown: (_) => sessionManager.resetTimeout(),
child: MyApp(),
),
);
}
```
## 3. FinTech: Transaction History (PCI-DSS)
### Scenario
Building a transaction history and payment feature for a fintech app. Must comply with PCI-DSS:
- View transaction history
- Process payments via Stripe (tokenization)
- Display saved payment methods (last 4 digits only)
- Refund transactions
- NEVER store full credit card numbers
### IMPLEMENTATION_PLAN.md Specification
```markdown
### Feature 6: Transaction History
**Priority:** HIGH
**Estimated Time:** 10-14 hours
**Compliance:** PCI-DSS Level 1
**Dependencies:** Authentication, Stripe SDK
**Requirements:**
- View transaction history (paginated, filterable)
- Filter by:
- Date range (last 7 days, 30 days, custom)
- Transaction type (payment, refund, deposit)
- Status (pending, completed, failed)
- Amount range ($0-$100, $100+)
- Export transactions to CSV
- View transaction details (merchant, amount, date, payment method)
- Initiate refunds (admin only)
- Download receipts (PDF)
**User Stories:**
- As a user, I can view my complete transaction history
- As a user, I can filter transactions by date and type
- As a user, I can download transaction receipts
- As a user, I can export transactions to CSV for taxes
- As an admin, I can initiate refunds for failed transactions
**Acceptance Criteria:**
- [ ] Transaction list loads in under 2 seconds
- [ ] Filters work independently and combined
- [ ] Export includes all filtered transactions
- [ ] Receipts match transaction data exactly
- [ ] Refunds process in under 10 seconds
- [ ] No full credit card numbers stored or displayed
**Security Requirements (PCI-DSS):**
- NEVER store full credit card numbers
- Display only last 4 digits of card
- Use Stripe tokenization for payments
- HTTPS only for all API calls
- Payment data goes directly to Stripe (not through your backend)
- No card data in logs or crash reports
- Validate CVV on frontend only (never send to backend)
- Implement 3D Secure for high-value transactions
**Data Models:**
```dart
class Transaction {
final String id;
final String userId;
final TransactionType type;
final double amount;
final String currency;
final TransactionStatus status;
final String? merchantName;
final String? merchantLogo;
final DateTime createdAt;
final PaymentMethodInfo? paymentMethod;
final String? receiptUrl;
final String? refundId; // If transaction was refunded
}
enum TransactionType {
payment,
refund,
deposit,
withdrawal,
}
enum TransactionStatus {
pending,
completed,
failed,
refunded,
}
class PaymentMethodInfo {
final String brand; // visa, mastercard, amex
final String last4; // Last 4 digits only
final int expiryMonth;
final int expiryYear;
}
class TransactionFilter {
final DateTime? startDate;
final DateTime? endDate;
final TransactionType? type;
final TransactionStatus? status;
final double? minAmount;
final double? maxAmount;
}
```
**API Endpoints:**
- GET /api/transactions?page=1&limit=20
- GET /api/transactions/{id}
- POST /api/transactions/export (CSV)
- GET /api/transactions/{id}/receipt (PDF download)
- POST /api/transactions/{id}/refund (admin only)
**UI Screens:**
- TransactionListScreen (with filters)
- TransactionDetailScreen
- RefundConfirmationDialog (admin only)
- ExportOptionsBottomSheet
**Technical Details:**
- Stripe SDK: flutter_stripe package
- PDF generation: pdf package
- CSV export: csv package
- Date range picker: Custom widget
- Infinite scroll pagination
- Pull-to-refresh
```
### Usage
```bash
@claude use skill automation/feature-implementer
# Input:
Feature name: Transaction History
Test coverage target: 85
Generate integration tests: yes
```
### Expected Output
```
✅ Feature "Transaction History" implemented successfully!
📊 Summary:
- Files Created: 32
- Test Coverage: 87.4%
- Security Validated: Yes (PCI-DSS compliant)
- Implementation Time: 10 minutes
🔒 PCI-DSS Compliance Checks:
✅ Card Data Protection:
- Full card numbers NEVER stored
- Only last 4 digits displayed
- CVV validated on frontend only (never sent to backend)
- Payment data sent directly to Stripe
✅ Tokenization:
- Stripe tokenization implemented
- Card details tokenized before transmission
- Tokens used for subsequent charges
✅ Secure Transmission:
- HTTPS enforced for all API calls
- TLS 1.2+ required
- Certificate pinning enabled
✅ Access Control:
- Refund operations restricted to admin role
- Transaction access limited to transaction owner
- Audit logging for all refund operations
✅ Logging Restrictions:
- Card data excluded from all logs
- Sensitive fields redacted in error messages
- Crash reports sanitized
📝 Stripe Integration:
- PaymentIntent flow implemented
- 3D Secure support added
- Webhook handling for payment status updates
```
### Implementation Notes
**Stripe Payment Intent Flow:**
```dart
// Generated payment service
class PaymentService {
final StripeService stripe;
final PaymentRepository repository;
Future<Either<Failure, Transaction>> processPayment({
required int amount,
required String currency,
required String paymentMethodId,
}) async {
try {
// 1. Create payment intent on backend
final paymentIntentResult = await repository.createPaymentIntent(
amount: amount,
currency: currency,
);
if (paymentIntentResult.isLeft()) {
return paymentIntentResult.fold(
(failure) => Left(failure),
(_) => throw UnimplementedError(),
);
}
final paymentIntent = paymentIntentResult.fold(
(_) => throw UnimplementedError(),
(intent) => intent,
);
// 2. Confirm payment with Stripe (client-side)
// Card details go directly to Stripe, NOT your backend
final confirmedIntent = await Stripe.instance.confirmPayment(
paymentIntentClientSecret: paymentIntent.clientSecret,
data: PaymentMethodParams.cardFromMethodId(
paymentMethodData: PaymentMethodDataCardFromMethod(
paymentMethodId: paymentMethodId,
),
),
);
// 3. Verify payment status on backend
final transaction = await repository.verifyPayment(
paymentIntentId: confirmedIntent!.id,
);
return transaction;
} on StripeException catch (e) {
return Left(PaymentFailure(message: e.error.message ?? 'Payment failed'));
}
}
}
```
**CSV Export:**
```dart
// Generated export service
class TransactionExportService {
Future<Either<Failure, File>> exportToCsv({
required List<Transaction> transactions,
required String filePath,
}) async {
try {
final csv = ListToCsvConverter().convert([
// Headers
['Date', 'Type', 'Merchant', 'Amount', 'Status', 'Payment Method'],
// Rows
...transactions.map((t) => [
DateFormat('yyyy-MM-dd HH:mm').format(t.createdAt),
t.type.name.toUpperCase(),
t.merchantName ?? 'N/A',
'\$${t.amount.toStringAsFixed(2)}',
t.status.name.toUpperCase(),
t.paymentMethod != null
? '${t.paymentMethod!.brand.toUpperCase()} •••• ${t.paymentMethod!.last4}'
: 'N/A',
]),
]);
final file = File(filePath);
await file.writeAsString(csv);
return Right(file);
} catch (e) {
return Left(CacheFailure(message: 'Failed to export CSV: $e'));
}
}
}
```
**PDF Receipt Generation:**
```dart
// Generated receipt service
class ReceiptService {
final pdf.Document document = pdf.Document();
Future<Either<Failure, File>> generateReceipt({
required Transaction transaction,
required String filePath,
}) async {
try {
document.addPage(
pdf.Page(
build: (context) {
return pdf.Column(
crossAxisAlignment: pdf.CrossAxisAlignment.start,
children: [
pdf.Text('RECEIPT', style: pdf.TextStyle(fontSize: 24, fontWeight: pdf.FontWeight.bold)),
pdf.SizedBox(height: 20),
pdf.Text('Transaction ID: ${transaction.id}'),
pdf.Text('Date: ${DateFormat('MMMM dd, yyyy').format(transaction.createdAt)}'),
pdf.SizedBox(height: 20),
pdf.Divider(),
pdf.SizedBox(height: 20),
pdf.Row(
mainAxisAlignment: pdf.MainAxisAlignment.spaceBetween,
children: [
pdf.Text('Merchant:'),
pdf.Text(transaction.merchantName ?? 'N/A'),
],
),
pdf.Row(
mainAxisAlignment: pdf.MainAxisAlignment.spaceBetween,
children: [
pdf.Text('Amount:'),
pdf.Text('\$${transaction.amount.toStringAsFixed(2)}', style: pdf.TextStyle(fontWeight: pdf.FontWeight.bold)),
],
),
if (transaction.paymentMethod != null)
pdf.Row(
mainAxisAlignment: pdf.MainAxisAlignment.spaceBetween,
children: [
pdf.Text('Payment Method:'),
pdf.Text('${transaction.paymentMethod!.brand.toUpperCase()} •••• ${transaction.paymentMethod!.last4}'),
],
),
],
);
},
),
);
final file = File(filePath);
await file.writeAsBytes(await document.save());
return Right(file);
} catch (e) {
return Left(CacheFailure(message: 'Failed to generate receipt: $e'));
}
}
}
```
## 4. Social Media: User Feed
### Scenario
Building a social media feed feature with posts, likes, comments, and real-time updates.
### IMPLEMENTATION_PLAN.md Specification
```markdown
### Feature 7: User Feed
**Priority:** HIGH
**Estimated Time:** 10-12 hours
**Dependencies:** Authentication
**Requirements:**
- View personalized feed (posts from followed users)
- Infinite scroll pagination
- Like/unlike posts
- Comment on posts
- Share posts
- Real-time updates for new posts
- Pull-to-refresh
- Image/video posts
- Offline: View cached posts
**User Stories:**
- As a user, I can see posts from people I follow
- As a user, I can like and comment on posts
- As a user, I can share posts to my followers
- As a user, I see new posts in real-time
**Data Models:**
```dart
class Post {
final String id;
final String authorId;
final String authorName;
final String? authorPhotoUrl;
final String content;
final List<String>? mediaUrls;
final MediaType mediaType;
final int likeCount;
final int commentCount;
final int shareCount;
final bool isLikedByCurrentUser;
final DateTime createdAt;
}
enum MediaType { text, image, video }
class Comment {
final String id;
final String postId;
final String authorId;
final String authorName;
final String content;
final DateTime createdAt;
}
```
**API Endpoints:**
- GET /api/feed?page=1&limit=20
- POST /api/posts/{id}/like
- DELETE /api/posts/{id}/like
- POST /api/posts/{id}/comments
- GET /api/posts/{id}/comments?page=1
- WebSocket: wss://api.example.com/feed (real-time updates)
```
### Expected Output
```
✅ Feature "User Feed" implemented successfully!
📊 Summary:
- Files Created: 30
- Test Coverage: 79.1%
- Real-time updates: Yes (WebSocket)
✨ Special Features:
- Infinite scroll with optimistic updates
- Real-time feed updates via WebSocket
- Offline mode with cached posts
- Image caching and lazy loading
- Like/comment animations
```
## 5. Education: Course Management
### Scenario
Building a course management feature for an e-learning platform.
### IMPLEMENTATION_PLAN.md Specification
```markdown
### Feature 8: Course Management
**Priority:** MEDIUM
**Estimated Time:** 8-10 hours
**Requirements:**
- Browse available courses by category
- View course details (syllabus, instructor, ratings)
- Enroll in courses
- Track course progress (% complete)
- View course materials (videos, PDFs, quizzes)
- Submit assignments
- View grades
**Data Models:**
```dart
class Course {
final String id;
final String title;
final String description;
final String instructorName;
final String? thumbnailUrl;
final double rating;
final int studentCount;
final int lessonCount;
final Duration estimatedDuration;
final CourseCategory category;
final bool isEnrolled;
}
class CourseProgress {
final String courseId;
final int completedLessons;
final int totalLessons;
final double progressPercentage;
final DateTime? lastAccessedAt;
}
class Lesson {
final String id;
final String courseId;
final String title;
final LessonType type;
final String contentUrl;
final Duration duration;
final bool isCompleted;
}
```
**API Endpoints:**
- GET /api/courses?category=programming
- POST /api/courses/{id}/enroll
- GET /api/courses/{id}/progress
- POST /api/lessons/{id}/complete
```
## 6. Real Estate: Property Listings
### Scenario
Building a property listing feature for a real estate app.
### IMPLEMENTATION_PLAN.md Specification
```markdown
### Feature 9: Property Listings
**Priority:** HIGH
**Estimated Time:** 10-12 hours
**Requirements:**
- Browse properties (for sale/rent)
- Search by location, price, bedrooms, etc.
- View property details (photos, description, amenities)
- Map view of properties
- Schedule property tours
- Save favorite properties
- Filter by: Price, bedrooms, bathrooms, square footage, property type
**Data Models:**
```dart
class Property {
final String id;
final PropertyType type;
final PropertyStatus status;
final double price;
final String address;
final LatLng coordinates;
final int bedrooms;
final int bathrooms;
final double squareFeet;
final List<String> photoUrls;
final List<String> amenities;
final String description;
final String agentId;
}
class PropertyTour {
final String id;
final String propertyId;
final DateTime scheduledAt;
final TourType type; // in-person, virtual
final TourStatus status;
}
```
**API Endpoints:**
- GET /api/properties?lat=37.7749&lon=-122.4194&radius=10
- GET /api/properties/{id}
- POST /api/properties/{id}/tours
- POST /api/properties/{id}/favorite
```
## 7. Food Delivery: Order Tracking
### Scenario
Building an order tracking feature for a food delivery app.
### IMPLEMENTATION_PLAN.md Specification
```markdown
### Feature 10: Order Tracking
**Priority:** HIGH
**Estimated Time:** 12-14 hours
**Requirements:**
- View order status (preparing, en route, delivered)
- Real-time driver location on map
- Estimated delivery time
- Contact driver
- Order history
- Rate completed orders
- Reorder from history
**Data Models:**
```dart
class Order {
final String id;
final String restaurantId;
final String restaurantName;
final List<OrderItem> items;
final double subtotal;
final double deliveryFee;
final double tax;
final double total;
final OrderStatus status;
final DateTime createdAt;
final DateTime? estimatedDeliveryAt;
final DriverInfo? driver;
}
class DriverInfo {
final String id;
final String name;
final String? photoUrl;
final String phoneNumber;
final LatLng? currentLocation;
final String vehicleType;
}
class OrderItem {
final String id;
final String name;
final int quantity;
final double price;
final List<String>? customizations;
}
```
**API Endpoints:**
- GET /api/orders/{id}
- WebSocket: wss://api.example.com/orders/{id}/track
- GET /api/orders/history?page=1
- POST /api/orders/{id}/reorder
```
## 8. Enterprise SaaS: Team Management
### Scenario
Building a team management feature for an enterprise SaaS platform.
### IMPLEMENTATION_PLAN.md Specification
```markdown
### Feature 11: Team Management
**Priority:** HIGH
**Estimated Time:** 12-16 hours
**Compliance:** SOC2 (audit logging)
**Requirements:**
- View team members
- Invite new members (via email)
- Manage roles and permissions
- Deactivate/reactivate members
- View team activity logs
- Bulk operations (invite multiple, change roles)
**Data Models:**
```dart
class TeamMember {
final String id;
final String email;
final String? name;
final String? photoUrl;
final TeamRole role;
final MemberStatus status;
final DateTime joinedAt;
final DateTime? lastActiveAt;
}
enum TeamRole {
owner, // Full access
admin, // Manage members, settings
member, // Standard access
viewer, // Read-only
}
class TeamInvitation {
final String id;
final String email;
final TeamRole role;
final InvitationStatus status;
final DateTime sentAt;
final DateTime? acceptedAt;
final DateTime expiresAt;
}
class ActivityLog {
final String id;
final String userId;
final String action;
final Map<String, dynamic> metadata;
final DateTime timestamp;
}
```
**API Endpoints:**
- GET /api/teams/{id}/members
- POST /api/teams/{id}/invitations
- PUT /api/teams/{id}/members/{userId}/role
- DELETE /api/teams/{id}/members/{userId}
- GET /api/teams/{id}/activity-logs?page=1
```
### Expected Output
```
✅ Feature "Team Management" implemented successfully!
📊 Summary:
- Files Created: 33
- Test Coverage: 88.6%
- Compliance: SOC2 (audit logging)
🔒 SOC2 Compliance:
✅ Audit Logging:
- All team operations logged
- Immutable audit trail
- 7-year retention
✅ Access Control:
- Role-based permissions
- Principle of least privilege
- Owner approval for critical actions
```
## Summary of Examples
| Example | Industry | Complexity | Key Features | Compliance |
|---------|----------|------------|--------------|------------|
| Product Catalog | E-Commerce | Medium | Pagination, Search, Filters | - |
| Patient Records | Healthcare | High | Encryption, Audit Logging | HIPAA |
| Transaction History | FinTech | High | Tokenization, Export, Receipts | PCI-DSS |
| User Feed | Social Media | Medium | Real-time, WebSocket, Offline | - |
| Course Management | Education | Medium | Progress Tracking, Materials | - |
| Property Listings | Real Estate | Medium | Map View, Tours, Favorites | - |
| Order Tracking | Food Delivery | Medium | Real-time, Map, Driver Location | - |
| Team Management | Enterprise SaaS | High | Roles, Invitations, Activity Logs | SOC2 |
**Key Takeaways:**
1. **Compliance features automatically generated** when specified in IMPLEMENTATION_PLAN.md
2. **Real-time features** (WebSocket) supported out of the box
3. **Pagination, filtering, search** patterns consistent across all examples
4. **Security best practices** enforced (encryption, audit logging, role-based access)
5. **Test coverage** consistently 75%+ for all features
6. **Implementation time** averages 7-12 minutes per feature
**Last Updated:** 2025-10-24
**Version:** 1.0.0