Software¶
The MPowerUP app codebase and its stack. The current stack is proof-of-concept code, not a committed architecture — see Technologies → Communication Architecture for the build-vs-adopt reconsideration that may reshape it (including the standing consideration of integrating an existing tool like Jami, Briar, or SimpleX rather than maintaining a fully custom P2P stack).
Repo: Big-Nerd-Idea/MPowerUp — the source import is wired separately.
The POC stack¶
| Layer | Choice | Notes |
|---|---|---|
| App framework | React Native 0.81 + Expo SDK 54 | Bundled platform choice — see ADR-002 |
| Identity | did:key (Ed25519 via TweetNaCl), keys in expo-secure-store |
Keypair, not account |
| Sync | Yjs CRDT — one YDoc per Circle |
RN-proven; counter-evidence (Cinapse) logged as a Known Unknown |
| Transport | relay-assisted WebRTC | js-libp2p was rejected (event-target-shim crashes on RN 0.81) |
| Persistence | WatermelonDB (SQLite) | Reactive offline-first store |
| Group encryption | TweetNaCl + shared per-Circle key | MLS/OpenMLS is a candidate upgrade (FS + PCS) |
The data model behind Circles is documented in ADR-001.
In this section¶
These are research/reference guides that informed the POC stack and its candidate replacements:
- P2P Distributed Databases for Mobile — survey of the offline-first / P2P database landscape
- WatermelonDB vs ObjectBox — comparison of the two leading RN offline-first databases
- WatermelonDB → ObjectBox Migration Guide — a worked migration path (reference only; not a committed migration)
- P2P Chat & Storage for Affordable Devices — resource-constrained device reference (RAM/CPU/battery for candidate apps)