Community that feels like WhatsApp
National, provincial, district and assembly chats plus groups and direct messages — voice notes, photos, video, documents, quotes, forwarding, read receipts, pinned messages and search.
Platform · Mobile
The member app for a national church in Mozambique — a WhatsApp-grade community, the Apostle's weekly word as a channel, a Bible in local languages that works offline, giving by M-Pesa and a toolkit for the leaders of 1,508 assemblies. On the stores, and updated over the air almost daily.
The brief
The denomination already had a back office — its ERP — and a public website. What it did not have was a way to reach its members directly. The Apostle's weekly update went out as a PDF forwarded on WhatsApp, group conversations lived in dozens of unofficial groups, and a treasurer in a district with no fibre line could only declare Sunday's collection by phone.
The app had to be the member's front door to the church: two taps to anything that matters, in their language, on a cheap Android phone on a slow connection — and it had to be improved continuously without waiting weeks for store review.
What we built
National, provincial, district and assembly chats plus groups and direct messages — voice notes, photos, video, documents, quotes, forwarding, read receipts, pinned messages and search.
Each week's word arrives as a post with reactions and threaded comments, pushed once to every member and mirrored on the website — imported from the ministry's source, machine-drafted into Portuguese and reviewed by the team.
KJV plus licensed YouVersion versions including Makhuwa-Meetto, Sena and Shona, downloaded once on Wi-Fi and searched locally — with highlights, bookmarks, reading plans and a word-of-the-day widget.
Give by M-Pesa or declare for the treasurer, RSVP to events, sign attendance by QR, find the nearest church on a live map and watch live TV with picture-in-picture.
Collective submissions with proof of payment, contributor statements, dues reports and an approvals inbox — the same ledger the finance team closes each month, reachable from a phone.
Leaders capture a GPS pin and a photo of their building, which waits in an approvals inbox with accuracy flags. Ninety per cent of the map was empty when we started.
Design decision
Chat exists so the church owns its community and its data — not to out-build WhatsApp. Every feature was judged by one test: does it serve the church, and would a member on a slow connection use it? Anything that failed, like a flip-book reader, was replaced by behaviour people already know.
Screens
Captured on a live production phone. Other members' names and photos are blurred or replaced.






Architecture
Everything a member sees comes from the same Django back end the finance and HR teams use — one register of people, churches and money.
my-ada ▸ stack
My ADA React Native · Expo · one JS runtime on iOS and Android
│ HTTPS (scoped tokens) │ WebSocket (chat), polling fallback
▼ ▼
Finanças ERP Django · DRF · gunicorn · realtime service
│ │ │ │
▼ ▼ ▼ ▼
PostgreSQL S3 media Expo Push Website (ada.org.mz)
on RDS signed URLs APNs / FCM updates, comments, accounts
Over the air JS changes publish in minutes to every phone;
native changes batch into store releases.A member sees only their own assembly's money, a district administrator their district, and headquarters everything. The permission model that governs the ERP's reports governs the app's screens — there is no second rule book to keep in step.
The harder parts
In three weeks the app went from 2.4.4 to 3.0.4 — sixteen versions, the first App Store release and iPad support, then daily over-the-air updates. The trick was one runtime on both platforms, and a strict line between what ships over the air and what needs a store build.
A list that never jumps when the keyboard opens, sends that retry on their own and say why they failed, placeholders instead of blank images, and polling under the WebSocket for when it cannot connect. Each was a real member's bug report before it was a feature.
Disabling dormant accounts is good security and a terrible first impression for a treasurer at month-end. The app recognises a disabled account, offers a one-tap reactivation request, and the decision lands in both back offices.
Local-language Bibles come from YouVersion under licence, fetched through our API so keys never reach the phone. Whole-version packs are compressed and cached, so one download on Wi-Fi gives a member their Bible for good — searchable even in airplane mode.
Stack
Services
If you need something similar, this is the work it falls under.