AghaNwi Docs
How AghaNwi works, who it's for, how to onboard a real business, and where to look when things go sideways. Living doc; updated as features ship.
What is AghaNwi
AghaNwi is a composable trust + proof platform for Cameroon and the diaspora. It holds money safely until work is proven done, keeps a real record of everything that happens (photo, time, place, receipt), lets owners see and run their business from anywhere including from abroad, and moves every payment, mobile money or cash, through one accounted ledger so nothing quietly disappears.
The same engine fits the smallest phone repair kiosk and the biggest supermarket. The phone shop in Bonamoussadi, your mother's clothes store in Bamenda, a landlord's building, an importer's container, a peer seller on Buyam Sellam, and a corporate employer all run on the same core. Each one just gets a different setup.
The five primitives
- Escrow. Buyer's or tenant's money is held by the platform and released only when work or delivery is proven. If not, money goes back.
- Proof engine. Every important action carries photo + time + place + receipt.
- Remote owner dashboard. See money in, money out, who did what, what is left, from anywhere.
- Accountable agents. Local helpers (caretaker, seller, rider, inspector) are tracked and paid through the platform, not in skimmable cash.
- Mobile money + cash, both accounted. MTN MoMo and Orange Money plus cash sales with receipts and till reconciliation. Cash cannot quietly disappear.
Languages
AghaNwi ships in English, French, and Cameroonian Pidgin (PCM) from day one. Every UI string in all three. Owners pick a primary locale per tenant; individual workers can override on the device.
The mobile app and kiosk auto-detect the device language and fall back to English. Switch language at any time from the language toggle in the top-right.
Pick a business template
Every new tenant picks one of six templates at sign-up. The template seeds the right modules, locations, and roles.
| Template | Best for |
|---|---|
retail_shop | Standalone shops, kitchen wares, electronics, clothing |
marketplace | Multi-seller arcades, big markets, food courts |
property | Diaspora-owned buildings, rentals, caretakers |
importer_wholesale | Container importers, consignment to local agents |
services | Repair shops, beauty, tutoring, professional services |
employer_only | Companies that just want clock-in + payroll + proof |
Fill the AI questionnaire
At onboarding the owner answers about ten short questions in their language. These seed your tenant AI's knowledge base so it can answer real questions like "what are your opening hours?", "what's your return policy?", or "who do I call when the rent is late?". You can extend the answers at any time from /admin/ai.
Name your tenant AI
Every tenant's AI carries the owner's name. KitchenDelights' AI is "Sidonie", because that's the owner. A diaspora landlord's AI might be "Mama Bih". This is the rule, not a setting. Tenants feel the app was built only for them.
Payment rails
AghaNwi treats cash and mobile money as equal first-class rails. The escrow ledger is the same. The receipts are the same. The audit trail is the same.
- Mobile money via Flutterwave (CEMAC-licensed): MTN MoMo, Orange Money. Charge + payout from a single API.
- Cash with point-of-sale receipts, cashier accountability, and till reconciliation. Cash cannot quietly disappear.
- Money is stored in integer minor units with a per-currency exponent. XAF is zero-decimal (1 XAF = 1 minor unit). USD is two-decimal.
Install the kiosk on a tablet or device
- Open kiosk.aghanwi.com in Chrome on the device.
- Add to home screen (or "Install app" from the address bar menu). The kiosk works fully offline after first load.
- From the platform admin, register the device in
kiosk_deviceswith a clear name (e.g. "Bonamoussadi gate kiosk"). Note the device code. - Set the device code as
VITE_KIOSK_DEVICE_CODEand the tenant asVITE_KIOSK_TENANT_IDin the kiosk's.env.
Set the WiFi anchor
The kiosk verifies it is physically on the right WiFi before accepting a clock-in. Add the office router's uppercase BSSID (MAC) to locations.wifi_bssids for that location. The kiosk reads /kiosk-config.json at boot; you can have a small native helper write the observed BSSID on each boot, or set VITE_KIOSK_EXPECTED_BSSID at build time. If no anchor is configured, kiosk falls back to anchor-disabled mode so it still works while you set things up.
How offline works
The kiosk PWA caches its shell on first load (service worker via vite-plugin-pwa). Every clock-in is written first to an IndexedDB queue. A background sync loop fires every 15 seconds, and on the online browser event, replays queued punches to the API. Workers see a small "N actions waiting to send" banner while the queue is non-empty.
Browse and buy on the mobile app
Open app.aghanwi.com or install the app from the App Store / Google Play (coming soon). The Browse tab loads live categories straight from your tenant's catalog.
Buyam Sellam (sell anything)
Buyam Sellam is the peer-to-peer lane. Anyone can list. Four sale kinds:
- Fixed price - the "I know what I want for it" path.
- Auction - opening price, optional reserve, optional buy-now, ends at a set time.
- Best offer - buyers send offers, you accept or reject.
- Group buy - X people sign up by the deadline, price unlocks.
Stolen phones have nowhere to hide: every listed phone's IMEI is checked against the platform-wide blocklist before publish. Vouches add a trust signal. Boosts let sellers buy more reach.
Tech stack
| Surface | Stack |
|---|---|
| Database | Supabase (Postgres 17), RLS on every tenant table |
| API | Node 20+, Fastify, TypeScript strict |
| Mobile | Expo SDK 52, React Native 0.76, expo-router, i18next |
| Kiosk | Vite + React + vite-plugin-pwa, IndexedDB queue |
| Marketing site (this one) | Static HTML, Netlify |
| Payments | Flutterwave (mobile money), cash with till reconciliation |
Get help
Issues, questions, feature requests: GitHub issues on the private repo (request access) or email tsi.angwafor@tatech.dev.