Digital Fine Management System
From paper citations to a traceable digital lifecycle
- Role
- Full Stack Engineer
- Timeline
- 2024
- Stack
- ReactFastAPIPythonPostgreSQLn8nLinux

Paper fines get lost, disputed and quietly forgotten. Digitising them is less about forms and more about trust: every fine needs a lifecycle that both the issuer and the recipient can verify.
Problem
Fines were issued on carbon-copy paper, keyed into a register later — or not — and reconciled against payments by hand. The failure modes wrote themselves: unreadable citations, payments that couldn't be matched to fines, no reliable way to know what was outstanding, and zero audit trail when a fine was contested.
Solution
A digital lifecycle for every fine: issued with structured details, notified to the recipient, tracked through payment or appeal, and closed with a complete history. Officers issue through a simple guided form; administrators see live registries of outstanding, paid and disputed fines; recipients can look up a fine by reference and see exactly where it stands. Automated notifications and escalation reminders run on a schedule, so follow-up stops depending on anyone's diligence.
Architecture
Interfaces
- Officer issuance app
- Admin registry
- Public lookup
API
- FastAPI service
- Validation & reference IDs
- Role-based access
Lifecycle
- Fine state machine
- Payment reconciliation
- Appeals workflow
- Audit log
Automation & Infra
- n8n notifications
- Scheduled escalations
- PostgreSQL
- Linux VPS
Each fine is a state machine — issued, notified, paid, appealed, waived, closed — and transitions are the only way state changes. The audit log is just the list of transitions, which makes disputes a matter of reading, not reconstructing.
Challenges
Making records tamper-evident
In a system about penalties, "who changed what" is the product. Append-only transition logs with actor, timestamp and reason — and no update path that bypasses them — meant every record can defend itself.
Payments that arrive without context
Payments came through channels that didn't carry clean references. Structured reference IDs printed on every notification, plus a manual reconciliation queue for the stragglers, brought matching from guesswork to routine.
Users who are not software users
Officers work outdoors, quickly, sometimes offline. The issuance flow became a short guided form with aggressive validation and sensible defaults — because a fine that's wrong at creation poisons every step after it.
Technologies
- Backend — FastAPI (Python) with typed schemas; PostgreSQL as the authoritative store.
- Frontend — React interfaces tuned per audience: fast entry for officers, dense registries for admins, dead-simple lookup for the public.
- Automation — n8n workflows for notifications, reminders and escalation schedules.
- Infrastructure — deployed and operated on Linux with scripted backups and log rotation.
Screens


Lessons Learned
- In civic systems, the audit trail is the feature; everything else is interface.
- State machines turn policy documents into code you can point at.
- Design for the least patient user in the worst conditions — everyone else is then delighted.