Personal project · Case study
Badminton Court Booking System
Courts, coaches and equipment in one booking flow.
A full-stack application for managing court bookings, coach registration and equipment tracking, with dynamic pricing and an admin dashboard.
- Role
- Personal project (full stack)
- Stack
- React
- Vite
- Tailwind CSS
- Node.js
- Express.js
- PostgreSQL
- Sequelize
- JWT
01 · Context
The problem
A court booking is a combination of a court, a time slot, optionally a coach and optionally equipment, and the price depends on all of them.
02 · Solution
The approach
A React front end talks to an Express API backed by PostgreSQL through Sequelize. Pricing is rule-driven (court, time slot, demand), and an admin dashboard manages courts, pricing, coaches and equipment.
03 · Architecture
How the pieces fit together
Badminton Court Booking System · architecture
Interface
- React (Vite) · booking · admin dashboard
Logic
- Express API · JWT · role-based access
- Pricing rules · court · slot · demand
Data
- PostgreSQL · via Sequelize
Data flow
- React (Vite) → Express API (REST)
- Express API → Pricing rules
- Express API → PostgreSQL (Sequelize)
04 · What I built
Key features
01
Dynamic pricing
Pricing rules that depend on the court selected, the time slot and demand.
02
Coaches and equipment
Coach registration, assigning coaches to sessions, and tracking equipment availability.
03
Admin dashboard
Administer courts and pricing from a dedicated dashboard.
04
Secure access
JWT-based authentication with role-based access control.