About this software
About GymOS – Complete Gym Management & Member Fitness Platform
GymOS is a source-code product for one independent gym, built with React, TypeScript and Vite. The owner and staff side covers members, sign-up requests, plans, payments, attendance, renewals, trainers, expenses, notices, products and reports. Members get a portal for their membership, notices, workout and nutrition routines, product pickup requests and daily progress check-ins. It runs in a browser-only demo mode with fictional data, or in connected mode using Supabase Auth and PostgreSQL with row-level security. It can be deployed to Netlify, Vercel, Docker/Nginx or a VPS.
Why GymOS – Complete Gym Management & Member Fitness Platform
What makes it better
than the alternatives
- 01
Database-enforced security
Access rules live in PostgreSQL RLS policies, and a 116-check allow/deny SQL test suite covers owner, staff, member, pending, suspended and cross-gym cases.
- 02
Pickup-order workflow
Prices and totals are computed server-side, stock is checked, deducted on Ready for pickup and restored on cancellation, and staff cannot edit stock directly.
- 03
Demo and connected modes
A fictional browser-only demo is available for evaluation, while connected mode uses Supabase for shared data and real accounts.
- 04
Three roles with member approval
Admin, staff and member roles exist; public sign-up creates only a pending member until the gym approves it.
- 05
Flexible self-hosting
Dockerfile, docker-compose and Nginx config are included alongside Netlify support, plus static checks, a secret scan and a GitHub Actions quality workflow.
Dashboard & Reports
- Operational dashboard with membership
- payment
- attendance and renewal summaries
- Reports page
- CSV export and JSON backup/restore helpers
Members & Registrations
- Member directory
- Review of member sign-up requests
- Member approval before activation
Plans, Payments & Renewals
- Membership plans
- Manual payment ledger (not online payment processing)
- Renewal follow-up preparation; the app does not send messages automatically
Attendance & Trainers
- Attendance history and visit recording
- Trainer management
Expenses
- Expense tracking (owner-only)
Notices
- Notice board with publish
- priority and expiry controls
Products & Orders
- Product catalog and stock tracking
- Low-stock awareness
- Member pickup requests with multi-item basket and status workflow
Routines
- Workout and nutrition routines shared gym-wide or assigned to individual members
Member Portal & Progress
- Membership details and notices
- Daily check-ins for workout
- water
- sleep
- diet
- calories
- mood and optional body measurements
- Personal progress history
Auth & Deployment
- Supabase Auth sign-in and registration
- with profile-based roles
- Settings page
- Docker/Nginx
- Netlify and VPS deployment
- Schema and fictional seed SQL
| Language | Version | Framework | Used for | Share of code |
|---|---|---|---|---|
| SQL | — | — | Database | 52.5% |
| TypeScript (React) | — | — | Front-end | 25.1% |
| TypeScript | — | — | Front-end | 18.3% |
| CSS | — | — | Styling | 2.5% |
| PowerShell | — | — | Scripts | 1.2% |
| HTML | — | — | Front-end | 0.4% |
- Primary language
- TypeScript 5.9.3
- Framework
- React 18.3.1 with Vite 6.4.5
- Database
- PostgreSQL 16 (via Supabase in connected mode)
- Authentication
- Supabase Auth email and password, with PostgreSQL row-level security; local demo mode is preview only
- Licence
- Single-site
- Screens
- 18
- Database tables
- 14
- Supported languages
- English UI only; no i18n framework evidenced in the digest; RTL not supported
- Browser support
- Modern evergreen browsers (no explicit test matrix in the digest)
| Minimum | Recommended | |
|---|---|---|
| CPU | Static frontend: 1 vCPU | Static frontend: 2 vCPU |
| RAM | 1 GB RAM host; database hosted on Supabase | 2 GB RAM host; database hosted on Supabase |
| OS | Node.js 22+ and npm 10+ for building; Nginx (alpine) container for serving; any Linux, macOS or Windows build machine | Node.js 22+ and npm 10+ for building; Nginx (alpine) container for serving; any Linux, macOS or Windows build machine |
| Est. monthly hosting | $25 | $25 |
```bash cd GymOS export VITE_SUPABASE_URL=https://YOUR_PROJECT_ID.supabase.co export VITE_SUPABASE_PUBLISHABLE_KEY=YOUR_SUPABASE_PUBLISHABLE_KEY docker compose up --build -d ``` The app is served on port 8080 by default (set `PORT` to change it).
```bash cd GymOS/Project cp .env.example .env.local # edit .env.local with your Supabase URL and publishable key npm install npm run build sudo cp -r dist/. /var/www/gymos/ ``` Point Nginx at `/var/www/gymos` using the included `nginx.conf` for SPA routing.
```bash cd GymOS/Project npm install npm run build ``` Set the build command to `npm run build`, the publish directory to `dist`, and add `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY` as site environment variables. The included `public/_redirects` handles SPA routing.
Quality report
Manually reviewedHow to read the quality report
What this is. Every project on Vibe96 goes through an automated audit of its source code before a reviewer in Dubai checks it by hand. The score is out of 100; 75 is the minimum to be listed, and any single failing check blocks a listing regardless of the score.
- Security
- No real credentials in the code, every data-changing route protected, admin areas role-gated, no SQL built from user input.
- Code structure
- A developer can navigate and extend it: clear module boundaries, no giant files, little copy-paste.
- Docs & completeness
- The setup guide, example config, schema and required files the builder committed to are actually in the archive.
- Dependency health
- Packages pinned, no known critical vulnerabilities, no abandoned libraries in production paths.
- Build & deploy
- A clean machine can restore, build and start it by following the shipped instructions.
Warnings are problems that didn't block the listing; they stay visible here until a later version clears them. The audit reads the code — it does not run it — so always try the live demo before you buy. Lines of code are counted from the same audited archive.
Reviewer notes (3 minor)
Dependencies exactly pinned, but no lockfile in the submission and installs use npm install; no injection seen in visible code; schema and rls contents not provided, so completeness and indexing are unverified; no server routes; authz relies on supabase rls, which is untested live and only partly visible in this digest; mostly reproducible, but duplicated trees, missing lockfile and doc/reference mismatches create gaps; modular layout is sound, but docs, schema and compose files are duplicated across root and project/. None of these stop the software from working; the developer has been told and improvements come in a future update.
Versions & updates
No updates yet. New versions appear here with a changelog.
Buyers receive updates free for 1 year.
What you get
- </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
- ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
- ↻One year of updatesEvery new version the builder publishes, free for 12 months.
- ♧30 days of supportInstallation and defect support through Vibe96 tickets.