CourtBooker
An end-to-end indoor sports court reservation platform with real-time booking, secure payments, and venue management.
- Next.js
- PostgreSQL
- Docker
- NextAuth.js
- REST API
- CI/CD
Overview
🏸 CourtBooker
A full-stack booking platform that enables sports institutions to list their courts and allows customers to reserve time slots in real time.
🚀 Key Features
- Real-time court booking with instant availability updates
- Role-based access for customers, institution admins, and a platform super admin
- SMS booking confirmations and cancellations
- Live dashboard updates using PostgreSQL
pg_notifyand Server-Sent Events (SSE) - Self-hosted image storage with MinIO (S3-compatible)
- Secure JWT authentication with NextAuth v5 (Credentials Provider)
🛠️ Tech Stack
- Next.js 16 (App Router)
- TypeScript
- PostgreSQL 16
- postgres.js
- NextAuth v5
- Server-Sent Events (SSE)
- MinIO
- Docker
- Nginx
- DigitalOcean VPS
🏗️ Architecture
-
Backend built with Next.js App Router
-
Independent Node.js worker handles SMS delivery so notifications never block the main application
-
PostgreSQL triggers initiate SMS events
-
Dockerized services:
- PostgreSQL
- MinIO
- Next.js application
- SMS worker
- Nginx reverse proxy
⚙️ DevOps & Deployment
- Fully self-hosted on a DigitalOcean VPS
- CI/CD with GitHub Actions
- Automated linting, build, and staging deployments
- Production deployments with approval, health checks, and automatic rollback
- Daily automated PostgreSQL backups
- SSL termination and rate limiting via Nginx
Gallery
Interested in something similar?
I'm open to new projects and collaborations — let's build something great together.
Get in touch






