Capstone 9 · Backend
Susu
A susu, also called a tontine, an ajo or a partner hand, is a rotating savings association: a group contributes a fixed amount each period, and each period one member receives the pot. It has funded businesses, homes and passages across West Africa and the Caribbean for generations, entirely on trust and record-keeping. Build the record-keeping as a service. Groups, members, a contribution schedule, a payout order, and a complete audit trail. No frontend required; this is an API and a data model. The difficulty is correctness. Money must never be represented as a floating point number. A contribution recorded twice must not count twice, which means idempotency. Two requests arriving at the same moment must not both take the same payout slot, which means the database has to enforce it rather than your code remembering to check. Every balance must be derivable from the ledger rather than stored and hoped for, so any disagreement is detectable. If you can demonstrate that your service survives duplicate requests and simultaneous ones without ever producing a wrong balance, you have built something most working developers would take seriously.
Concepts used
Your dataset
Seeded groups and members, plus a generated history long enough to test a full rotation.
Milestones
The graded core
The rest of this project is yours to shape. This one function is the piece everything else depends on, so it runs against hidden tests to prove it is right before you build outward.
Your workspace
Build the full project here. Work through the milestones in order, in both languages.