UNPKG

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
# 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