Building a seat picker is easy. You render a map, you colour the free seats blue, you let people click.
Then tickets go on sale for a big fixture, and thousands of people click the same seat inside the same second.
I spent several years building booking systems for large events — one of them handling twelve to twenty thousand spectators per match. Almost none of the difficulty was in the seat map. All of it was in that second.
I've put a small NestJS reference implementation on GitHub — aboalynx/seatmap — with a test suite that fires 200 simultaneous requests at a single seat and asserts that exactly one wins. This post is about why it's built the way it is.
Three ways this goes wrong






