All Projects

Movati

Class booking and account management app

React NativeExpoLaravel
movatiathletic.com
Screenshot of Movati — Class booking and account management app

Overview

Movati Athletic is a Canadian gym chain with locations across the country. Their members needed a modern, mobile-first way to book classes, manage their accounts without calling the front desk or navigating web portals.

I rebuilt their app from the ground up. It now serves over 130,000 users across Canada.

The Challenge

Movati had separate native apps for Android and iOS, and both performed poorly. I was tasked with replacing them entirely. The new app needed to:

  • Handle real-time class availability across multiple club locations
  • Support booking and cancellation with native calendar integration
  • Provide full account management (membership details, billing, profile)
  • Run seamlessly on iOS, Android, and the web from a single codebase
  • Integrate with Movati's existing backend infrastructure

The Solution

I chose React Native and Expo to manage all platforms from a single codebase, connected to a Laravel API backend. The Laravel backend handles authentication, class scheduling logic, and account data through a clean REST API — keeping the mobile app lightweight while the server handles the heavy lifting.

To streamline releases, I built custom EAS CI/CD workflows with CLI commands and GitHub Actions, automating deployment to the App Store, Play Store, and an AWS-hosted web build.

Key Features

  • Class Scheduling — Browse upcoming classes by location, time, and instructor. Reserve a spot, cancel, and waitlists with real-time availability updates.
  • Account Management — View membership details, update profile info, and manage billing — all without calling the front desk.
  • Multi-Location Support — Switch between Movati club locations and see schedules specific to each gym.
  • Cross-Platform — One codebase powers iOS, Android, and web with feature parity and a consistent UX across every device.

Technical Highlights

The app uses Expo Router for file-based routing and a truly native navigation experience. State management relies on React's built-in context and hooks — no Redux overhead for an app of this scope. The result is a fast, maintainable codebase that's easy to extend as Movati adds new features.