GymProHub is a gym management SaaS platform built specifically for Nigerian gyms. A gym owner signs up, and gets a complete operations platform: member management, attendance tracking, membership plans, payment collection, staff management, class scheduling, analytics, and a self-service member portal. The platform is multi-tenant and every record is scoped by gym_id, so each gym sees only its own data.
Four subscription tiers serve gyms from solo operators to enterprise chains. Free gives 20 members and 1 staff account with the platform watermark visible and ads shown. Core at 15,000 NGN/month adds 100 members, 3 staff, role-based access control, audit logs, and 50 SMS/month. Portal at 25,000 NGN/month adds 300 members, 5 staff, the self-service member portal at a slug-based subdomain, class scheduling, inventory tracking, white-label branding, and 200 SMS/month. Enterprise at 40,000 NGN/month is unlimited members and staff, plus REST API access with webhooks, custom domain support, SSO, 1,000 SMS/month, predictive analytics, and a dedicated account manager.
Every gym gets its own Paystack subaccount. Members pay into the gym's subaccount and settlement goes directly to the gym's bank account. The platform takes a commission at the transaction level.
The QR check-in page is public-facing. Walk-in visitors scan the gym's QR code, select a day-pass plan, and pay via Paystack. The system automatically creates a day-pass member record. No gym staff intervention needed. The platform is also a PWA: when offline, operations queue up and sync automatically on reconnect.
Single codebase, single database, every table scoped by gym_id. The stack is PHP 8+ with PDO/MySQL 8, no framework, Apache with .htaccess routing. This keeps the stack lean and deployable on standard hosting without a build pipeline.
Paystack integration uses a per-gym subaccount model. When a gym owner sets up payment settings, the platform calls the Paystack API to create a subaccount linked to their bank account. From that point, all member payments go into the subaccount with a commission split processed at the transaction level.
SMS uses Termii as the primary gateway, with Africa's Talking, SMSLive247, and BulkSMS Nigeria as alternatives. Quota varies by tier. Email uses PHPMailer with a custom GymMailer wrapper. QR codes are generated via the chillerlan/php-qrcode library.
The member portal (Portal+ tier) is a PHP SPA accessible at {slug}.gymprohub.fun. Members authenticate separately from gym staff. Custom domain support (Enterprise) uses the same routing logic with a different domain pointer.
The PWA service worker lives at /public/sw.js. It caches member and plan data locally in JSON files per gym. Offline operations queue up in session and are submitted to /api/sync-offline.php on reconnect. Enterprise API endpoints authenticate via SHA256-hashed API keys in the X-API-Key header with rate limiting and full audit logging.