Skip to content
Piotr Ludwig

Fastball: From Idea to POC in a Day

I wanted to play table tennis with friends, not spend the evening managing scores. One day was enough to build and test a prototype that could help.

· 4 min read

I’m a table tennis fan. Recently, I came across the story of a record set ten years ago in Częstochowa. In 2016, Łukasz Budner hit a ball at 116 km/h there. I was born in that city, so I thought the tenth anniversary would be a good excuse to get together with friends, hit some balls, and try to beat our own records.

A while earlier, I had bought SpinSight, an app that measures ball speed and spin. A friend has a table tennis table in his pub. We had a place to play and a way to measure our shots. We just needed to organise it.

Then came the second thought: someone would have to manage all of this. Register players, collect results, and keep track of who was leading. With a few people, that might be manageable. With more, it could become a mess. And I wanted to enjoy the evening with my friends, play, and have a go myself.

So I thought: I’ll build an app to make it easier.

The idea was simple. We would show SpinSight on a projector so everyone could see the speed of each shot. A participant would play, take a photo of their result, then enter the speed and upload the photo through my app. Their result would appear on a leaderboard that updated automatically. Everyone could see who was leading and how close they were to the next person.

SpinSight would handle the measurement. My app would collect the submissions and maintain the leaderboard. I wouldn’t have to stand between the players and a laptop, typing in every score. The photo would be there if a result needed checking.

Next came the question of how people would join. Nobody would want to create an account, confirm an email address, or install another app just to play table tennis in a pub. There was also privacy to consider: I didn’t want to collect personal details we didn’t need for the game.

So each participant would receive a ticket with a QR code. Scan it, enter a nickname, and join. Everything would run in the browser, with the phone remembering their session. Then they could focus on playing, submitting results, and trying to beat their best score.

One morning, I wrote down this process and started building it with AI. After about four hours, I had a working proof of concept. Including testing at the venue and making corrections, it took around eight hours.

The architecture

Here is the architecture behind that idea. The web app uses React, with a Node.js and Express backend. SQLite stores participants, tickets, sessions and results; measurement photos are kept privately for review. Live update notifications keep the leaderboard current. SpinSight remains a separate app, with the participant transferring the result by entering the speed and adding a photo.

SpinSight provides the measurement. The web application handles participation, submitted results and the leaderboard.

That speed is what interests me most. An idea for an evening with friends could easily have ended with: “Sounds fun, but who’s going to manage it?” Instead, that same day I could test an app that solved a concrete problem.

That’s how Szybka Piłka began.