What's new

Changelog

Every update, improvement, and new feature shipped to the GymOS platform — in one place.

Feb 2026

v2.3

GymOS SaaS Marketing Site

Launched the public-facing GymOS platform website — a fully designed SaaS marketing page replacing the gym-specific homepage.

  • NewNew SaaS landing page at gymOS.com with dark athletic design system (zinc-950 + amber-400)
  • NewSaasNav — sticky top nav with mobile-responsive hamburger menu
  • NewSaasHero — animated headline, public beta badge, dashboard UI mockup
  • NewSaasFeatures — 12-feature icon grid covering all platform modules
  • NewSaasHighlight — 4 spotlight rows: QR Attendance, Payments & Invoicing, Multi-Branch Analytics, Custom Domain
  • NewSaasBeforeAfter — side-by-side comparison of life before and after GymOS
  • NewSaasPricing — 3-tier pricing table (Starter $29/mo · Pro $79/mo · Enterprise Custom)
  • NewSaasTestimonials — 3 gym owner quotes with avatar and gym name
  • NewSaasTrust — 6 tech/trust badges (Next.js · PostgreSQL · Encrypted · 99.9% Uptime · GDPR-Ready · Cloudflare)
  • NewSaasCTA — full-width call-to-action section with 14-day free trial messaging
  • NewSaasFooter — logo, Product/Company/Legal link columns, copyright
  • NewPer-gym landing at /gym/kapan-elite preserved and unchanged

Jan 2026

v2.2

Platform Invoicing & Email Reminders

Automated invoice generation for gym subscriptions and email reminders via SMTP, with a full invoice management panel for super admins.

  • NewGymPlatformInvoice model — stores per-gym invoice records with status (paid/unpaid/overdue)
  • NewNodemailer SMTP integration (lib/email.ts) — transactional email infrastructure
  • NewEmail templates — invoice generated, payment reminder, overdue notice
  • NewCron job: /api/cron/platform-invoice-reminders — auto-sends reminders for unpaid invoices
  • NewPlatformInvoicesTable — super admin panel listing all gym invoices with status filters
  • NewGenerateInvoiceButton — one-click invoice generation for any active gym subscription
  • ImprovedSuper admin dashboard now shows outstanding invoice count and overdue alerts

Dec 2025

v2.1

Platform Subscription System

Full SaaS billing layer for gym accounts — auto-suspend on payment failure, JWT-level gym status, and a super admin subscription control panel.

  • NewGymBillingRecord model — tracks subscription plan, billing cycle, and payment history per gym
  • NewAuto-suspend cron job — flags gyms with overdue bills and suspends access automatically
  • NewSuspension middleware — intercepts requests from suspended gyms and redirects to /suspended
  • NewgymIsActive flag in JWT claims — checked on every request without an extra DB call
  • NewSuper admin subscription panel — view, activate, suspend, and manage gym billing status
  • New/suspended page — informative suspension notice with contact and payment resolution steps
  • ImprovedJWT now carries subscription tier and active status, reducing auth middleware DB queries

Nov 2025

v2.0

Per-Gym Landing Pages & Custom Domains

Every gym on the platform gets a fully branded public landing page accessible via slug or their own custom domain.

  • Newapp/gym/[slug]/page.tsx — dynamic per-gym public landing via slug routing
  • Newapp/site/[host]/page.tsx — custom domain entry point; middleware rewrites non-app-domain hosts here
  • NewGymLandingPage server component — shared renderer for both slug and domain routes
  • NewLanding content stored in Gym.settings JSON (settings.landing.*) — fully editable from dashboard
  • NewLandingNav, LandingHero, LandingPlans, LandingFacilities, LandingContact, LandingFooter — all fully dynamic with hardcoded fallbacks
  • NewLandingWhatsApp floating button — click-to-WhatsApp with gym phone number
  • NewGym.customDomain field — unique nullable, maps a domain to a gym record
  • NewDomainSettingsForm — settings UI tab to save/update custom domain
  • NewLandingContentForm — accordion-based editor for hero text, plans, facilities, testimonials
  • NewupdateLandingContentAction and updateCustomDomainAction — separate server actions for content vs domain
  • NewMiddleware: NEXT_PUBLIC_APP_DOMAIN check redirects custom domain traffic to /site/[host]
  • ImprovedupdateLandingSettings does deep merge (not replace) to preserve unedited sections
  • NewVideo gallery section with Cloudflare R2 storage for gym promotional videos

Oct 2025

v1.9

User Management & Permissions Matrix

Fine-grained role-based access control with a full UI for managing staff permissions per branch and module.

  • NewPermissions matrix stored in DB — per-user, per-module permission overrides
  • New6-level RBAC hierarchy: SUPER_ADMIN > GYM_OWNER > BRANCH_MANAGER > TRAINER > STAFF > MEMBER
  • NewwithPermission() HOF — wraps all Server Actions with permission enforcement
  • NewPermissions UI — interactive matrix grid letting owners assign/revoke module access per staff
  • NewPermission claims cached in JWT — no DB hit on each request for standard RBAC checks
  • ImprovedStaff invite flow now includes role selection and module access preset
  • ImprovedBranch managers can only manage their assigned branch — enforced at query level

Sep 2025

v1.8

Reports & Notifications

Data-rich reporting suite and a multi-channel notification system for member events and operational alerts.

  • NewRevenue reports — monthly/yearly breakdown with charts, membership plan split
  • NewAttendance trends — daily/weekly heatmaps and peak-hour analysis
  • NewMember retention report — active vs lapsed, churn rate, renewal conversion
  • NewExpense vs revenue P&L view — per-branch and consolidated
  • NewExport to CSV — all reports exportable for external analysis
  • NewNotification system — in-app alerts for membership expiry, payment due, and class changes
  • NewNotification preferences — gym owners can configure which events trigger alerts
  • ImprovedDashboard stats now show 30/60/90-day trend comparisons

Aug 2025

v1.7

Expenses & Inventory

Full operational expense tracking and equipment inventory management with stock-level monitoring.

  • NewExpense module — log and categorize operational expenses (utilities, rent, salaries, supplies)
  • NewExpense categories — custom categories per gym with budget tracking
  • NewMonthly expense summary — chart view of spending by category
  • NewInventory module — track gym equipment, supplements, and merchandise stock
  • NewStock level alerts — low-stock warning when item quantity falls below threshold
  • NewInventory audit log — full history of stock additions, removals, and adjustments
  • ImprovedRevenue vs expense P&L widget added to gym owner dashboard

Jul 2025

v1.6

Trainer Management & Class Scheduling

Complete trainer profiles with specializations and a full class scheduling system with member booking.

  • NewTrainer profiles — photo, bio, specializations, certifications, assigned branches
  • NewTrainer assignment — link trainers to specific members for personal training
  • NewClass schedule — create recurring or one-off group classes with capacity limits
  • NewClass enrollment — members can book classes; owner can manage waitlists
  • NewClass attendance tracking — mark present/absent per class session
  • NewTrainer session logs — track personal training sessions with notes
  • ImprovedMember profiles now show assigned trainer and enrolled classes
  • ImprovedCalendar view for class schedule with weekly/monthly toggle

Jun 2025

v1.5

Multi-Branch Support & Settings

Full multi-location gym management with per-branch isolation and a comprehensive settings panel.

  • NewBranch model — each gym can have multiple branches with independent staff, members, and data
  • NewBranch selector in dashboard — switch context between branches instantly
  • NewRow-level tenant isolation — all queries scoped to gymId + branchId to prevent data bleed
  • NewSuper admin panel — platform-wide view of all gyms, owners, billing, and system health
  • NewGym settings panel — general info, branding, contact, working hours, tax configuration
  • NewMy Profile + Change Password tabs — available to all authenticated roles
  • ImprovedMiddleware now validates branch access on every dashboard request
  • ImprovedSuper admin /settings shows only profile/password tabs (no gym tabs since gymId=null)

May 2025

v1.4

Dashboard Widgets & Analytics

Live dashboard with real-time stats, revenue charts, and automated membership renewal cron jobs.

  • NewDashboard widget grid — total members, today's check-ins, revenue MTD, active plans
  • NewRevenue chart — monthly bar chart with plan-type breakdown
  • NewRecent activity feed — latest check-ins, new members, and payments
  • NewExpiring memberships widget — members expiring in the next 7/14/30 days
  • NewServer-Sent Events (SSE) endpoint — live dashboard stat updates without polling
  • NewCron job: /api/cron/membership-renewal — auto-flags expired memberships daily
  • ImprovedPayment records now linked to membership subscriptions for accurate revenue attribution

Apr 2025

v1.3

Membership Plans, Subscriptions & Invoicing

Flexible membership plan builder, subscription lifecycle management, payment recording, and PDF invoice generation.

  • NewMembershipPlan model — configurable name, price, duration, features, and renewal rules
  • NewMember subscriptions — assign plans to members with start/end dates and status tracking
  • NewPayment recording — cash, card, and bank transfer with reference numbers
  • NewInvoice generation — auto-create PDF invoices on payment with gym branding
  • NewPayment history per member — full ledger with running balance
  • NewOverdue tracking — automatic status change to OVERDUE after plan expiry
  • ImprovedMember profile now shows active plan, days remaining, and payment status badge

Mar 2025

v1.2

QR Attendance System

Contactless check-in via QR codes with a live attendance feed, manual override, and full history — all updating in real time.

  • NewQR code generation per member — unique code stored in lib/crypto.ts, regeneratable on demand
  • NewQR scanner UI — @zxing/browser BrowserQRCodeReader with start/stop controls
  • NewInstant check-in — scan validates member, checks active subscription, logs attendance record
  • NewManual check-in — staff can search and check in members without QR
  • NewLive attendance feed — SSE stream pushes new check-ins to dashboard in real time
  • NewAttendance history page — filterable by member, date range, and branch
  • NewAttendance reports — daily/weekly/monthly totals with peak-hour heatmap
  • ImprovedCheck-in blocked with clear error if member has no active membership

Feb 2025

v1.1

Member Management

Full member lifecycle management — onboarding, profiles, photos, search, and soft-delete with audit trail.

  • NewMember creation form — name, phone, email, emergency contact, date of birth, gender
  • NewMember profile page — full details, membership history, payment records, attendance log
  • NewProfile photo upload — stored to Cloudflare R2 (10 GB free tier)
  • NewMember search — real-time search by name, phone, and email
  • NewMember list with filters — status (active/expired/suspended), plan, and branch
  • NewSoft delete — members are archived (deletedAt) not permanently removed
  • NewAudit trail — all member record changes logged with actor and timestamp
  • NewMember model uses gymId direct field for efficient tenant-scoped queries

Jan 2025

v1.0

Foundation — Platform Core

Initial release of the GymOS platform. Full-stack foundation with authentication, multi-tenant architecture, and role-based access control.

  • NewNext.js 14 App Router — fullstack architecture with Server Components, Server Actions, and Route Handlers
  • NewPrisma ORM + PostgreSQL — UUID primary keys, soft deletes (deletedAt), full audit trail on all models
  • NewNextAuth JWT strategy — session-based auth with encrypted JWT claims
  • NewMulti-tenant architecture — single database, row-level isolation via gymId/branchId on all tables
  • NewRBAC middleware — permission matrix cached in JWT, validated on every request
  • NewDashboard shell — responsive sidebar navigation with role-aware menu items
  • NewRoute groups — (auth) for login/register, (dashboard) for protected routes
  • NewAPI layer — Route Handlers under /api/v1/ for external integrations, Server Actions for internal mutations
  • NewTailwind CSS + ShadCN UI — dark/light mode, design tokens, accessible component library
  • NewZod + React Hook Form — type-safe form validation with server-side schema enforcement
  • NewDocker setup — containerized dev and production environment
  • NewgetTenantContext() for Server Actions, getTenantFromHeaders() for Route Handlers