Dance Portal
A full-stack booking and class management platform for a local dance school
The owner of a dance school was managing bookings, class rolls, and payment tracking entirely by hand. I built a full-stack platform in Next.js 15 that lets parents browse classes by age and discipline, book and pay via Stripe, and manage their children from a single account. On the admin side, class rolls generate automatically from enrolment data, payment status is visible at a glance, and bulk email reminders go out through Resend. A separate teacher portal handles day-to-day roll-taking.
The data layer runs on MongoDB Atlas with Mongoose with eight models covering users, students, classes, terms, enrolments, and attendance, with compound indexes and a hybrid embedded/referenced document design shaped around real access patterns. The multi-role architecture with three route groups and middleware-based access control kept things clean as the feature set grew.
I handled product, design, and implementation end-to-end for a live production client.
Running live here.