LessonHub is a Django web app that connects parents/guardians with private lesson teachers (music, sports, tutoring, art, etc.) for their children. Parents can browse teacher profiles, book lesson slots, and manage their children's schedules. Teachers can create a profile, set their hourly rate and weekly availability, and accept/decline booking requests. Admins can verify (background check) teachers before they go live, keeping the platform safe for kids.
- Custom user model with three roles:
parent,teacher,admin. - Teacher profiles: subject taught, bio, hourly rate, years of experience,
a
is_verifiedflag (only verified teachers are publicly bookable), and a photo. - Availability slots: teachers publish recurring weekly time slots they're free to teach.
- Children: parents register their children (name, age, notes e.g. allergies/learning needs).
- Bookings: parents request a lesson for a child with a teacher at a
specific available slot/date. Status flow:
pending → confirmed → completedorpending → declined/confirmed → cancelled. - Reviews: parents can rate & review a teacher after a completed lesson.
- Dashboards: separate dashboards for parents (their children & bookings) and teachers (their schedule & requests), plus Django admin for staff.
- Search/browse: filter teachers by subject and verification status.
- Python 3.10+
- Django 5.x
- SQLite (default, zero-config — swap for Postgres in production)
- Bootstrap 5 (via CDN) for quick, clean styling
lessonhub/
├── manage.py
├── requirements.txt
├── lessonhub/ # project settings
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py / asgi.py
└── booking/ # the single app holding all logic
├── models.py # User, TeacherProfile, Availability, Child, Booking, Review
├── forms.py
├── views.py
├── urls.py
├── admin.py
├── signals.py
└── templates/booking/*.html
cd lessonhub
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser # create an admin account
python manage.py runserverVisit:
http://127.0.0.1:8000/— public home / teacher browsehttp://127.0.0.1:8000/accounts/signup/— register as parent or teacherhttp://127.0.0.1:8000/admin/— Django admin (verify teachers here)
- A teacher signs up, fills out their
TeacherProfile(subject, rate, bio) and adds weeklyAvailabilityslots. - An admin reviews and marks the teacher
is_verified=Truein the admin panel (simulating a background-check/vetting step). - A parent signs up, adds one or more
Childrecords, browses verified teachers by subject, and submits aBookingrequest against an open availability slot. - The teacher sees the pending request on their dashboard and accepts or declines it. Accepting marks the slot booked for that date.
- After the lesson date passes, either side can mark it
completed, and the parent can leave aReview(star rating + comment) for the teacher.
This file is also included as README.md inside the project zip.