Real-Time Scoring System for Fitness Competitions
Full-stack product development from sensor to screen-hardware, embedded software, web frontend, and production scaling for large-scale European fitness events.

Starting 2026, I took on a full-stack product development project, building a real-time scoring system for fitness competitions held across Europe.
This article goes through the development and delivery of the initial MVP phase, which I'm currently following up with a production-ready system and assembly of 50+ units heading into the field. More on that in a separate article, stay tuned!
Note: All hardware mounts and UI shown here are functional prototypes, the production version will have polished branding and refined designs.
Live Demo
Before going into the project in large, let's just directly start with a live demo to showcase the fully running system. The main parts to focus on is the ball, hit plate, and screen. The goal here is to throw the ball onto the hit plates two main target areas. When it hits, it will be automatically counted by the system. Each target has its own individual count, and works independently.

Real Time Scoring System - Click anywhere on the video thumbnail to load the YouTube video.
The Project
A client needed a hit-detection system for fitness competitions, the kind with thousands of participants across multi-day events in multiple countries.
The requirements in short:
- Reliable counting for each hit
- Instant feedback on big screens
- Dead-simple for event staff
- Robust enough to survive the chaos of live events
I delivered the complete solution - hardware, software, and everything in between.
What I Built
Here is the final MVP/Proof of concept system, which we will dive into further in this article.

Sensor Selection
For selecting the sensors technology to use, I conducted a wide scan of what types were available off the shelf and could be quickly acquired for testing. The main tech I found and focused on was lidar, ultrasonic, and capacitive. After buying each and doing a quick check on what would be required to implement each individual solution, I ended up going with a lidar sensor, where some of the main reasons were:
- interface, simple uart that could directly be connected without any support circuitry or analog with ADC requirements.
- housing, fully enclosed IP65 out of the box, perfect for the clients variations on field usage
- availability and price, not too expensive for the entire product and basically available from all major vendors like Mouser, Farnell, etc



Hit Plate and Mount
With the sensor now chosen, I needed a proof of concept system for testing. This required 2 things, a hit plate and a mount for attaching the sensor to the hit plate.
Getting the hit plate was an off the shelf buy of an existing product, thick steel and basically what the client would use in the final product.
For mounting the sensor, here came a lot of CAD and 3D printing. A lot of iterations were done here, as this part would have to experience shock from the attached plate and non-delicate handling in the field when rigging and teardown of the events.


Compute Unit
For the main compute unit, a Raspberry Pi 5 was chosen for this purpose. As it both can easily run all the required software for sensor data processing and displaying a live interface via its HDMI output. And compared to a normal PC, it's easy to prep a completely provisioned image that can just be put into the unit and boot all that is needed without any interaction. It's also relatively low cost and easy to replace.

Software
Software was developed like any other web-app with a distinct frontend and backend, both containerized for portability and clear dependency boundaries on the final system.
For ease of maintainability, both parts were written in Typescript and put in a monorepo.
The backend was built with NodeJS, and it was responsible for handling:
- live data coming from the sensors
- handling game engine and state for hit detection and counting
- API for frontend to poll and get live streaming events from (SSE)
The Frontend was fully using standard modern web approach with React and Tailwind, and it was responsible for:
- Displaying Live Game state (hits etc.)
- Relaying any user input, like reset, mode change etc.
- Built-in diagnostic tools for field troubleshooting and development
All of this was also designed to be completely offline and not require any network connection. Also to be fully self reliant and handle any errors gracefully, with automatic restarts etc. All of this without ANY interaction needed from an operator/event organizer on either boot or during runtime. Just plug and play!
The interface below is a functional prototype; the production version will feature the client's branding and visual design.




Results
The MVP was delivered fully functional and validated through extensive testing. After hundreds of throws during development and testing sessions, the system proved highly accurate-no missed hits, no unexpected false counts. Hardware and sensors held up reliably throughout, even when pushed hard with rapid consecutive throws. The software runs smoothly on the Raspberry Pi with plenty of headroom. With the core concept validated, the system is now ready for production scale-up (which at the time of writing is fully underway).
Skills Applied
Areas & Work Performed
What This Demonstrates
This project required moving quickly between domains, embedded hardware, web development, 3D printing, and production planning. No handoffs, no waiting on other teams.
If you need someone who can take a product from concept to deployed hardware, let's talk!
Next up
- Replace mockup gui interface with actual nice looking company branding
- Finalize production designs (hardware, mounts, parts)
- Assembly, by myself, of 50+ complete units for end client and ship!