BeachBuddy

A marketplace and management platform connecting people to beach sports training centers in Rio de Janeiro.

BeachBuddy is a two-sided platform for the beach sports scene in Rio de Janeiro.

Beach sports in Rio move a large informal economy. Beach tennis, futevôlei, and beach volley training centers (centros de treinamento, or CTs) run classes along the coast every day, but almost all of the coordination happens through WhatsApp groups and spreadsheets: schedules, attendance, trial classes, and monthly payments. Athletes looking for a place to train have no reliable way to discover what exists near them, and CT owners spend hours a week on administrative work that does not scale.

BeachBuddy attacks both sides of that problem with a single platform. I co-founded it with two partners and am responsible for the backend and infrastructure.

For athletes

The consumer side is a discovery and booking product. Athletes onboard through a short preference flow, browse CTs on a map filtered by location, sport, and schedule, and book trial classes or recurring training directly in the app.

Left: Onboarding captures training preferences. Right: a training center profile with schedule, class offerings, and booking.

Discovery is map-first, since proximity to a specific stretch of beach is the strongest factor in where someone actually trains.

Map-based search with a results bottom sheet, filtered by location and sport.

For training centers

The management side replaces the spreadsheet-and-WhatsApp workflow with class scheduling, student rosters, attendance tracking, plan management, and automated recurring billing. Payments run through an integration with Asaas, a Brazilian payment provider, using webhook-driven reconciliation so subscription state stays consistent without manual intervention.

Architecture

The mobile app is built in Flutter, targeting iOS and Android from one codebase, with TestFlight used for iOS distribution during beta.

The backend is a Django REST Framework API.

Running a production system with real users and real money has been a useful counterweight to research work. Constraints that are invisible in a benchmark, such as webhook idempotency, connection pooling against a managed cache, and the cost of a bad migration, become concrete very quickly.