Skip to content
Antino
All case studies

Marketplaces · Fitness Marketplace MVP

Gymfit

Multi-sided fitness marketplace platform.

Gymfit
25
Weeks operated
2k+
Hours of work
10
Engineers

The brief

Build "Gym Key" — a fitness marketplace mobile app and supporting web platform connecting end-users with gyms, trainers, and fitness services — from zero to App Store/Play Store launch within a 12-month dedicated team engagement, covering product design, frontend, backend, DevOps, QA, and business analysis.

What we built

A full-stack fitness marketplace branded "Zortime" (originally Gymfit) connecting consumers with gyms, trainers, and fitness studios. Deliverables include:

  • a Flutter mobile app published on App Store and Google Play with geo-aware gym discovery, QR check-in, tiered membership plans (Silver/Gold/Platinum), trainer browsing, Stripe payments, and Google/Apple SSO
  • a multi-role web admin SPA with separate dashboards for super-admin, gym owners, and agents covering onboarding approvals, revenue management, analytics charts, and Excel exports
  • a NestJS backend with microservices for auth, booking, support-chat, and trainer onboarding
  • a combined partner registration portal serving gyms, trainers, and fitness studios via a single URL with role-conditional stepper forms
  • a Stripe Connect payment infrastructure supporting plan purchases, upgrades with proration, coupons, auto-renewal, and gym-owner payouts
  • production-grade AWS EKS infrastructure across dev/pre-prod/prod with Jenkins CI/CD, HA RDS, OpenVPN, SNS notifications, and HTTPS; and
  • a public marketing website for the Zorfit brand.
Live in production

Flutter app published on both Apple App Store and Google Play Store; multi-role admin/gym-owner/agent web panel on production Kubernetes cluster with HTTPS subdomains; NestJS backend microservices (main API, booking, support-chat, trainer) deployed on AWS EKS prod cluster with HA RDS; Stripe Connect payment flow with plan tiers, proration, and coupon engine live; QR check-in system in production; marketing website (Zorfit brand) deployed; combined partner onboarding portal in final stages of dev/pre-prod.

Delivery timeline

How it was built, phase by phase.

8 workstreams across 25 weeks of operated delivery.

  1. buildWeek 1–6 (Jan 6 – Feb 11 2025)

    Backend Foundation & Auth System

    Node.js/NestJS backend setup including database migrations, multi-role authentication (user, trainer, gym owner, agent, super-admin), auth guards, JWT, Google/Apple social login, and OTP verification flows.

    Unified auth system serving 4+ distinct user roles with social login, OTP verification, and alphanumeric password enforcement deployed to prod

    Node.jsNestJSPostgreSQLJWTAWS SNSStripe
  2. buildWeek 1–22 (Dec 24 2024 – May 30 2025)

    Flutter Mobile Application (Consumer-Facing)

    Cross-platform Flutter app for end-users covering gym discovery with geo-location and Google Maps, plan purchase, check-in/QR flow, trainer browsing, profile management, coupon redemption, deep linking.

    Published on both App Store and Google Play with geo-aware gym discovery, QR check-in, tiered plan purchase, and trainer browsing

    FlutterDartGoogle Maps SDKStripe SDKGoogle PayFirebase
  3. buildWeek 2–13 (Jan 17 – Apr 3 2025)

    Gym Onboarding & Marketplace Listings

    Multi-step gym registration flow covering basic info, features/amenities, operating hours, legal & compliance, gym icon uploads, geo-location, and admin approval/rejection workflows with edit request flows.

    Full gym partner onboarding live in prod with prepaid/postpaid billing, admin approval flow, and Stripe Connect payment account linking

    NestJSPostgreSQLTypeORMAWS S3Stripe ConnectReact/Next.js
  4. buildWeek 4–22 (Jan 27 – May 30 2025)

    Admin & Agent Web Dashboard

    React-based multi-role web panel for super-admin, gym-owner, and agents covering gym management, user/subscriber management, analytics, revenue management, support tickets, export functionality.

    Multi-role SPA deployed with analytics dashboards, revenue management, Excel exports, and role-based access control serving admin, gym owners.

    ReactNext.jsNestJSRecharts/Chart.jsExcel exportAWS S3
  5. deployWeek 5–17 (Feb 3 – Apr 18 2025)

    AWS Cloud Infrastructure & CI/CD Pipelines

    Full cloud setup on AWS: EKS clusters (dev/pre-prod/prod), RDS PostgreSQL with HA, ALB ingress controllers, ECR artifact storage, Jenkins CI/CD pipelines, OpenVPN, Route53 DNS, S3, SNS for notifications.

    Production-grade Kubernetes infrastructure across 3 environments with full CI/CD automation, HTTPS, HA database, and VPN-secured prod access

    AWS EKSAWS RDSAWS S3AWS ECRAWS ALBAWS Route53
  6. buildWeek 6–14 (Feb 6 – Apr 7 2025)

    Slot Booking, Check-In & QR Code System

    End-to-end gym visit booking: slot schema, slot booking APIs, QR code generation for check-in, check-out logic, date-based filters, missed slot management, and category-restricted check-in tied to membership plan.

    Booking microservice deployed with QR check-in, plan-category access gates, and date-based slot filters running in prod

    NestJSPostgreSQLQR Code generationFlutterStripe
  7. integrateWeek 7–18 (Feb 11 – May 8 2025)

    Membership Plans, Payments & Stripe Integration

    Tiered membership plans (Silver/Gold/Platinum), Stripe payment gateway integration for plan purchase and upgrades, prorated upgrade calculations, coupon/discount engine, auto-renewal.

    Full payment lifecycle live: plan purchase, upgrade with proration, coupon discounts, auto-renew.

    StripeStripe ConnectNestJSFlutterPostgreSQLGoogle Pay
  8. buildWeek 15–22 (Apr 10 – May 30 2025)

    Trainer Onboarding Module

    Full trainer registration and management system: email pre-check, multi-step stepper onboarding, experience/services/timing tabs, admin approval/rejection workflow, trainer profiles in mobile app.

    Trainer onboarding microservice live with multi-step registration, admin approval workflow, and consumer-facing trainer discovery in mobile app

    NestJSFlutterReactPostgreSQLStripeAWS EKS

09 · Run a function

Stop renting hours. Start running functions.

Pick the function you want off your plate. We'll map the brain and name the outcome we'd commit to — before you do.