Case StudyPython / Django / PostgreSQL / Docker / B2B

TutorHub

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

TutorHub

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

TutorHub - Dashboard

Dashboard

Admin overview with key stats: students, tutors, upcoming lessons, pending invoices, and revenue tracking.

1/9

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