PadelMates

PadelMates is a cross-platform booking and community platform for racket sports — padel, tennis, badminton, and pickleball — built for Padel Mates International AB. The app brings court discovery, bookings, open matches, tournaments, coaching, real-time chat, and payments together in one place, shipping to both iOS and Android from a single React Native codebase and serving players in 15 languages.

PadelMates App Showcase
Industry:
Sports & Recreation
Technology Used:
React Native, React, TypeScript, Firebase, Stripe, Socket.IO, Zustand, React Query
The Challenges

The racket-sports world is fragmented. Players juggle phone calls to book courts, group chats to find a fourth player, spreadsheets to track tournaments, and cash to settle up afterward. Clubs lose bookings to friction, and parents managing kids' sessions have nowhere central to do it.

PadelMates set out to collapse all of that into one app — discover, book, play, pay, and connect — for an audience spanning casual players, competitive leagues, coaches, clubs, and parents managing junior accounts. The hard part wasn't any single feature: it was building payments, real-time chat, geolocation, tournaments, ELO ratings, and in-app subscriptions inside one coherent, performant, maintainable codebase that feels fast and premium from day one.

Team

The Solution

One App to Discover, Book, Play & Pay

We delivered 30+ feature screens covering the full player journey: court discovery and bookings, open matches with skill-level matching, tournaments and leagues, an ELO rating system for fair matchmaking, coaching sessions with checkout flows, junior accounts that let parents manage multiple child profiles from one login, rewards, and GPS-based discovery of nearby clubs with IP fallback.

Dual-Backend Networking Layer

The app talks to two backends — a Python FastAPI service and a NestJS service — through two purpose-built Axios instances. Both auto-inject Firebase ID tokens per request, append the active locale automatically, support request cancellation, and one transparently decrypts sensitive response fields. Feature code never thinks about auth, language, or encryption — the plumbing handles it.

Disciplined State Strategy

Server state lives in React Query with caching and background refetch; ephemeral global state lives in six focused Zustand stores; persistence runs on MMKV — synchronous and far faster than AsyncStorage. Each tool does one job, which keeps the data flow predictable as the app grows.

Payments Done Right

Stripe card payments, in-app subscriptions, credit packages, regional gateways (Tap/KNET), saved cards, payment history, and a built-in wallet — each isolated behind its own hook and API module, with normalized error handling so failures surface cleanly to users instead of crashing.

Real-Time Chat & Location Discovery

Socket.IO-backed messaging with unread badges keeps players, groups, and clubs connected, while GPS location with IP fallback surfaces nearby clubs and activities for every player.

A Design System, Enforced

Centralized color tokens, a ClearSans typography scale, and a strict component template — every component memoized, zero inline styles — so new screens snap together from existing parts and look native to the app instantly. Performance is the default: FlashList for long lists, optimized media loading, and skeleton states wired to real fetch states. Every user-facing string is keyed and translated across all 15 locales including RTL, and TypeScript strict mode with fully typed APIs catches integration mistakes before QA does.

Approach

We architected the product so every new feature reuses existing primitives instead of reinventing them — 150+ reusable components governed by a living engineering manual that every contributor follows: search before creating, reuse before adding, tokens over magic numbers, translations in all locales, type everything. We also maintain a documented catalog of known gotchas — real bugs we hit and solved — so the same problem is never paid for twice. That discipline is why a 30-screen, multi-payment, real-time, multilingual app stays clean enough to keep shipping features quickly.

Outcome

Live on Both App Stores

Shipped to production on both iOS and Android from a single React Native codebase, with a polished dark-mode experience real users rely on.

30+ Screens, 150+ Reusable Components

A broad, ambitious feature set delivered and maintained inside one coherent architecture that absorbs new features without slowing down.

15 Languages Live

Full internationalization — down to accessibility labels — opened the product to a global market, including RTL-aware locales.

Multiple Payment Rails Integrated

Stripe, in-app subscriptions, regional gateways, credit packages, and a wallet — integrated and isolated for safe iteration.

Architecture Built to Keep Growing

End-to-end type safety and documented institutional memory separate a codebase that works today from one that keeps working as it grows.

For PadelMates, we engineered a single-codebase mobile strategy that ships a premium experience worldwide
Rocket

An Ongoing Partnership

TPLEX continues to partner with Padel Mates International AB, shipping new features quickly on top of the architecture and engineering manual we put in place. Because every screen snaps together from existing, documented parts, the product keeps growing without accumulating maintenance debt — built for the love of padel, engineered for the future.