Pickleball Pirate
Australia
iOS (Flutter)
1.3.26 (Build 117+)
Full-Stack Mobile App
Overview
All-in-One Platform for Australian Pickleball
Pickleball is one of Australia's fastest-growing recreational sports, but club operators had no dedicated platform to manage their communities. They relied on spreadsheets, manual check-ins, and generic booking tools built for other sports.
Pickleball Pirate is a native iOS application we built end-to-end — from real-time session booking to live in-match scoring and automatic venue check-in via Bluetooth beacons. It's a multi-tenant platform: one codebase powers multiple clubs, each with their own branding and configuration.
The app is live on the Apple App Store with 100+ releases, serving multiple clubs across Australia.
Tech Stack
The Problem
What Clubs Were Struggling With
Booking sessions through emails and spreadsheets — no real-time capacity tracking
No live scoring — players had to manually note scores between sets
No tournament management — bracket draws done on paper
Manual venue check-in — staff had to tick names off a clipboard
No push notifications when spots opened up on full sessions
No way to scale a single solution across multiple club locations
What We Built
Key Features Delivered
Session Discovery & Booking
Real-time session cards showing live capacity, pricing, and location. Integrated Stripe + Apple Pay checkout with cancellation and waitlist support.
Live WebSocket Updates
Persistent ActionCable connection keeps sessions and scores live — no pull-to-refresh. Critical for high-demand sessions that fill in seconds.
Tournament Brackets & Live Scoring
Custom Flutter canvas painter renders full visual brackets with connecting lines. Scores update in real time via WebSocket with serving indicators.
BLE Beacon Auto Check-In
Players auto-check-in on arrival via Bluetooth beacon proximity scanning — zero manual action required. Per-tenant beacon configuration.
Push Notifications + Deep Links
Dual FCM + OneSignal stack ensures reliable delivery. Notifications deep-link to the exact screen — booking, message, session detail.
Payments & Subscriptions
Stripe payment sheet supporting credit cards and Apple Pay. Booking confirmations include full pricing breakdown and refund tracking.
Multi-Tenant Architecture
One codebase powers multiple clubs. Per-tenant session filtering, beacon config, and dynamic base URL resolution — new clubs with zero code changes.
Connectivity Resilience
ConnectivityCubit monitors real internet reachability (not just WiFi). Graceful offline screen, auto-reload on reconnect.
Architecture
How It's Built
State Management
Built on flutter_bloc with a clean BLoC + Cubit separation. Each screen has its own cubit handling a single concern — sessions, scores, messaging, auth, BLE, connectivity.
→ Repositories
→ Network / API
Real-Time Layer
A singleton GlobalWebSocketService manages the ActionCable connection with multiple concurrent channel subscriptions. Dual stream controllers fan out session_updated and score_updated events to screen-level cubits independently.
Multi-Tenant Support
Per-tenant session filtering, beacon UUIDs, dynamic base URL resolution, and club-specific offer types — all driven by configuration. New clubs go live with zero code changes.
Observability
Dual error tracking with Firebase Crashlytics (crash reporting) and Sentry (performance monitoring). Full visibility across the live user base across development, staging, and production environments.
Outcome
What We Delivered
100+ App Store releases (Build 117+)
Multi-club platform live in Australia
Replaced manual spreadsheet booking entirely
Reduced no-shows via automated push reminders
New clubs onboarded with zero code changes
Full Sentry + Crashlytics observability in production
Need a production-ready mobile app built fast?