Back to projects

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_notify and 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