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