Logo Lanfrica

Roy-Wanyoike/fuatilia

Domain:

digital infrastructure

Record type:

software
Creator:
Roy
Host:
Fuatilia (Swahili: to track, to follow up) — AR & Collections platform for Kenya. M-Pesa/Daraja-native, DDD core, ledger-first fund truth. # Fuatilia > *Kufuatilia* (Swahili) — **to keep track of, to follow up on.** **Fuatilia** is an Accounts-Receivable & Collections platform for Kenya: track every shilling a customer owes, reconcile it against M-Pesa money (Daraja) without losing a cent, and follow up with consented, intelligence-driven collections. Sister project to `digital-lending-os` — same Kenyan fintech family, TypeScript end to end. ## Design principles 1. **Ledger-first fund truth** — payments, allocations, refunds, and credit notes are append-only facts; corrections are reversing entries, never edits. 2. **The intelligence layer never owns fund truth** — scoring and recommendations read events; they cannot move money. 3. **Channel input is untrusted** — Daraja callbacks are at-least-once; intake is idempotent by construction (`unique(channel, externalRef)`). 4. **Kenya-native** — M-Pesa/Daraja, eTIMS invoice numbering, DPA 2019 consent, WhatsApp opt-in. ## Repository layout ``` docs/ design docs (context map, model, state machines, events, dictionary, review findings, invariants, build plan) + BACKLOG status board src/domain/shared/ shared kernel: Money (minor units, bigint), ids, domain errors src/domain/receivables/ wave 1 — debt position & lifecycle src/domain/payments/ wave 1 — intake idempotency + reconciliation src/domain/adjustments/ wave 1 — refunds, credit notes, credit balance src/domain/allocation/ wave 2 — the settling funnel src/domain/events/ wave 2 — typed event catalog + envelope ``` ## Quickstart ```bash npm ci npm run typecheck npm test ``` Requires Node ≥ 22. No database, no network — the domain core is pure TypeScript, tested with Vitest, built with `tsc`. ## How we ship - Features land as **pull requests** from `feat/*` branches — never direct to `main`. - A PR merges only when the feature is **done, tested, verified, and working**: local tests green, CI green on Node 22/24, diff reviewed. - Squash-merge only; branches …

Languages

Licenses