AN-008 · Software · Archived
Started Sep 2023
MusBook: a lesson‑scheduling platform, solo-built
1.0Abstract
A Django platform for music teachers and their students that I built on my own and ran from September 2023 to May 2025. It handled lesson requests, rescheduling, attendance, assignments, chat and reminders, at around 150 bookings a month at Dubai College and with freelance teachers.
At a glance
| Parameter | Value |
|---|---|
| Status | Archived. Offline since May 2025 |
| When and where | Sep 2023 – May 2025, Dubai College and freelance music teachers |
| My part | Solo: built it and ran it for two years |
| Built with | Django 5 and PostgreSQL; Channels and Daphne; Celery with Redis; Tailwind, Alpine.js, FullCalendar; Nginx and Gunicorn on systemd |
| Code | github.com/zhaojinchu/MusBook |
| Usage | About 150 bookings a month |
| Real time | WebSocket chat, a notification feed and live dashboard counters |
| Reminders | 30 minutes, 1 hour and 24 hours before a lesson |
The problem
Music lessons at a school run on a web of chat messages: “can we move Thursday”, “did you practice the Bach”, “I’m running five minutes late”. Teachers had no shared calendar with their students, students had no single place for assignments, and nobody had a record of attendance. MusBook put all of that in one place.
What I built
- Role-aware accounts: a custom user model with explicit student/teacher roles, timezones and notification preferences; email-based two-factor authentication; an invitation flow so a teacher connected to a student before calendars, messaging or assignments were shared.
- Scheduling: lesson requests (optionally recurring) with approve/decline, a full rescheduling workflow that routed the proposal to the other party and kept the history, attendance tracking inline, and a FullCalendar hub that merged confirmed lessons with personal events.
- Communication: real-time direct messaging over WebSockets with persistence; a notification center for requests, reschedules, attendance and assignments; teacher notes as a lightweight CRM per student.
- Automation: Celery workers and beat sent reminders 24 hours, 1 hour and 30 minutes before a lesson, respecting each user’s preferences: a beat task polled upcoming lessons every five seconds; a timezone middleware converted every form submission and calendar view.
What happened
It was piloted at Dubai College and then used across the school and by freelance music teachers outside it. Roughly 150 bookings a month went through it.
It went offline in May 2025.
What’s next
Redeploying a trimmed version, lessons and messaging only, is cheap and would put a live link back on this page. It’s on the list.