Imran Munawar
Web ApplicationsIn production2025–2026

Gym & Leisure Centre Platform

Members, bookings, payments, payroll and turnstiles for a live club in Cyprus

My role: Full-stack developer: database schema, edge-function APIs, admin web app, access-control integration, VPS deployment.

Gym platform admin: members list with package status and access activity

In production for a leisure centre in Cyprus. The client's name and screenshots are shown only with their agreement; interface captures use demo data.

Overview

A management platform for a gym and leisure centre: an admin web app for the front desk and management, plus the APIs behind a member app and a staff app. Members book classes and renew packages; staff manage schedules, clients and earnings; the building's NFC turnstiles open only for members whose packages are valid.

The problem

The club ran on spreadsheets and a legacy desk system. Membership status, class capacity, payments and door access lived in different places, so expired members walked in and staff spent hours reconciling.

The solution

One PostgreSQL schema is the single source of truth. A React admin app covers members, bookings, payments, reports, inventory, marketing campaigns and staff. Thirty-nine serverless edge functions expose the member and staff app APIs (OTP login, class booking with waitlists, package renewal and pricing, payment history, smartpasses). Access control talks to the same data through the Gantner cloud integration.

Principal features

  • Membership and packages

    Individual and family packages with durations, pricing rules and renewals; expiry drives everything downstream.

  • Class booking with waitlists

    Occupancy, upcoming sessions, cancellations and automatic waitlist promotion.

  • Payments and payroll

    Payment history, confirmations, daily payroll detail and average-revenue reports.

  • Door access

    Gantner NFC turnstile integration plus entry/exit tracking, so access follows membership status in real time.

  • Wallet passes

    Apple and Google Wallet smartpasses issued per member.

  • Staff tools

    Schedules, clients, exercises, leave, earnings and a real-time staff chat over WebSockets.

Technical decisions

  • Self-hosted Supabase on the client's VPS instead of a managed tier: the club keeps its data in-country and the monthly cost stays flat.
  • Sixty-four versioned SQL migrations with row-level security policies keep the schema auditable.
  • Long-running realtime pieces (turnstile events, staff chat) run as small Node services under systemd behind Caddy rather than inside edge functions.
  • Transactional email goes through Resend; SMS campaigns and class-cancellation notices are sent by dedicated edge functions.

More Web Applications

Web ApplicationsIn production

CYMaps

Billboard inventory, availability and campaign booking on a map, for Cyprus

View project