← WorkRadomir BoškovićNext: Pansuara →Next →
WORKING PROTOTYPEINDEPENDENT PRODUCT · TWO-SIDED PLATFORM

Tennis Platform

A two-sided tennis platform for Belgrade - players find matches and book courts, clubs manage their calendars in real time. Conceived, designed and built solo: a player app, a club-manager app and the shared real-time backend.

One product for both sides of the court.

Finding a compatible opponent and an available tennis court in Belgrade is fragmented across phone calls, group chats and separate club systems. The concept combines finding an opponent, booking a court, tournaments and club communication in one player app - with a second experience for clubs managing courts and bookings.

From home, everything starts with one sheet: find a match, or reserve a court.
HOME
THE TWO INTENTS
Real screens from the running prototype
COURT BOOKINGLIVE · LOCAL BACKEND

The player sees aggregated availability across the club's courts, selects one or more time slots and gets a running total - served live by the shared backend. Right: the 14-second recording of the real flow.

MATCHMAKINGPROTOTYPE UI · MOCK DATA

Open matches can be explored by rating range, club and time, with the cost of the court shown per player.

MESSAGINGLIVE

Club group chat over REST + WebSocket - admin announcements, read receipts.

Two sides. One shared state.

The player and club-manager apps share the same backend. When a booking is created, the club schedule and player availability update through the same real-time event stream.

● PLAYER

19:00 - 5/5 courts available

● CLUB MANAGER

The booking arrives live in the Teren 1 schedule: "Ana Marković - Potvrđeno"

● PLAYER

Availability drops to 4/5

REACT / TYPESCRIPT · NODE / EXPRESS · WEBSOCKETS
PROTOTYPE NOTEThe shared backend, booking logic, WebSocket broadcast and updates in both apps are real. The final player-side confirm action is not yet wired to persistence - the booking shown here was created through the app's public booking API.

Built solo as a product prototype.

I conceived the product, designed the player and club experiences, and built both frontends and the shared backend.

PLAYER APPReact · TypeScript · Vite · Tailwind
CLUB MANAGERReact · TypeScript · Vite · Tailwind
BACKENDNode · Express · WebSockets
2 apps + shared real-time API~13.7k lines TS/JS43 commits15-day build
AND LATER - PRODUCT RESEARCH

Coming back to the idea later, I used AI agents to pressure-test the market, product assumptions and monetization before deciding what I would build next. The agents proposed; I made the final calls.

STATUSWorking prototype. The real-time booking / availability and messaging layer works locally; several broader product surfaces remain high-fidelity prototype UI rather than fully wired features.
NEXT CASE STUDYPansuara →Pansuara storefront hero