Amana
A multisignature escrow platform securing mobile money for East African merchants.
Amana secures mobile money transactions for small merchants and gig workers across East Africa using a multisignature escrow model. The PostgreSQL schema models the full transaction lifecycle — initiation, hold, dispute, release — with atomicity guarantees, and integrates Selcom for mobile money movement. The REST API is built in FastAPI following OWASP security guidance and runs on a Linux VPS behind nginx with Certbot-managed TLS.
curl -X POST /v1/escrow/{id}/release
auth ▸ signature 1/2 · merchant
auth ▸ signature 2/2 · buyer
tx ▸ hold → release [atomic]
selcom ▸ payout queued (celery)
200 OK ▸ escrow settled
// engineering notes
Decisions behind it
01
Lifecycle modelled in the schema
Initiation, hold, dispute, and release are first-class states in PostgreSQL with atomicity guarantees, so money cannot be released twice or stranded mid-dispute by a partial write.
02
Multisignature release
Funds move only when the required parties have both signed off. For a merchant and a gig worker who have never met, that is the entire product.
03
Selcom mobile money integration
Real payment rails, not a sandbox toy — the integration handles the asynchronous, retry-prone reality of mobile money, with Celery carrying background work off the request path.
04
Deployed and hardened
Built to OWASP guidance and deployed on a Linux VPS with nginx and Certbot. Security posture was part of the design, not a pass at the end.