Design isolated, scalable, testable, abstract feature modules using clean architecture principles that able to work with different implementations
- Clean Architecture (Presentation, Domain, Data layers)
- SOLID principles implementation
- Dependency Injection (GetIt, Provider)
- State Management (Bloc, Riverpod, Provider)
- Repository Pattern
- Factory Pattern for object creation
- Strategy Pattern for interchangeable behaviors
- Observer Pattern for event handling
- 🔐 AuthModule
- Email/password, phone, social login
- AuthRepository abstraction
- Platform-native login (e.g. Google/Facebook via native SDKs)
- Persist token/session
- Auth state management
- Token refresh mechanism
- 💳 PaymentModule
- Payment gateway (e.g., Stripe, ZaloPay, Momo)
- Native SDK integration (via platform channels or plugins)
- Payment flow abstraction
- Handle success/failure/cancel logic
- Payment state management
- Transaction history
- 🔔 NotificationModule (Optional)
- Push notifications (Firebase Messaging)
- Local notifications
- Handle foreground, background, terminated
- Notification preferences
- Notification center
- 📄 ProfileModule
- User settings
- Upload avatar (camera/gallery)
- Preferences and update profile API
- Profile state management
- User data caching
- 📦 CoreModule
- Networking (Dio or Chopper)
- Token interceptor
- Error handling
- App-wide constants/enums
- Base classes and interfaces
- Common widgets
- Utility functions
- Theme management
- Localization
- Analytics tracking