BeCodeBeCode
Case studies
Titan GymCombat sports and fitness

Membership sales, QR entry and attendance instead of a rented system and two websites

In production since 2026

Website, sales, portal and the door of the gym in one system — built instead of a rented membership system for gyms and two separate websites.

QR reports in the admin. Who is in the hall right now, why an entry was refused, entries over the last seven days, and an hour-by-day heatmap of the last thirty.

Numbers
105
screens in the system
350
API endpoints
95
data models in the schema

Starting point

The club paid for a rented system and ran two websites beside it.

Member records, sales and entries all ran in a rented membership system for gyms. Next to it stood two separate websites — one for the club, one for the children's groups — and neither knew anything about the members.

Three legal entities operate under one brand, and one of them is an association that collects children's membership fees. Those are not invoiced but receipted as a membership contribution — a document the rented system had no notion of.

Who was in the hall could not be answered except by looking into the hall.

What we built

One system for the website, sales, portal and door.

The public website with its CMS, the member and trainer portal, and the admin are one application over one database. The schedule, the sports and the trainers are written once and appear everywhere.

A member buys a membership, a drop-in visit or a private session through the payment gateway inside the portal. The document is issued automatically, with its own sequence per each of the three companies — and for the association as a receipt for a membership contribution rather than an invoice.

The same purchase puts a QR code in their phone. They carry it in the portal, in Apple Wallet or in Google Wallet; if the phone is lost they generate a new one and the old stops working at once.

Outcome

The door of the gym is software.

At the entrance sits a reader on a Raspberry Pi: it reads the code, releases the door and records the entry. When the network drops it holds the scans and sends them once the connection is back. The server decides, under rules the club sets itself — how long before a training the code opens the door and how long after, separately for a membership card, a drop-in visit and a private session.

Every attempt has a result you can read: Entry, Membership expired, Limit exceeded, Invalid QR, Outside the window, Hall is full. Out of that comes attendance with derived exits, a live view of who is in the hall, and a heatmap of entries by hour and day.

Members were carried over from the rented system together with the period they had already paid for — they had no password and no code for the door, so a one-off script mailed them an invitation along with their QR code, and the contact spreadsheet with a tab per discipline became tags on the member records. The system has been running since 2026 and keeps growing; the next phases are planned, not deployed — full automation of the summer camps, celebrations, teambuilding and space rental, which today are lead capture, and further roles with trainer payroll data.

Key modules

Public website and CMS

Blog, sports, trainers and the schedule; content is written in the admin and appears on the site.

Sales and documents

Memberships, drop-in visits and private sessions through the payment gateway, each document numbered in its own company's sequence.

QR entry at the door

The reader at the entrance releases the door, records the entry, and holds it when the network drops.

Entry rules

How long before a training the code opens and how long after — separately for a membership, a drop-in visit and a private session.

Attendance and reports

Who is in the hall, refused attempts by reason, entries by day, and an hour-by-day heatmap.

Member and trainer portal

My QR into Apple and Google Wallet, my visits, documents, children and their codes.

The member portal. The same code the reader at the door scans — in the phone, in Apple Wallet or in Google Wallet, alongside private-training slots and the sessions left.

Same kind of project

We build CRM systems to order

If your jobs currently live in a spreadsheet and in people's heads, see how we approach it and what it involves.

Custom CRM

Before and after

On the left, the member list in the rented system — card, entry type and validity across nine columns. On the right, what the same entries produce today: who is in the hall, why the door refused someone, and when the club is actually alive.

BeforeAfter
What it runs onFull stack
Next.jsNestJSPostgreSQLPrismaStripeReact EmailApple WalletPython
Same problem?

Tell us where your data gets retyped today

Get in touch and we will go through what could be merged into one system. No commitment, no pitch deck.