4 months · in production · Shipped end to end

Multi-branch gym operations platform

A regional gym chain runs its daily operations — staff attendance, schedules, payroll adjustments, customer visits, branches, and stock — on one platform I shipped end to end in four months. The client is under NDA, so this page sketches the shape. It runs across 5+ branches and is still in production.

The problem

Before the platform, operations lived in spreadsheets and WhatsApp threads. Shift schedules, leave requests, payroll adjustments, and stock counts each had their own workaround, and every branch had its own version of it. Nothing shared a source of truth.

That setup works at one location. At 5+ branches it stops being a workflow and becomes the main cost of running the business: managers reconciling by hand, and no single record anyone could trust.

Approach

I built one system, solo, end to end: scoping, data model, backend, frontend, deployment. Django and PostgreSQL on the backend, Next.js on the front.

The signature detail is geofenced attendance. Staff check in and out from their own devices, but only on site — the clock-in simply doesn't work outside the branch's geofence. Attendance stops being an honor system.

  • Employee check-in/check-out with geofencing
  • Shift and schedule management
  • Leave management
  • Payments, reimbursements, and bonuses
  • Customer visit tracking
  • Branch management
  • Stock management

Status

The platform is in production across 5+ branches. The spreadsheet-and-WhatsApp stack it replaced is gone; scheduling, attendance, payroll adjustments, visits, and stock now live in one system with one record of what happened.

Notes

Operations software succeeds or fails on whether it matches how the business actually runs. The modules above weren't a product roadmap — they were the client's real processes, moved into software one at a time. That's the shape of most business-systems work I take on.

Stack

DjangoNext.jsPostgreSQL