RentFlow

A landlord-initiated, system-fulfilled recurring rent payment engine — a demo built to prove correctness under failure, live: idempotency, independent charge/disbursement legs, crash recovery, and reconciliation, all with injectable chaos and an append-only ledger as the source of truth.

Full requirements and design rationale live in SPECS.md and PRD.md. This README covers what was actually built and how to run it.

Core idea

A RentRequest is created once. Every "cycle" (a manually-advanced fake clock, not real cron) the system autonomously charges the renter's card, holds funds in a mock wallet, and disburses to the landlord — with zero human action per cycle on the happy path. Two independent state machines — charging and disbursing — are chained together, so a failure in one leg never silently re-runs the other (a disbursement bounce never re-charges the card). Every transition writes an immutable ledger row, so the system's current state is always re-derivable from history — including after a simulated mid-transaction crash.

Share this project:

Updates