Skip to content

Architecture Overview

Archipelago uses a modular monorepo architecture where each feature is a self-contained "island" connected by shared infrastructure.

Core Patterns

API/Impl Split

Separate contract (API) from implementation — only when a feature is consumed by others or needs vendor swapping.

  • API package: Interfaces, DTOs, exceptions
  • Impl package: Actual implementation with vendor dependencies
  • Noop package: No-op implementation for build-time stripping

Learn more →

Dual-GetIt Dependency Injection

Two GetIt instances for clean isolation:

  • Global GetIt: SDKs and infrastructure (network, auth, monitoring)
  • Local GetIt per feature: Repositories, data sources, use cases

Learn more →

FeatureSDK Self-Registration

Each feature registers itself — routes, dependencies, and initialization — via a FeatureSDK base class.

Learn more →

Two-Phase Initialization

  1. Pre-launch (blocking): DI registration, route registration, critical SDK init
  2. Post-launch (non-blocking): Analytics, feature flags, remote config

Learn more →

Project Structure

your_project/
├── app/                   # Application targets
│   ├── mobile/            # Main mobile app
│   └── widgetbook/        # UI component showcase
├── core/                  # Core utilities and helpers
├── features/              # Feature modules (self-contained islands)
│   └── feature_*/         # Each feature with its own DI, routes, UI
├── packages/              # Shared packages
│   ├── ui_kit/            # Design system & shared widgets
│   ├── auth_sdk/          # Authentication SDK
│   ├── network_sdk/       # HTTP client & API layer
│   └── monitoring_sdk/    # Logging, crash reporting, analytics
├── devtools/              # Monorepo toolkit
│   ├── affected/          # Changed package detection
│   ├── coverage/          # Test coverage pipeline
│   └── build_prepare/     # Build-time dependency swap
├── shared/                # Shared configuration
│   ├── config/            # Environment & flavor config
│   ├── dependencies/      # Shared BLoC dependencies
│   └── l10n/              # Localization
└── melos.yaml             # Monorepo configuration

Design Decisions

For detailed rationale behind each pattern, see the Architecture Guide.

Built by Banua Coder