mukoko architecture
Local-first, mobile-first, open source architecture for Africa’s super app. Built on Ubuntu philosophy — I am because we are.
Ubuntu philosophy and guiding principles
Local-first storage and cloud sync
Open data pipeline for Africa
Technology sovereignty assessments
Guiding Principles
I am because we are — every architectural decision flows from communal benefit.
The device is the primary source of truth. The cloud is a synchronisation and backup layer, not a dependency.
The primary interface is a mobile device with constrained resources.
Choose genuinely open source alternatives over proprietary corporate technologies.
Platform-level, anonymised, aggregate data is Mukoko's gift to the continent, not its moat.
Framework Decision
The two dominant cross-platform frameworks (Flutter/React Native) are controlled by large American corporations. Capacitor runs web standards — HTML, CSS, JavaScript — inside a native WebView. Web standards are governed by the W3C and WHATWG (international standards bodies), and JavaScript by ECMA International (Swiss). This is also precisely the architecture that WeChat and Alipay converged on — a runtime environment hosting mini-applications built on web standards.
android
capacitor-native
productionios
capacitor-native
productionweb
pwa
productionharmonyos
webview
plannedArchitecture Overview
┌─────────────────────────────────────────────────────────┐
│ USER'S DEVICE │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Next.js App (Capacitor Shell) │ │
│ │ ┌──────────────────────────────────────────┐ │ │
│ │ │ RxDB Layer │ │ │
│ │ │ (Reactive queries, schema, replication) │ │ │
│ │ └──────────┬──────────────────┬────────────┘ │ │
│ │ ┌────────▼──────┐ ┌───────▼────────┐ │ │
│ │ │ SQLite │ │ IndexedDB │ │ │
│ │ │ (Native App) │ │ (Browser PWA) │ │ │
│ │ └───────────────┘ └────────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
└───────────────────────┬─────────────────────────────────┘
│ Sync (when online)
┌───────────────────────▼─────────────────────────────────┐
│ OPERATIONAL CLOUD │
│ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ Apache CouchDB │ │ Supabase / Postgres │ │
│ │ (Community data) │ │ (Auth, wallet, txns) │ │
│ └────────┬─────────┘ └──────────┬────────────┘ │
└───────────┼─────────────────────────────┼───────────────┘
│ Change events │
└──────────────┬──────────────┘
┌──────────────────────────▼──────────────────────────────┐
│ ANALYTICS PIPELINE │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Redpanda (Kafka-compatible) │ │
│ └──────────────────────┬──────────────────────────┘ │
│ ┌──────────────────────▼──────────────────────────┐ │
│ │ Apache Flink — Strip PII · Enrich · Aggregate │ │
│ └──────────────────────┬──────────────────────────┘ │
│ ┌──────────────────────▼──────────────────────────┐ │
│ │ Apache Doris — Open Data API + Dashboards │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘Architecture API
All architecture data is available via the Mukoko Architecture API.
| Endpoint | Description |
|---|---|
| GET /api/v1 | API discovery document |
| GET /api/v1/ecosystem | Architecture principles and framework decision |
| GET /api/v1/data-layer | Local-first and cloud data layer specification |
| GET /api/v1/pipeline | Open data pipeline stages |
| GET /api/v1/sovereignty | Technology sovereignty assessments |