All case studies
Vertical SaaS, own productWeb DevelopmentAI Automation

Gymlytic

gymlytic.com
Next.jsPostgreSQLStripeWindows appLocal-first sync
Gymlytic, Vertical SaaS, own product
Scroll to play

Brief

A gym has exactly one moment of truth: a member at the door with a card in hand. If the internet is down and the scanner will not answer, nothing else the software does matters. Gymlytic is a CRM, CMS and membership system for Polish gyms built around that moment: member records, passes, check-ins, lockers, a POS shop, class scheduling, analytics and consent-based marketing, with a reception desk that keeps working when the connection does not.

Decisions

01Offline is the default, not the failure mode

The reception app answers scans from local disk in about 14 milliseconds, with no network on the critical path at all. Everything that happens offline goes into a local queue and syncs automatically when the link returns, and unique record IDs make the sync duplicate-proof. The member at the door never waits for a server.

02A native reception app plus a web owner panel

The front desk runs a Windows app that owns its local data and its card reader; the owner runs a web panel from anywhere. Each station is paired to the account with its own revocable device key, and the installer ships straight from the panel. Two very different jobs, each given the runtime that actually fits it.

03Payments through the gym's own Stripe

Online payments go straight into the gym's own Stripe account, with BLIK when enabled. Gymlytic never holds anyone's money. That one architectural choice removes an entire category of trust, compliance and payout problems before they can exist.

04Built inside a real gym, not a demo

Gymlytic was developed with and runs daily in Triceps Gym in Wyszków, the same gym whose website I built. Real card reader, real member import from CSV, real front desk. Every feature earned its place by solving a problem that actually happened at that desk.

Result

Offline scan verdict (from local disk)~14 ms
Performance (desktop)98
First Contentful Paint (desktop)0.3 s
Largest Contentful Paint (desktop)1.0 s
Cumulative Layout Shift0
Best Practices100
Performance (mobile)77
Accessibility96

Mobile

Performance77
Accessibility96
Best Practices100
SEO92

Desktop

Performance98
Accessibility96
Best Practices100
SEO92

The 14 ms figure is the product's offline scan spec, not a Lighthouse metric: it is how fast the reception app answers a card scan from local disk. Mobile performance is 77 with a 5.7 s LCP on a throttled CPU; the landing page carries real product UI renders, and trimming that LCP is the next planned pass.

All figures are real Lighthouse measurements (v12.8.2) taken against the live site on July 2026. Nothing is estimated.

Screens · click to enlarge

Want results like these?

Tell me what you're building and I'll tell you honestly what it needs.

Start a project