Arsitektur Aplikasi
MStore Mobile dibangun dengan Clean Architecture dan BLoC Pattern untuk memastikan separation of concerns, testability, dan maintainability.๐๏ธ Arsitektur Overview
๐ Struktur Folder
๐ฏ Layer Responsibilities
1. Presentation Layer (features/)
Tanggung jawab:
- Menampilkan UI
- Menangani user interaction
- Mengelola UI state dengan BLoC/Cubit
- Tidak boleh mengakses data source langsung
- Pages: Full screen widgets
- Widgets: Reusable UI components
- BLoC/Cubit: State management
- Models: UI-specific models (jika berbeda dari domain)
2. Domain Layer (core/*/)
Tanggung jawab:
- Business logic
- Domain models (entities)
- Repository interfaces
- Use cases (optional, untuk logic kompleks)
- Pure Dart (no Flutter dependencies)
- Framework-agnostic
- Testable
3. Data Layer (core/*/)
Tanggung jawab:
- Implementasi repository
- API calls (Retrofit)
- Local database operations (Isar)
- Data mapping (DTO โ Entity)
- Caching strategy
- Repository Implementation: Concrete repository
- API: Retrofit interfaces
- Local Data Source: Isar collections
- DTOs: Data Transfer Objects
4. Infrastructure Layer
Tanggung jawab:- HTTP client (Dio)
- Database (Isar)
- Firebase services
- MQTT client
- External services
๐ Data Flow
Request Flow (User Action โ API)
Offline-First Flow
๐งฉ Design Patterns
1. Repository Pattern
Abstraksi akses data, memisahkan business logic dari data source.2. BLoC Pattern
State management dengan event-driven architecture.3. Dependency Injection
Menggunakan GetIt + Injectable untuk DI.4. Either Pattern (Functional Error Handling)
Menggunakan Dartz untuk error handling yang eksplisit.๐ Security Architecture
1. Authentication Flow
2. Token Management
- Access Token: Short-lived (15 minutes)
- Refresh Token: Long-lived (30 days)
- Auto-refresh: Handled by
RefreshTokenInterceptor - Storage: Encrypted in Isar database
๐ก Real-Time Architecture
MQTT Integration
๐๏ธ Database Architecture
Isar (Local NoSQL Database)
- Write-through cache
- Background sync
- Conflict resolution (last-write-wins)
๐จ UI Architecture
Platform-Adaptive Design
Theme System
- AppTheme: Centralized theme configuration
- Theme Tailor: Type-safe theme extensions
- Dark Mode: Full support
๐ Observability
Logging
Crash Reporting
- Firebase Crashlytics: Production crashes
- AppLog: Development logging
- Sentry (optional): Error tracking
๐งช Testing Architecture
Next Steps
- ๐ State Management Details
- ๐ Networking Layer
- ๐พ Database & Storage
- ๐ง Dependency Injection
Arsitektur ini dirancang untuk:
- โ Scalability
- โ Maintainability
- โ Testability
- โ Separation of Concerns
- โ Code Reusability