Skip to content

Archipelago docs

Ship your Flutter app in days, not weeks.

Production-ready architecture, a CLI toolkit, and Mason bricks for Flutter monorepos. Every feature is its own module on shared, proven infrastructure.

archipelago create my_app
# apps/, features/, infrastructure/, shared/, devtools/
archipelago generate auth_sdk
# a feature module with its own DI and routes
melos run build-prepare:production
# debug tools swapped out of the production build
dart pub global activate archipelago_cli

Enterprise Architecture

API/Impl split, Dual-GetIt DI, FeatureSDK self-registration — patterns proven at scale

76 Mason Bricks

Drop-in code templates for auth, networking, monitoring, UI kits, and more

CLI Toolkit

Generate projects, manage bricks, and check system health from the command line

CI/CD Ready

GitHub Actions, Fastlane, monorepo toolkit — your pipeline works before you write your first widget

Theme Builder

Visual design token editor for your Material theme — colors, typography, spacing, and shadows with live preview

Open Theme Builder

AI Agent Ready

Every generated project includes CLAUDE.md, AGENTS.md, .cursorrules, and Copilot instructions — pre-populated for your codebase

Learn more

See the architecture move ​

Feature code depends on a contract, never on a vendor. Switching the vendor changes the app's wiring and nothing else.

API/Impl splitSwap the HTTP vendor without touching feature code

Step 1 of 2, Dio: Code that needs HTTP, like the Flagr feature-flag provider, depends only on the HttpClient contract in network_sdk_api. The app picks Dio in its pubspec and its injector.

infrastructure/flagr_feature_flag_impl/lib/src/flagr_feature_flag_provider.dart
apps/my_app/pubspec.yaml
dependencies:  network_sdk_api:    path: ../../infrastructure/network_sdk_api  # …  network_sdk_dio:    path: ../../infrastructure/network_sdk_dio
apps/my_app/lib/di/injector.dart
import 'package:network_sdk_dio/network_sdk_dio.dart';// …  externalPackageModulesBefore: [    ExternalModule(NetworkSdkDioPackageModule),
infrastructure/network_sdk_dio/lib/src/client/dio_http_client_adapter.dart
class DioHttpClientAdapter(this._dio) implements api.HttpClient {  @override  Future<api.HttpResponse> post(String path, {Object? body, /* … */}) =>      _send('POST', path, body: body, /* … */);}