Precision Timing
for Every Race
Precision Timing
for Every Race
RaceGorilla offers a self-service sports timing platform. When the COVID pandemic brought the sports event market to a halt, the team seized the opportunity to reimagine their tech stack.
Sports timing is an accuracy-critical business where milliseconds matter. RaceGorilla needed to rebuild their legacy mobile application in a modern framework that would allow them to do more with a smaller team. The app needed to deliver synchronised timing services via multiple mobile devices, incorporating advanced integrations like Bluetooth connectivity, live updates, and robust offline support.
Building a high-performance sports timing app requires sub-second accuracy, reliable connectivity in outdoor environments, and bulletproof offline capabilities for events with unstable data connections.
We delivered a full-stack rebuild - from the Flutter mobile app to extensions of the PHP/Laravel backend and Angular web application. What started as a migration transformed into a deep technical partnership. Using our six-step framework, we navigated the complexity of real-time timing at scale.
1. IDENTIFY & VALIDATE
We analyzed RaceGorilla's legacy application to understand the critical performance requirements. Key findings: timing accuracy must be maintained across multiple devices simultaneously, the app must function reliably without internet connectivity at remote race locations, and scanning speed must match or exceed the legacy application.
1. IDENTIFY & VALIDATE
We analyzed RaceGorilla's legacy application to understand the critical performance requirements. Key findings: timing accuracy must be maintained across multiple devices simultaneously, the app must function reliably without internet connectivity at remote race locations, and scanning speed must match or exceed the legacy application.
2. IMPACT MAPPING
We mapped features to the core business value: event organiser satisfaction. Bluetooth connectivity enables hardware timer integration. MQTT provides live race updates to spectators. Offline-first architecture ensures events run smoothly regardless of connectivity. Each feature directly supports the 'self-service' positioning.
3. TECHNICAL AUDIT
We audited the legacy application's architecture, performance benchmarks, and integration points. The audit confirmed Flutter as the right choice for achieving native-level Bluetooth performance while reducing the team size needed for iOS and Android maintenance. We also identified opportunities to modernize the PHP/Laravel backend.
4. INTERACTIVE PROTOTYPING
Performance prototypes were tested at actual sports events to validate Bluetooth scanning speed, multi-device synchronisation accuracy, and offline queue reliability. The prototypes demonstrated that Flutter could match the legacy app's scanning performance - a critical go/no-go criterion.
5. DEVELOPMENT & LAUNCH
We developed a high-performance Flutter application incorporating Bluetooth connectivity for hardware timers, MQTT for live race updates, and a local database with queue system for offline data storage and synchronisation. The app handles unstable data connections gracefully, ensuring events always proceed smoothly.
6. ITERATE & OPTIMIZE
Our collaboration evolved into a full technical partnership. Beyond the mobile app, we extended the PHP/Laravel backend with new API endpoints and improved the Angular web frontend. Event data and timing analytics drive ongoing performance optimizations.
The RaceGorilla rebuild demonstrates how a platform migration can become a catalyst for broader technical improvement. By moving to Flutter, the team can now do more with fewer resources while delivering timing accuracy that matches their legacy application. RaceGorilla has since fully decommissioned the legacy Competition app, with all users migrated to the Flutter-built RaceGorilla Pro app.
Full-Stack Sports Timing Platform
Built for Race Day
Every feature was engineered for the demanding conditions of live sports events - outdoor environments, unreliable connectivity, and millisecond accuracy requirements.
Direct Bluetooth connection to hardware timing devices enables precise, synchronised timing across multiple mobile devices at different race checkpoints.
Real-time race updates are pushed to spectators and organisers via MQTT, providing live leaderboards and split times during events.
A local database and queue system ensures all timing data is captured even without internet connectivity. Data syncs automatically when connection is restored.
Multiple devices can operate simultaneously at different checkpoints, with synchronised timing ensuring accurate split times and finish results.
Full-stack sports timing platform connecting mobile devices to cloud infrastructure
The Flutter mobile app connects to hardware timers via Bluetooth, publishes live updates via MQTT, and syncs with a PHP/Laravel backend. An Angular web application provides event management and results display for organisers and spectators.
TIMING CAPTURE
Mobile devices connect to Bluetooth timers and capture timing data with offline queue backup.
LIVE SYNC
MQTT protocol delivers real-time race updates while the local queue handles connectivity gaps.
EVENT MANAGEMENT
PHP/Laravel backend and Angular frontend provide comprehensive event setup, results, and analytics.
A high-performance Flutter app that delivers synchronised timing services with native-level Bluetooth integration.
Unlock'd's extensive experience in Bluetooth and scanning technologies was crucial in achieving scanning speeds in Flutter on par with the legacy application. The app incorporates advanced integrations including Bluetooth connectivity, MQTT for live updates, and a local database with queue for offline data storage and sync. The legacy Competition app has been fully decommissioned in favour of the RaceGorilla Pro app, available on both the App Store and Google Play Store.
