← All work
Next projectSuhulat →
EduGroup
An online learning platform with four roles, a self-promoting waitlist, instalment payments and background jobs that keep enrolments honest.

An online learning platform for a training centre. Teachers run courses and groups with video lessons; students enrol, pay in full or by instalments, and only then unlock the lessons; managers approve people and payments; a superadmin sees the whole platform.
How it was built
I wrote the full specification (TZ.md, version 2.0, with a changelog of fixes) and built the project with Claude Code from it. I directed the build and reviewed the code and tests. The specification and the prompt are both in the repository.
What it does
- Waitlist with automatic promotion. When a group is full, students queue, and the next one moves up as soon as a seat frees.
- Instalment plans. A course can be paid in parts, each confirmed by a manager.
- Background jobs. Celery beat expires unpaid enrolments after 72 hours and flags overdue instalments every day.
- Refresh-token rotation with reuse detection. Replaying a revoked token signs the user out everywhere.
- Four dashboards for superadmin, manager, teacher and student, server-rendered with Jinja2 over the same services as the JSON API.



