F02Delivered to a dental clinic · 2026
ClinicHub
A bilingual Arabic/English clinic management system: patient records, appointments, invoicing with a double-entry ledger, role-based access and automated off-site backups. Handed over with a cutover runbook and an Arabic staff guide.
The demo runs the same code as the clinic's production system, on a made-up clinic with a full month of activity, reset every hour. Sign in with one click as admin, reception or accountant (password demo).

- In production
- megadental.m-ashraf.com, the clinic's own system, staff sign-in only
- My role
- Built and delivered it: requirements with the staff, data migration, deployment and documentation
- Users
- Reception, accountant and admin, each with their own permissions
- Stack
- Python, Flask, SQLite, Waitress, Caddy for HTTPS
- How it was built
- AI-assisted, then validated against the clinic's real exported dataset (2,247 records)
The brief
The clinic was paying a monthly subscription for a hosted clinic system and wanted its own, without retraining anyone. So ClinicHub keeps the words reception already used: the same appointment statuses and colours, the same room names, Arabic first with an English toggle. Only the layout is new.
What it does
Reception
Find a patient by name, phone or file number. Book appointments by day, with a warning before anything is double-booked. Print receipts in Arabic or English.
Accounts
Invoices, payments, refunds and transfers between cash boxes. Every money movement posts its double-entry journal lines automatically, in the accountant's own chart of accounts, through to a trial balance, income statement and balance sheet.
Admin
Users and roles (reception can't open the finance pages), an audit log, inventory with low-stock and expiry alerts, and per-doctor commission tracking.
How it's put together
One Flask application on the Waitress server, behind Caddy for HTTPS. Everything lives in a single SQLite database, which keeps backups and moves simple.
- CSRF protection on every form, login rate-limiting and 12-hour sessions.
- A restore point on every start, a nightly server snapshot, and a daily off-site copy.
- An audit log of who changed what.
Moving the data
The clinic's full history came out of the old system as spreadsheet exports. The export tool sometimes served a cached copy of the wrong page, so I hash-checked every chunk and verified the row ranges before merging. Then I migrated everything into SQLite and reconciled the ledger with the clinic's real cash and bank balances.
Handover
Software that the staff can't use isn't delivered. ClinicHub was handed over with a cutover runbook (how to switch over on day one) and a step-by-step Arabic guide written for someone using it for the first time.
What's next
A week-view calendar for appointments, prescriptions and quotations are the next features on the list.
Live demo
Run the clinic for an hour
A made-up clinic with a month of activity: patients, appointments, invoices, stock, lab orders and a balanced ledger. Take a payment as reception, then confirm it as the accountant and watch the treasury and the double-entry ledger update.
- Admin
admin/demo· everything, including the audit log- Reception
reception/demo· appointments, patients and payments- Accountant
accountant/demo· invoices, payment confirmations, the ledger, stock and labs