Inspiration

I play padel every week with my three brothers. We used to jokingly comment after each match on who was carrying the team and who was just freeriding. I got the idea that if there was an easy way to track not only who won the point but also who touched the ball last, you could learn so much about the match dynamics.

What it does

The core loop is that you can play racket sports like tennis, padel and several others and easily update the score after each point. With one swipe on your watch or phone, you can mark which team won the point and which player was the last to touch the ball. You get the immediate benefit of seeing the score on an external scoreboard and hearing it announced if you prefer, so you can focus on the game. And then, after the game, you can review the analytics and see who carried the team and who cracked under pressure.

How we built it

Technically, it's based on Kotlin Multiplatform for the mobile clients and Google Firebase for server-side features. To support watchOS and Wear OS, the front end needs to be native anyway, so it made sense to let the mobile apps enjoy the capabilities of native UIs as well. On the other hand, there is no point in replicating the scoring engine and analytics logic for several different racket sports across different platforms. Kotlin Multiplatform provides the best of both worlds, letting you keep the logic in one place and build native UIs where they add value.

Process-wise, I wanted to experiment with designing without Figma. All the screens and custom animations were designed directly in code.

The main AI tool used for development was Claude Code. I also experimented with Google Antigravity.

Challenges we ran into

This was the first app project I have built and launched, so everything was new. The biggest challenges were keeping the scope under control and shipping early (failed badly at that), as well as dealing with app store reviews. There seem to be several undocumented requirements, and to make matters worse, Apple only tells you about them one at a time, while every review round takes several days.

Google seems to be even worse nowadays. I have waited for two weeks to get my first release published, and it's starting to look like it won't happen in time for this event.

And of course, I know that getting it approved is just the beginning. The real question is whether anyone other than me and my brothers wants a product like this, and whether I can reach those customers and start making sales.

Accomplishments that we're proud of

I'm happy that I managed to ship it at this level of quality. The design is full of smart usability details, the input method is innovative, it's a joy to use, and technically the architecture is solid. I also ended up creating smart tools that I'm now using in my other projects as well, for creating app store assets, managing localizations, creating app videos and 3D mockups, etc.

What we learned

As a UX designer who has never shipped anything alone before, I have learned a ton. I've learned about building a multi-platform codebase, setting up a real-time server, figuring out DevOps practices, and much more. More importantly, the project has taught me how to use agentic tools for design, prototyping and development in general. That's something I now use daily in my consulting business and have also used in several new projects that I haven't shipped yet.

What's next for Baller Score

I hope to get the Android version available on Google Play and the Samsung Galaxy Store any day now. After that, I can start the proper marketing efforts. I'm planning to approach clubs with a B2B2C offering and create short-form videos for TikTok to get direct B2C attention.

Built With

Share this project:

Updates

Submission history