MOBILE APP CASE STUDY
Skyzone Trampoline Park App: Skip the Queue With a Cross-Platform Booking Experience
WebSpero designed and shipped a cross-platform React Native app for iOS and Android that connects Skyzone’s operations through live Roller API synchronisation. Guests skip the line and book jump tickets, memberships, birthday parties, and café orders from their phones.

2
Platforms Shipped
iOS · Android
9+
App Feature Modules
Tickets · Memberships · Parties · Café & more
1
Unified Data Layer
Roller API + MySQL in sync
3
Payment Methods
Apple Pay · Credit · Debit
Project Context
Client
Skyzone Trampoline Park
Niche
Indoor Entertainment · Mobile App (iOS + Android)
The Tech Stack
- React Native
- Node.js
- MySQL
- Firebase
"We needed one app for iOS and Android, connecting our online and offline ticketing through the Roller API, with customer data in MySQL, to eliminate long lines for pass and ticket purchases."
The core problem was simple: guests were queuing to complete transactions they could finish on their phones. Solving it required a live bridge between Roller’s POS and the mobile app so every booking stayed consistent across both. The MySQL layer stored app-specific data like reward points, waiver records, and push preferences that Roller doesn’t handle natively.

Founder, Skyzone
(Operations Lead)

THE APP
Skyzone Trampoline Park
Skyzone connects the park’s point-of-sale system to a guest-facing booking experience on iOS and Android. Every ticket purchase, membership update, and café order stays in sync whether it originates at the desk or on the phone.
For Park Guests
- Browse and purchase time-based jump tickets by slot
- Book birthday party packages with availability calendar
- Buy and manage annual or monthly memberships
- Order food and drinks from the in-park café menu
- Earn 1 reward point per $1 spent; redeem at checkout
- Complete digital waiver signing before arrival
- Pay via Apple Pay, credit card, or debit card
- View park open/close schedules and location info
- Receive push notifications for promotions and nearby offers
HOW WE BUILT IT
A Phased, Integration-First Build Process
We front-loaded the Roller API integration before any consumer screens were written. Every booking flow and data sync was verified against the live system from day one. Consumer features were built on a confirmed data contract, not a mocked one.

Discovery & API Mapping
Audited Roller’s endpoints for tickets, memberships, parties, and waivers. Mapped every field against the client’s offline process to identify what Roller
owned and what MySQL needed to supplement.

Architecture & DB Design
Designed the Node.js middleware layer and MySQL schema.Defined the sync strategy: which records Roller owns,and which live in MySQL
(rewards, device tokens, waiver completions).

Backend & Roller Integration
Built and tested all Roller API connectors for booking creation, membership management, waiver status, and real-time availability.
Implemented Firebase for push notifications and device token management.

Core App Screens
Converted Figma designs into React Native screens: authentication, home dashboard, ticket booking, party booking, membership purchase, and rewards, all
wired to live backend endpoints.

Payments & Waiver Module
Integrated Apple Pay and card payments with PCI-compliant tokenisation.Built the digital waiver signing flow with completion status
synced to MySQL and surfaced in the operator view.

Café & Printer Integration
Built the café module covering menu browsing, cart, order placement, and order status.Integrated WiFi printer for kitchen ticket printing, with
order confirmation pushed to the guest’s device.

Geofencing & Notifications
Implemented geofence boundaries around each park location.Configured Firebase Cloud Messaging to deliver location-triggered
promotional notifications when guests enter defined proximity zones.

QA & Store Submission
End-to-end regression across iOS and Android covering booking flows, payment edge cases, offline states, and geofence accuracy. Prepared and submitted
builds to the App Store and Google Play.
WHAT WE BUILT
Nine Feature Modules Connected to a Single Live Booking System
Skyzone ships as one app for iOS and Android, connected in real time to Roller’s POS. Below is the product in the order a new user would meet it.
Authentication & Onboarding
Guests register or log in with email/password or social auth. Firebase handles session tokens across both platforms. First-time users complete a park selection and digital waiver flow before reaching the home screen, so compliance is done before any booking is attempted.

Jump Ticket Booking
The booking flow shows live slot availability pulled directly from Roller. Guests select duration and guest count, then complete checkout with card or Apple Pay. A confirmation and QR code are delivered instantly with no desk stop required. Slot availability updates in real time so guests never hit a sold-out session at checkout.

Memberships
Guests browse membership tiers, see pricing and benefits, and purchase in-app with their saved payment method. Membership status syncs back to Roller immediately, so the plan is active across the app and front-desk POS without any manual staff step. Expiry date and next billing details are visible at a glance on the home screen.

Birthday Party Booking
Guests choose a date and time, select a package (Gold, Platinum, Silver), provide party size, and submit a reservation, all synced to Roller’s event management system. Party slots follow different capacity rules from general jump tickets. Availability is surfaced on a calendar view with package details and guest count inputs on the same screen.

Café Module & WiFi Printer Integration
Guests browse the café menu, add items to a cart, and place orders from the app. Orders go to the kitchen’s WiFi printer in real time. The guest receives in-app status updates: received, preparing, ready. This removes the physical café queue and gives staff a single order source of truth.

Rewards & Points Redemption
Guests earn one point per dollar spent across all in-app purchases. Points are stored in MySQL and displayed in a dedicated rewards screen, tiered by level (Bronze, Silver, Gold, Platinum), with the option to apply them as a discount at checkout. The system tracks accumulation and redemption history per user.

Geofencing & Location-Based Notifications
Each park location has a geofence boundary. When a guest’s device enters the zone, Firebase Cloud Messaging triggers a push notification with offers or updates personalised by location. The system handles multi-park setups with separate geofence configurations per venue.

Park Schedule & Location Info
A schedule module shows open and close times, special hours, and closures per park location. Staff update hours via the admin backend without a code release. Guests can view location details and link out to directions from the home screen.

THE CHALLENGES WE SOLVED
Engineering the Integration Layer Between a Live POS and a Consumer App
The Skyzone app was a new front end for an existing operational system. Every feature had to stay consistent with what Roller knew. The real engineering difficulty lived in the integration and sync layer, not the UI. Six problems shaped how we built it:
Two Systems, One Truth: Roller API + MySQL Sync
Roller owns tickets, memberships, and party bookings. The mobile app needed additional data like reward points, device tokens, and waiver completions that Roller doesn’t store. We built a Node.js middleware layer that writes app-specific data to MySQL while routing all booking and inventory operations to Roller. Foreign key references to Roller’s user and booking IDs maintain relational integrity across both systems without duplicating records.
Precise Geofencing Across Multiple Locations
Indoor venues are physically compact and park locations can sit close to other commercial buildings. Standard radius-based geofences triggered false positives. We used polygon-based geofences with tuned radius thresholds per location. Geofence events are processed server-side with a debounce to prevent repeated notifications if a device oscillates around the boundary.
WiFi Printer Reliability for Café Orders
Kitchen WiFi is noisy and subject to interference from guest devices. Print jobs had to be guaranteed even under degraded network conditions. We implemented a queued order delivery model with retry logic and acknowledgement confirmation. If the printer doesn’t confirm receipt within a timeout window, the order is requeued and an alert is surfaced to staff.
Complex Time-Slot Booking Logic
Jump ticket slots have capacity limits and duration rules that differ from party bookings. Overbooking is operationally worse than showing a slot as unavailable. We pull live capacity state from Roller at query time rather than caching it, and apply a short-lived reservation lock in MySQL during checkout to prevent double-booking. The lock expires automatically if checkout is abandoned.
Apple Pay and Cross-Platform Payment Integration
Apple Pay is iOS-only, while card payments had to work identically on both platforms. We abstracted the payment provider behind a unified checkout hook that adapts its UI per platform while keeping server-side order handling consistent. Tokens are sent to the Node backend for charge execution and card numbers never touch the app server.
Real-Time Order Tracking and Café Notifications
Café order status moves from placed to preparing to ready in near real time, with push delivery at each state change. We used Firebase Realtime Database to push order state updates from the kitchen admin interface to the guest app, with FCM handling push delivery when the app is backgrounded. This enables sub-second updates without polling.
WHAT WAS DELIVERED
A Production-Ready Cross-Platform App With Live POS Integration
WebSpero delivered a complete iOS and Android app, a Node.js backend with live Roller API integration, a MySQL layer for app-native data, Firebase-powered push and geofencing, and a WiFi printer integration for café orders. All from a single codebase, live on both stores.
| VISION | DELIVERED | |
| Platform | An app that works on both iOS and Android | Single React Native codebase shipping native builds to both App Store and Google Play |
| Data Sync | Online and offline process data in one place, synced to Roller | Node.js middleware bridges Roller API and MySQL; all booking and membership events are consistent across POS and app |
| Queue Elimination | Reduce long wait times to purchase passes and tickets | Guests complete ticket purchase, party booking, and waiver signing before arrival; desk queue is optional, not mandatory |
| Café Operations | In-park café integration | Full café module with menu browsing, in-app ordering, real-time order status, and WiFi printer delivery to kitchen |
| Loyalty | Reward points at $1 = 1 point, with redemption | Points earned per transaction stored in MySQL, redeemable at checkout, with full balance and history view in-app |
| Location Engagement | Location-based offers for nearby guests | Polygon geofencing per park with Firebase-triggered promotional push notifications on proximity entry |
WHAT TO EXPECT FROM US
Transparent Engineering and Predictable Delivery for Consumer Apps Connected to Existing Systems
If you are building a consumer mobile app that connects to an existing POS or booking system, here is what working with our team looks like.

We audit your third-party APIs before writing a line of app code:
If your product depends on an external system, we map every endpoint, rate limit, and data contract in discovery. Features are built on a confirmed, tested integration, not assumptions that break at launch.

One codebase, two platforms, no compromise on either:
React Native lets us ship iOS and Android from a single codebase, but we don’t use that as an excuse to cut platform-specific corners. Apple Pay, push permissions, and native UI patterns are implemented correctly per platform.

We tell you what the scope actually is, not what sounds good in a proposal:
Booking locks, concurrency edge cases, printer retry logic: we spec the awkward parts up front and estimate honestly. If a feature adds three weeks, you know before you sign off.

Data architecture is decided early, not retrofitted later:
When your app needs a third-party system and an app-native data layer to coexist, we design the boundary before any code is written. Getting it wrong at week one creates data consistency bugs at week twelve.

Notifications and location features are tested on real devices, not just emulators:
Push delivery, geofence accuracy, and background behaviour all differ between simulators and hardware. We test across iOS and Android versions before marking these features complete.

The app ships to both stores. That is the finish line, not “dev complete”:
App Store and Google Play review cycles, certificate management, build signing, and store listing setup are all part of the engagement.
TECHNICAL NOTES
The Architecture, Infrastructure, and Tooling Powering the Skyzone App
React Native Architecture
Single codebase targeting iOS and Android with a shared component library. Platform-specific branches handle payment UI and notification permission flows. Navigation uses React Navigation with deep-link support for push-triggered opens.
Roller API Integration
All Roller interactions are proxied through the Node.js backend; the mobile client never calls Roller directly. This keeps credentials server-side, allows response normalisation before delivery, and centralizes retry logic.
MySQL Data Layer
MySQL stores what Roller doesn’t own: reward point balances, point transaction history, digital waiver completions, FCM device tokens, and notification preferences. Foreign key references maintain relational integrity.
Firebase (FCM + Realtime DB)
Firebase Cloud Messaging handles all push delivery. Firebase Realtime Database powers the live café order state feed between the kitchen admin and the guest app, enabling sub-second updates without polling.
Geofencing Implementation
Polygon geofences are defined per park location rather than radius circles. Geofence events are processed server-side with a debounce to prevent repeated trigger notifications if a device oscillates around the boundary.
Payment Infrastructure
Payment tokenisation is handled client-side via the payment provider SDK; tokens are sent to the Node backend for charge execution. Apple Pay runs through the native iOS payment sheet. Reward point redemption is calculated server-side.
WiFi Printer Integration
Café orders are dispatched to the kitchen printer via the local network using a print server adapter on the Node backend. Orders are queued with retry logic and a configurable timeout. Failed print jobs surface as alerts.
Booking Lock & Concurrency
Time-slot bookings apply a short-lived reservation lock in MySQL when a guest enters checkout. The lock prevents double-booking during the payment window. Roller’s booking creation is called only after payment succeeds.
