Skip to main content

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
Komponen:
  • Pages: Full screen widgets
  • Widgets: Reusable UI components
  • BLoC/Cubit: State management
  • Models: UI-specific models (jika berbeda dari domain)
Contoh:

2. Domain Layer (core/*/)

Tanggung jawab:
  • Business logic
  • Domain models (entities)
  • Repository interfaces
  • Use cases (optional, untuk logic kompleks)
Prinsip:
  • Pure Dart (no Flutter dependencies)
  • Framework-agnostic
  • Testable
Contoh:

3. Data Layer (core/*/)

Tanggung jawab:
  • Implementasi repository
  • API calls (Retrofit)
  • Local database operations (Isar)
  • Data mapping (DTO โ†” Entity)
  • Caching strategy
Komponen:
  • Repository Implementation: Concrete repository
  • API: Retrofit interfaces
  • Local Data Source: Isar collections
  • DTOs: Data Transfer Objects
Contoh:

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)

Strategi:
  • 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


Arsitektur ini dirancang untuk:
  • โœ… Scalability
  • โœ… Maintainability
  • โœ… Testability
  • โœ… Separation of Concerns
  • โœ… Code Reusability