Clinic Management Dashboard
Patient records, appointments, clinical notes and GST billing for a small clinic, with separate views for reception, doctors and admins. Designed for the phone at the front desk as much as the desktop.

The problem
A clinic’s system holds its most sensitive data and runs all day under pressure. Two receptionists book the same doctor at once, two cashiers take money for the same bill, an invoice series must have no gaps, and every look at a patient’s record should be accountable. Meanwhile the front desk often works from a phone.
How it’s built
PostgreSQL enforces the rules that matter: exclusion constraints stop any doctor or patient being booked twice, with locks taken in a fixed order so competing bookings fail cleanly instead of deadlocking. Invoice numbers come from a counter updated inside the issuing transaction, so a failed issue gives its number back, and payments lock the bill so it can never be overpaid. Clinical notes are readable by doctors only, and an audit trail that the database refuses to edit records who opened which record. The React front end shows one obvious next step on each appointment: check in, see patient, bill, take payment.
What it does
- Twelve simultaneous bookings for one slot: exactly one succeeds
- Gapless invoice numbers per financial year, even when issues race
- Concurrent payments can never take more than the bill
- Doctor-only clinical notes and an append-only audit trail
- A full patient visit tested on an Android phone in CI
Learn to build software like this
The courses teach the same craft — from the basics to a real, running project.


