A little background#
I have helped run the computer at the scoring table for our summer swim meets for a few years. It’s a great seat for watching the meet come together, but it also meant I spent a lot of time seeing the gaps in the system and answering many of the same questions for swimmers and parents.
Last summer I built the first version of KRA Meets to answer those questions for our swim families. It did the basics, heat sheets and results, and a very initial draft of live results.
This season I rebuilt the whole thing from scratch. It is faster, it works offline, and it can now follow a meet live as it happens.
Finding your swimmer#
A summer meet can run more than fifty events across a few hundred kids, so the first job is just helping parents understand what their kids are swimming and when those events are. You can search the heat sheet, tap any name to see that swimmer’s whole day, and star the kids you care about so they stand out everywhere.

Once a swimmer is starred, a separate view collapses the whole meet down to just their events, so you are not scrolling past everyone else’s heats to find the four that matter to you.

Live results, as they happen#
Additionally, when a meet is running, KRA Meets shows which event is in the water and which events have been called to the clerk of course, so you know roughly how much time you have before your swimmer is up. Results post heat by heat as they are entered into the Meet Manager system (if it’s syncing to Meet Mobile).
If you have starred a swimmer and added the app to your phone’s home screen, you also get a push notification when their event is called.

Team scores in real time#
Everyone wants to know if we are winning. If a meet is syncing to the live results, KRA Meets keeps a running team score during the meet and breaks it down by boys, girls, and relays, then shows the records that fell along the way. After a meet officially ends, a final Meet Manager file from the scoring computer is uploaded to break down all the scores, drops, and records.

Behind the scenes: calling the meet#
The live features only work if someone on deck is telling the app what is happening. So there is a simple console for our clerk-of-course volunteers. They tap an event to call it, and tap again to mark it as now swimming. That is what drives the parent notifications and the live banners.

There is also a small admin screen for turning the live features on for a meet, managing the volunteer PIN, and connecting to live results. It’s meant to be easily managed from the meet and from a phone.

The fun part: two reverse-engineering puzzles#
Half the reason this project is so much fun is that the data lives in two awkward (and antiquated) places, and getting it out was a fun puzzle and exercise.
The first is Meet Manager, the desktop program that actually runs the meet. It stores everything in an old Microsoft Access database file. Rather than try to translate it, KRA Meets reads the file directly and pulls all of it in, every event, entry, and result, so nothing gets lost in translation. We also sanitize this data on import to strip out anything we don’t need.
The second is Meet Mobile, the app a lot of families already use for live results. It has no public way to plug in, so I used some tools to understand how the requests are built. Now KRA Meets can pull in live results and scores on its own.

How it was built#
- Frontend and backend: React with React Router, running on Cloudflare’s servers so the site is fast no matter where you load it from
- Database: Cloudflare D1, a managed SQLite database
- Notifications: web push built from scratch. The usual off-the-shelf library does not run on Cloudflare, so I wrote the notification encryption
- Installable app: it is a progressive web app (PWA), so you can add it to your home screen and it behaves like a native app, notifications included
- Live results: a reverse-engineered Meet Mobile connection, cached so it stays quick and never hammers their servers
I built this along with Claude Code over the spring and early summer, and it has now run real meets for our team. There is still plenty I want to add next season, but it has already made meet days a little easier for our swim families.
