Strajk Bowling
Bowling lane booking app with real validation.
Summary
A web-based booking app for bowling lanes with strict validation (max 4 players per lane, exactly the right number of shoes per player), a confirmation page with a booking number, and pricing (120 SEK/person + 100 SEK/lane). Integrates with an AWS API Gateway backend. Final exam project.
Stack
Highlights
- Strict validation - players, shoes, and lanes always match
- Confirmation page with generated booking number
- Integrates with an AWS API Gateway backend
Background
Final exam project - build a booking app for bowling lanes with strict validation rules.
What it is
A web-based booking flow where the user picks date, time, number of players, and number of lanes. The backend (AWS API Gateway) calculates the price and returns a booking number.
Validation - where it gets interesting
Trivial case first: max 4 players per lane. If you book 6 players you need at least 2 lanes. That's caught in two places - the UI prevents you from submitting, and the backend double-validates.
Less trivial: the number of shoes must match the number of players exactly. Not more, not fewer. Turned out to be cleaner to think of it as an independent validation than to try to associate shoes with specific players in the data model.
Technical choices
- React Router for the multi-step flow (select → confirm → receipt)
- Vite for builds - fast and simple for a frontend-only app
- AWS API Gateway for the backend (I don't own the backend in this project, I integrate against the given endpoint)
Pricing
120 SEK/person + 100 SEK/lane. Calculated server-side so the price is always authoritative - the frontend just shows what the backend returned.
What I took away
Validation isn't one thing - it's an interplay between UI, client validation, server validation, and database constraints. Keeping all four consistent without duplicating logic is one of the harder problems in fullstack work.