The problem
A training centre in Mansoura runs exam-prep courses taught by more than fifty visiting doctors, each taking a share of every fee. It ran on a receipt book and three spreadsheets. At month-end the owner spent days working out what each student had paid and who it belonged to, and the numbers never matched the doctors’ own notes.
What we built
The whole academic structure is modelled: universities, faculties, levels, semesters, years, and courses priced and assigned to a doctor. Reception enrolls a student in a few seconds from a desk built for exactly that.
The money is the real work. Enrollment snapshots the course price and splits it three ways, payments apply to the platform share first, and a distribution journal recognises each share on its date. That last part is why the owner stopped spending three days a month reconciling a receipt book.
Inside the system
- Price snapshot per enrollment, so a later price change never rewrites history.
- 85 permissions across 5 roles, including an assistant who acts for one specific doctor.
- Four dashboards: financial, students, courses, doctor earnings, all exportable.
- Receipts stored in MinIO and attached to the payment that created them.
- Audit log on every change; permission checks at both route and API level.
Screens