View all work
Shipped

Gym management system and website — Željezna Generacija

One application that is the gym’s public website, its members’ portal and the owner’s back office — memberships, payments, supplement stock and finances, with the money arithmetic done in the database rather than in the browser.

Gym management system and website — Željezna Generacija
Client
Delivered for Željezna Generacija, a gym in Hrasnica, Sarajevo
Industry
Fitness
Category
Web & SaaS
Year
2026
The challenge

What wasn’t working

The gym ran on a notebook and a group chat. Nobody could answer three questions without counting by hand: who is a member right now, whose membership runs out this week, and did this month cover its own costs. Off-the-shelf gym software assumed things this gym does not have — card payments, turnstiles, a receptionist behind a desk all day — and assumed something it very much does have: that every member will install an app. Most members pay cash at the counter and will never open one.

What we built

Our answer

A single Next.js 16 application with three surfaces on one database: a public site the owner edits himself, a members’ portal for the phone, and an owner’s panel for the day-to-day. The member record is deliberately decoupled from the login account — a member can exist with no account at all, because that is how a neighbourhood gym actually works. Money and stock are computed by Postgres functions: the client sends a plan code and a quantity, never an amount, so a price cannot be forged from the browser. Row-level security is on every table and is verified by a test script rather than assumed — a member sees only his own record, and never finances, cost prices or anyone else’s data.

Results

What changed

The owner opens one screen and sees the month: revenue, expenses, net, active members, whose membership expires within seven days, which supplements are running out, and which enquiries from the website are still unanswered. Expiring members get an email reminder on their own. The public site — pricing, gallery, transformations, opening hours — is edited from the panel without a deploy, and a 51-step guided tour walks the owner through the panel in plain language, because the person running a gym is not an IT person and will not read a manual.

Capabilities in play

How it was built

Capabilities in play: full-stack product engineering on Next.js and Postgres, security design with row-level policies covering every table, and interface work in a language that shapes the layout — the whole interface is in Bosnian, including the error messages raised by the SQL functions, which go straight to the user and are therefore written like sentences a person would say. The decisions worth naming are the boring ones. Prices and stock live in database functions, so an amount cannot be forged from the browser and a sale cannot exceed stock. Photographs go from the browser straight to object storage, because a server action in Next has a 1 MB body limit and any real photo of a gym floor is larger than that; the action only records the path and the dimensions. Scroll animation is CSS with `animation-timeline: view()` and no library at all, because the public page is measured on PageSpeed and browsers without support simply show the content immediately — the correct state, not a fault. Two things were left out on purpose. There is no card payment, because the gym takes cash and adding a card flow would have meant a fee, a terminal and a month of paperwork for a service nobody asked for. There is no QR check-in either — the schema leaves room for it, but shipping it before anyone needed it would have been a guess. The screenshots on this page show demonstration data. Members, payments, figures and photographs were generated against a local database in order to show the system — none of them describe the gym’s real business.

Inside the product

Screens from the system we built.

Gym management system and website — Željezna Generacija
Gym management system and website — Željezna Generacija
Gym management system and website — Željezna Generacija
Gym management system and website — Željezna Generacija
Gym management system and website — Željezna Generacija
Gym management system and website — Željezna Generacija
Gym management system and website — Željezna Generacija
Gym management system and website — Željezna Generacija
Gym management system and website — Željezna Generacija
Gym management system and website — Željezna Generacija
Gym management system and website — Željezna Generacija
Similar challenge?

Tell us what needs solving.

View all work