Skip to content
Back to projects

Year 2026

★ Featured

IRONHAUS Gym

Gym class booking with a real backend: live availability and capacity rule.

IRONHAUS Gym

Integration tests

11/11

Capacity rule

409

Seeded weekly classes

12

About this project

Full-stack demo for a premium gym: NestJS API with TypeORM and PostgreSQL, React + Vite frontend with TanStack Query. The flagship feature is class booking: the weekly schedule shows live availability and the backend rejects with 409 Conflict when a class is full. Includes per-class detail view, "my bookings" with cancellation, and an automatic seed that ships a populated schedule.

01. Problem

Overbooking is the classic scheduling bug: two users grab the last spot at the same time and the class ends up oversold.

02. Solution

The rule lives in the backend: on booking, active reservations are counted and rejected with 409 when active ≥ capacity, plus per-member duplicate blocking. The frontend mirrors live spots and invalidates cache with TanStack Query after each mutation.

03. Outcome

Integration suite 11/11 green covering the whole flow: book, fill a class, 409, duplicates, cancel and validations.

Gallery

(04)
IRONHAUS Gym — 1
IRONHAUS Gym — 2
IRONHAUS Gym — 3
IRONHAUS Gym — 4