Cole.
All work

CourtHub PH

Multi-tenant sports booking SaaS

Booking platform for sports facilities with tenant and superadmin consoles, online payments and an AI booking assistant.

Role
Full-stack developer
When
May 2026
Stack
  • NestJS
  • Next.js
  • Supabase
  • Nx
  • PayMongo
  • OpenAI API
  • GCP

Real interface, recorded on sample data. Names and figures shown are fictional.

The problem

Court owners run bookings over chat threads and spreadsheets. They need one place for courts, schedules, staff and payments, with each facility's data kept separate.

How it was built

CourtHub is an Nx monorepo with a NestJS API, a tenant app and a superadmin app. My work covered:

  • Superadmin and tenant controls, including feature flags per facility.
  • Manual payment-proof upload alongside online checkout, feeding one bookings ledger.
  • Reschedule pricing and QR sharing for bookings.
  • Deployment and payment-correctness fixes on GCP.

The platform also has role-based access (Owner, Manager, Staff) and an AI assistant that can check availability and create bookings through tool calls.

A CourtHub booking, from first message to the facility's ledger
  1. Ask

    Customer messages on Messenger or the web

  2. CheckAI assistant tools

    Courts, availability and pricing

  3. BookAI assistant tools

    Booking created for the tenant

  4. Pay

    PayMongo checkout or uploaded payment proof

  5. Record

    One ledger, PDF receipt

  6. Manage

    Owner, Manager and Staff permissions

Where it landed

CourtHub runs in production at courthub.ph.

Booking details over the week calendar: a partially paid booking with the balance remaining
Booking details over the week calendar: a partially paid booking with the balance remaining
Transactions ledger with PayMongo and GCash payments, convenience fees and disbursements
Transactions ledger with PayMongo and GCash payments, convenience fees and disbursements
Public booking flow: picking two time slots on a court with a running total
Public booking flow: picking two time slots on a court with a running total
A facility's public page with location, amenities and court cards
A facility's public page with location, amenities and court cards
Next project: RemindCare+Open case study
RemindCare+ app: today's doses with Remi, the medicine list, clinic visits and SOS