TutorHub
B2B tutoring school management system. Django + PostgreSQL + Redis + Celery. 4 user roles, automated billing, attendance tracking, lesson calendar, parent portal, messaging.

TutorHub ("Na Piatkę") is a comprehensive management system for tutoring schools in Poland. Built as a Django monolith, it replaces Excel-based workflows with automated scheduling, billing, attendance tracking, and multi-role communication.
The Problem
A tutoring school with 200+ active students was managing everything in Excel: student records, teacher schedules, lesson tracking, payment status, and parent communication. The owner spent 10+ hours per week on administrative tasks that should have been automated.
Double-booked teachers, missed payments going unnoticed for weeks, and no way to generate reports without manual data aggregation.
The Solution
A custom-built Django platform with 17 interconnected modules, 4 user roles (Admin, Tutor, Student, Parent), and automated background tasks via Celery.
Modules

Dashboard
Admin overview with key stats: students, tutors, upcoming lessons, pending invoices, and revenue tracking.
User Roles & Access Control
- Admin -- full system access, dashboard with revenue/stats, system settings, audit logs
- Tutor -- lesson management, quick attendance marking, student roster, earnings view
- Student -- personal dashboard, lesson calendar, cancellation requests, progress tracking
- Parent -- configurable portal (view-only or full access), invoice viewing, messaging with tutors
Automated Workflows
Background tasks powered by Celery Beat and Redis:
- Monthly billing -- invoices auto-generated on the 25th of each month
- Overdue detection -- daily check at 8 AM, automatic status updates
- Payment reminders -- email sent 7 days before due date
- Makeup lesson expiry -- automatic cleanup after configurable period (default 30 days)
- Lesson reminders -- notifications 24 hours before scheduled lessons
Technical Architecture
- Django 5.1 with Python 3.11+ -- CBVs, custom managers, role-based mixins
- PostgreSQL 17 -- relational schema with composite keys for schedule slots, database-level constraints against double-booking
- Redis 7 + Celery 5.4 -- task queue for billing, notifications, and background jobs
- HTMX 1.21 -- reactive UI without page reloads, partial template rendering
- Tailwind CSS + DaisyUI -- component-based styling with theme support
- Gunicorn + WhiteNoise -- production serving with static file optimization
- Docker Compose -- PostgreSQL, Redis, and Adminer in containers
Security & Compliance
- GDPR-ready with user archive and anonymization support
- Full audit trail -- every CRUD operation logged with user, IP, and timestamp
- Email verification workflow
- Session-based auth with 2-hour timeout
- Role-based access control on every view
Stack
- Django 5.1 + Python 3.11
- PostgreSQL 17
- Redis 7 + Celery 5.4
- HTMX + Tailwind CSS + DaisyUI
- FullCalendar (scheduling)
- ReportLab + PyMuPDF (PDF generation)
- Docker Compose
- Gunicorn + WhiteNoise
Results
- 10h to <1h weekly admin time reduction
- Zero double-booking incidents since deployment
- 3 days/month saved on manual invoicing
- 4 user roles with granular access control
- 17 Django apps powering the entire system
- Handles 200+ concurrent users