Built to order

Gym Management System with Membership Billing and Trainer Scheduling

FitTrack Pro is a role-based gym management web app with three logins — admin, trainer and member — covering plans, fee billing, class scheduling, check-ins and expenses. The admin assigns plans, records fees and chases dues; trainers publish weekly slots and log progress notes; members book classes and view dues and visits. The demo seeds 40 members across 4 plans, and every due is plan price minus receipt-ledger total, recomputed each page load. Suitable for B.E./B.Tech final-year projects in Computer Science, IT and related disciplines.

Web Development HTML5 vanilla JavaScriptSession-based role authenticationPassword hashingRelational schema ER designImmutable fee-receipt ledgerSQL aggregate reporting queriesApache shared-hosting deploymentSoftware
Gym Management System with Membership Billing and Trainer Scheduling — project thumbnail preview
More project photos (3)

The problem

FitTrack Pro is a complete gym management web application built around three real user roles — the gym admin who runs billing and operations, the trainer who runs classes, and the member who trains and pays. The admin dashboard shows fees collected, dues pending, today's check-ins and a revenue trend; a due-reminder queue drafts messages for members above a configurable threshold. Members are enrolled on one of four plans, fees are recorded as immutable receipt rows, and every due on the system is recomputed from the ledger on each page load. Trainers define weekly class slots with capacities, members book seats, the front desk logs check-ins, and expenses feed a net revenue report. The stack is deliberately student-friendly — PHP 8, MySQL 8 and Bootstrap 5 — so the full request cycle from form to database row is readable and explainable in a viva.

This is a built-to-order software project: the database schema, PHP modules, working demo build and the complete student kit (report, PPT, Q&A) are prepared fresh for you.

Small and mid-size gyms run on paper registers and WhatsApp reminders, and that combination quietly leaks money. The register records who joined and on which plan, but nobody can tell who paid in full, who paid in two parts, or who stopped paying after month two — part-payments live in margins and receipts have no running balance. Trainers keep timings on a whiteboard, so members arrive for moved sessions while popular slots overfill and off-peak run empty. Check-ins are a tick-mark column with no history, so attendance trends can never be measured. When the owner asks for the month's real numbers, the answer is an estimate from memory. What a gym needs is one shared, role-based system: the admin owns billing and dues, the trainer owns the schedule and progress notes, and the member sees only their own plan, dues and bookings — all three reading the same database, with fees as an append-only ledger no correction can rewrite.

SYSTEM FLOW

4 components 3 connections

Live flow
Drag to explore
100%
userGym Admin

Enrolls members on plans, records fee payments and runs the due-reminder queue.

Follow the working sequence

How it works

A visitor signs in as admin, trainer or member, each with a hashed password in the users table; the PHP session tags the role and every page passes through a role guard, so a member typing an admin URL is bounced back. The admin dashboard runs plain, honest SQL: fees collected sums the fee_receipts table, dues pending sums each member's plan price minus their receipts, and today's check-ins counts the checkin_log table. Enrolling a member inserts a members row linked to a plan; recording a fee inserts one immutable receipt row — the due is derived, never stored. The reminder queue picks members whose computed due meets the configurable threshold. Trainers create class slots with capacities, and bookings are accepted only while bookings stay below capacity. The front desk check-in writes a timestamped row; expired plans are flagged at the desk. Reports aggregate these same tables: revenue by month, attendance by day, members by plan, and trainer fill rates.

  1. Login posts credentials; PHP verifies the password hash and opens a session tagged with the user's role.
  2. The role guard runs on every page: admin pages reject trainers and members, trainer pages reject everyone but trainers.
  3. Admin enrolls a member — a members row is inserted with name, phone, plan foreign key and join date.
  4. Recording a fee inserts one immutable row into fee_receipts; the member's due is recomputed as plan price minus the sum of their receipts.
  5. The dues list and reminder queue read that computed due; members at or above the configurable threshold get reminder drafts.
  6. Trainers add class slots (day, time, title, capacity); member bookings are accepted only while bookings remain below capacity.
  7. The front desk checks a member in by ID or name, writing a timestamped row to checkin_log; expired plans are flagged at check-in.
  8. Expenses are recorded in the expenses table; the reports page nets fees collected against expenses for the month's true position.

Tech stack:

  • PHP 8 (server-side application logic, session auth, role guards)
  • MySQL 8 (members, plans, fee_receipts, schedule, bookings, checkin_log, expenses tables)
  • Bootstrap 5 (responsive admin/member UI)
  • HTML5 + vanilla JavaScript (demo build interactivity)
  • Apache / shared-hosting friendly (no build step, runs on standard student hosting)
Parameter Value
User roles 3 (admin, trainer, member) — design parameter
Membership plan tiers 4 (Monthly / Quarterly / Half-Yearly / Annual) — design parameter
Report types 4 (revenue, attendance, plan-wise membership, trainer utilization) — design parameter
Check-in history retention 12 months (design parameter)
Demo seed data 40 members across 4 plans, 3 trainers, 42 weekly class slots — measured from the demo build
Due computation Plan price − Σ fee receipts, recomputed on every page load — no stored balance
Fee records Immutable ledger rows; corrections as new rows only
Authentication Password hashing (PHP password_hash) with session-based role guards
Hosting requirement Standard PHP 8 + MySQL shared hosting (expected)

Project features

The system's backbone is three-role access control: admin, trainer and member each get their own workspace behind session-based guards, so billing, scheduling and self-service never leak across roles. Billing is built on an append-only fee ledger — every payment is a receipt row, corrections are new rows, and each member's due is recomputed as plan price minus receipts on every page load, which is the mechanism that makes dues impossible to corrupt. Trainer scheduling covers the full loop from weekly slot creation with capacities to member booking with capacity enforcement and per-slot rosters. The front-desk check-in register writes timestamped attendance rows that feed the reports page, where fees collected are netted against recorded expenses to show the gym's true monthly position. Together these four capabilities replace the paper register, the whiteboard and the guesswork with one shared, consistent database.

  • [Three-role access with guards] Admin, trainer and member logins with session-based role checks on every page — a member cannot reach billing URLs and a trainer cannot reach member data outside their classes. This is the system's security backbone, not a cosmetic menu difference.
  • [Plan management with honest pricing] Four plan tiers (Monthly ₹1,200, Quarterly ₹3,000, Half-Yearly ₹5,500, Annual ₹10,000) with full CRUD; changing a price affects only future enrollments because past dues are already fixed in the receipt ledger.
  • [Immutable fee ledger] Every payment is an append-only receipt row — corrections are posted as new rows, never edits. A member's due is plan price minus the sum of receipts, recomputed on every page load so it can never drift out of sync with the money actually recorded.
  • [Due-reminder queue] One click lists every member whose due meets the configurable threshold, with a ready message draft per member — the gym's most direct revenue-recovery tool.
  • [Trainer scheduling and booking] Trainers publish weekly slots with capacities; members book seats with capacity enforcement, trainers see per-slot rosters, and the admin sees all slots across trainers.
  • [Front-desk check-in register] Check-in by member ID or name with a timestamped log; today's register is visible live, expired plans are flagged at the desk, and history is retained for 12 months.
  • [Expense tracking and net reports] Equipment, maintenance, utilities and supplies are recorded separately from fees, so the reports page shows fees collected, expenses, net position, attendance trends, plan-wise membership and trainer fill rates.

Configurable: due-reminder threshold (default ₹500), slot capacities, plan prices and durations, check-in retention period. Optional / future scope: online payment gateway integration, a member mobile app, SMS reminders via a gateway API, biometric check-in, and diet-plan modules — none of these are in the base build.

What is included

  • Complete PHP + MySQL application source with documented schema (members, plans, fee_receipts, schedule, bookings, checkin_log, expenses)
  • Working single-file demo build (FitTrack Pro) with seeded data — admin, trainer and member workflows all functional
  • Database setup script with seed data (plans, trainers, sample members)
  • Project report PDF (background, requirements, ER diagram, schema design, module walkthrough, ledger design rationale)
  • PPT presentation for final review
  • Viva Q&A preparation document (sessions, role guards, SQL joins, ledger vs stored balance, capacity checks)

Limitations & prerequisites

  • The base build has no online payment gateway — fees are recorded as received (cash/UPI/card at the desk); gateway integration is future scope.
  • There is no member mobile app; members use the responsive web interface.
  • Reminders are drafted message text for manual sending, not automated SMS — no gateway is wired in the base build.
  • Attendance analytics are counts and trends from the check-in log, not biometric or turnstile data.
  • The demo uses seeded sample data that resets on reload; the built-to-order build ships with a real MySQL database.

Frequently Asked Questions

Is the database included in this project?

Yes — the complete MySQL database ships with the project, including the members, plans, fee_receipts, schedule, bookings, checkin_log and expenses tables, plus a setup script with realistic seed data. The fee_receipts table is designed as an immutable ledger, which becomes a strong viva talking point about why dues are computed from receipts rather than stored as a balance.

Is there an admin panel?

Yes, and it is the heart of the system. The admin dashboard shows fees collected, dues pending, today's check-ins and a revenue trend; from there the admin enrolls members, records fees, manages plans, views all trainer slots, runs the due-reminder queue, logs expenses and opens the reports page.

Can it be hosted online for the demo?

Yes. The stack — PHP 8, MySQL 8, Bootstrap 5 — runs on ordinary shared hosting with no build step or special server configuration, so the student can put a live demo URL in the report and show it working on a phone during the viva. The built-to-order delivery includes step-by-step hosting guidance, so going live is part of the standard package.

Can a payment gateway be added later?

Yes, and the ledger design makes it clean. A gateway callback would simply insert a receipt row into fee_receipts exactly like any manual desk payment, so the due computation needs no change at all — it always derives from receipts. Gateway wiring is listed as future scope rather than in the base build, but the schema is already ready for it.

How do trainers and members use it?

Trainers log in to publish weekly class slots with capacities, see booking rosters per slot, and write progress notes for members. Members log in to view their plan, paid amount and due, book open class slots, and see their own check-in history and trainer notes.

Is this project suitable for a final-year project?

Yes — for Computer Science, IT and related programs. It demonstrates role-based authentication with session guards, relational schema design around an append-only fee ledger, capacity-checked class booking logic and SQL aggregate reporting — all of it explainable end to end in a viva, which is exactly what examiners test.

Components & software requirements
  • PHP 8 (server-side application logic, session auth, role guards)
  • MySQL 8 (members, plans, fee_receipts, schedule, bookings, checkin_log, expenses tables)
  • Bootstrap 5 (responsive admin/member UI)
  • HTML5 + vanilla JavaScript (demo build interactivity)
  • Apache / shared-hosting friendly (no build step, runs on standard student hosting)
Delivery information

Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.

Support terms

Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.

Download free synopsis (PDF)

Enter your name and WhatsApp number — the synopsis PDF downloads immediately. We may send occasional project updates on WhatsApp; no spam.

Related guides

All guides
Get a quotation