Flutter Mobile
Composable, multi-repository Flutter platform for cross-platform mobile applications on iOS and Android.
What It Does
The Foundationβs Flutter platform is not a monolithic framework β it is a set of composable SDK packages (authentication, messaging, file handling, theming, and more) that you assemble to build their applications. The platform is organized across three layers:
sdks-flutterβ The shared Foundation layer. A Melos-managed workspace of 25+ Dart packages providing core APIs, feature SDKs, and a UI component library.- Product SDKs β Domain-specific packages that build on
sdks-flutterfor a particular product vertical. - Product Apps β Final applications that compose Foundation and product SDKs into user-facing experiences.
Key Capabilities
| Capability | Description |
|---|---|
| 25+ Foundation Packages | Core APIs, feature SDKs, and shared UI in a single Melos workspace |
| Dependency Injection | Abstract DependencyInjector interface with pluggable implementations |
| SDK Initialization | Typed config-based factories that self-register all internal dependencies |
| Module Facades | Static facade classes that encapsulate DI, navigation, and screen entry per feature |
| SafeValueNotifier | Disposal-safe reactive primitives extending Flutterβs ValueNotifier |
| Either-Based Errors | Either<Failure, T> return types with a structured Failure hierarchy and Rollbar reporting |
| White-Label Theming | Runtime tenant theming from server configuration via e11_tenant_bootstrap |
| E11 UI Library | Comprehensive widget library (buttons, forms, dialogs, navigation, media, layout) |
| REST + Firestore | Dio-based REST clients with automatic auth headers, plus Firestore real-time streams |
| CI/CD | GitHub Actions pipelines deploying to TestFlight and Google Play |
How It Fits Together
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Product Applications β
β Your product applications β
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ
β
ββββββββββββββΌβββββββββββββ
β Product SDKs β
β Domain-specific β
β SDK packages β
ββββββββββββββ¬βββββββββββββ
β
ββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββ
β sdks-flutter (Foundation) β
β β
β apis/ sdks/ ui/ β
β ββ e11_core ββ sdk_auth ββ ui β
β ββ e11_infra ββ sdk_user ββ ui_charts β
β ββ e11_rest ββ sdk_messaging ββ ui_rich_textβ
β ββ e11_firebase ββ sdk_files β
β ββ e11_platform ββ sdk_community β
β ββ e11_rollbar ββ sdk_notifications β
β ββ e11_tenant_ ββ sdk_social β
β bootstrap ββ sdk_access β
β ββ sdk_search β
β ββ sdk_registration β
β ββ sdk_config β
β ββ sdk_customer β
β ββ sdk_maps β
β ββ sdk_events β
β ββ sdk_content β
β ββ sdk_reporting β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββProduct apps depend on product SDKs, which depend on Foundation SDKs. The Foundation layer (sdks-flutter) is the truly reusable layer owned by the Engineering11 team.
Repository & Package Structure
sdks-flutter is a Dart workspace managed by Melos. Packages are organized into three directories:
| Directory | Purpose | Packages |
|---|---|---|
apis/ | Core infrastructure β DI, error handling, logging, networking, Firebase, platform services | e11_core, e11_infra, e11_platform, e11_rest, e11_firebase, e11_rollbar, e11_tenant_bootstrap |
sdks/ | Feature SDKs β self-contained vertical slices with models, services, repositories, and optional UI | 16 packages (sdk_auth, sdk_user, sdk_messaging, sdk_files, etc.) |
ui/ | Shared UI component library, charting, and rich text editing | ui, ui_charts, ui_rich_text |
e11_core (base: DI interface, Either, Failure, Logger, utils)
β
βββ e11_infra (GetX bindings, routing, key-value storage, toast)
βββ e11_platform (device info, permissions, connectivity, deep links)
βββ e11_rest (Dio REST client, Algolia search)
βββ e11_firebase (Firestore, Auth, Cloud Messaging, Remote Config)
β
βββ e11_tenant_bootstrap (white-label theming from server config)
ui (component library, theme system, navigation provider)
Feature SDKs depend on apis/ + ui as needed.Architecture Patterns
Dependency Injection
e11_core defines an abstract DependencyInjector interface with put, lazyPut, find, and maybeFind operations. The default implementation (GetDependencyInjector in e11_infra) delegates to GetXβs service locator. A global di instance is created at app startup and threaded through SDK initialization.
di.put(() => MyService(...))β eager, deduplicateddi.lazyPut(() => MyService(...))β lazy with auto-recreationdi.find<MyService>()/di.maybeFind<MyService>()β resolve or return null
SDK Initialization
Each Foundation SDK exposes a static initialize factory that takes a typed config and registers all internal dependencies onto di:
final authSdk = AuthSdk.initialize(
config: AuthConfig(
di: di,
appUserId: appUserId,
serviceUrl: environment.authServiceUrl,
errorHandler: errorHandler,
logger: logger,
),
);Product apps call these initializers during startup and resolve SDK services from di wherever needed.
Module Facade Pattern
Product apps organize features into static facade classes. Each module provides a dependencies(di) method that registers services, stores, and controllers, plus navigation methods (show, open) for entering its screens. Modules are wired into the app via route bindings callbacks, ensuring DI is set up before pages build.
Navigation
PageNavigationRoute and a context.push(...) extension provide type-safe, declarative navigation. E11NestedNavigator creates isolated navigator stacks for tab-based UIs (e.g. Messaging, Network, and Communities tabs each with their own back stack).
Migration note: Navigation is being migrated to GoRouter for alignment with Flutterβs official routing recommendations.
What You Donβt Have to Build
- Multi-package workspace management and dependency orchestration
- Abstract dependency injection with pluggable implementations
- Typed SDK initialization with self-registering dependencies
- Disposal-safe reactive state primitives
- Structured error handling with typed Failure hierarchies
- REST client infrastructure with automatic auth headers and connectivity checks
- Firestore real-time stream wrappers with permission-denied handling
- White-label theming system with runtime tenant configuration
- Comprehensive UI component library (50+ widgets)
- CI/CD pipelines for TestFlight and Google Play deployment
- Flutter version pinning and CI dependency resolution
What You Build
The Foundation provides the infrastructure β your team builds:
- Product-specific UI screens and user workflows
- Custom domain modules with feature-specific business logic
- Business logic and orchestration in controllers and services
- Branding, visual identity, and tenant-specific customization
- Integration with product-specific backend services
Next Steps
- Platforms Overview β Compare all frontend platforms
- Frontend Overview β Return to the frontend overview
- Architecture β Cross-platform architecture patterns
- Backend Documentation β Understand the APIs your app will integrate with
- Foundation Overview β See the complete platform capabilities