
ARCOS FITNESS
Platform for a premium gym: book and pay for classes and memberships online, plus a reception panel that runs the whole operation.
Meet the client. Who they are and who they sell to.
The client
Arcos Fitness Club is a premium gym in Bosques de las Lomas, Mexico City (inside the LIVE AQUA hotel), with functional, Hyrox, boxing and open-gym classes. Its previous site lived on Wix and didn't allow online payments: every booking and charge went through reception, by hand. We built their own platform around three pieces of value: a reception panel that runs the whole operation —bookings, clients, classes, payments, subscriptions, marketing and analytics—; online payments with Stripe for classes, packages and memberships; and booking and paying 24/7, without depending on reception hours. Every booking is tagged with its origin (online, reception, member or app partnership), and confirmations, receipts and spots are handled automatically.
What they came to solve, in plain language.
Challenge
- 01A closed Wix site with no online payments: everything was charged at reception.
- 02Let the member book and pay on their own —classes and memberships— at any hour.
- 03Give reception one panel to run the whole operation in one place.
- 04Cut manual work: confirmations, receipts and spots with no hands-on.
What changed between day one and launch.
Before & after
WIX · PAY AT RECEPTION
- Generic Wix site, no online payments
- Every booking and charge, by hand at reception
- No panel to see the operation
- You could only pay during reception hours
THEIR OWN PLATFORM
- Classes, packages and memberships paid online
- Book and pay 24/7, without going through reception
- One panel running the whole operation
- Automatic confirmations, receipts and spots
Every feature shaped so the client closes the deal.
What we built
A reception panel that runs everything
A single panel where the team runs the gym's whole operation without touching code: bookings with check-in and attendance, clients (CRM), classes, payments, memberships, email campaigns and analytics. Every booking shows its origin —online, reception, member or app partnership (TotalPass · Fitpass · Wellhub)—.
- Bookings with check-in and attendance
- Client CRM with payment history
- Editable classes, payments and subscriptions
- Each booking's origin in view
- Email marketing and own analytics
Online payments (you couldn't before)
What used to be charged only at reception is now paid online with Stripe: monthly memberships (with sign-up fee), discounted prepaid packages and single classes. The price is validated on the server and the charge reconciles itself via webhook.
- Recurring memberships + sign-up fee
- Discounted prepaid packages
- Single classes online
- Server-validated price, webhook-reconciled
Book and pay 24/7
The member books a class or signs up for a membership on their own, at any hour, with no call and no trip to reception. The spot is held instantly and released automatically if it isn't paid in time.
- Booking and payment at any hour
- Spot held instantly
- Spots released automatically (cron)
Less manual work at reception
Every booking and payment fires its confirmation and receipt by email without reception keying anything in. A daily cron releases unpaid spots and expires memberships. Reception stops writing things down by hand and focuses on serving.
- Automatic confirmations and receipts (Postmark)
- Daily cron: spots and memberships
- Cancel and reschedule via email link
Our five steps applied to a real project.
Process
- 01
Migration from Wix
Mapping the Wix site and the real operation: classes, schedules, memberships and how they charged (reception only). The data model and the booking/payment flows came out of that.
- Classes, bookings and payments model
- Operation map
- 02
Architecture
Next.js 16 (App Router, server actions) with Prisma over PostgreSQL, and Stripe as the source of truth for payments via idempotent webhooks.
- Prisma schema + webhooks
- Payments & bookings layer
- 03
Online payments
Stripe Embedded Checkout for classes, packages and recurring memberships. Server-validated price, spot holds, and automatic webhook reconciliation with an email receipt.
- Checkout and subscriptions
- Webhooks + receipts
- 04
Reception panel
The panel that runs everything: bookings with check-in, CRM, classes, payments, subscriptions, marketing and analytics, with each booking's origin in view.
- Operational reception panel
- Marketing and analytics
- 05
Launch
Deploy on Vercel with its own domain, a daily maintenance cron and end-to-end security: server-side pricing, rate limiting (Vercel Firewall), webhook signatures and honeypot.
- Live on arcosfitness.com
- Cron + security
- 01
Migration from Wix
Mapping the Wix site and the real operation: classes, schedules, memberships and how they charged (reception only). The data model and the booking/payment flows came out of that.
- Classes, bookings and payments model
- Operation map
- 02
Architecture
Next.js 16 (App Router, server actions) with Prisma over PostgreSQL, and Stripe as the source of truth for payments via idempotent webhooks.
- Prisma schema + webhooks
- Payments & bookings layer
- 03
Online payments
Stripe Embedded Checkout for classes, packages and recurring memberships. Server-validated price, spot holds, and automatic webhook reconciliation with an email receipt.
- Checkout and subscriptions
- Webhooks + receipts
- 04
Reception panel
The panel that runs everything: bookings with check-in, CRM, classes, payments, subscriptions, marketing and analytics, with each booking's origin in view.
- Operational reception panel
- Marketing and analytics
- 05
Launch
Deploy on Vercel with its own domain, a daily maintenance cron and end-to-end security: server-side pricing, rate limiting (Vercel Firewall), webhook signatures and honeypot.
- Live on arcosfitness.com
- Cron + security
The numbers the project left behind in production.
What changed
Classes, packages and memberships charged via Stripe; the previous Wix site allowed no online payment at all.
The member holds their spot and pays on their own, even at dawn or on weekends.
Bookings, clients, classes, payments, subscriptions, leads, marketing, analytics and dashboard — all in one place.
Every booking and payment confirms itself by email; a cron releases unpaid spots and expires memberships, with reception writing nothing down.
Screens of the site in production.
How it looks
The technologies that sustain the operation.
Technologies
- Next.js 16
- React 19
- Tailwind CSS 4
- Framer Motion
- Stripe
- Prisma
- PostgreSQL
- Postmark
- Vercel Cron
- @vercel/firewall
- Zod
Want something like this for your business?
If this case clicked for you, let's talk. We reply within one business day, no strings attached.