← Back to Portfolio Third Eye Health →

🦊 Fox Tranquility Massage

React Native Mobile App • Booking & Loyalty Platform

Quick Navigation

✨ Feature Demonstrations

Multi-Step Booking Flow

A guided multi-step appointment booking system that walks clients through service selection, therapist matching, duration customization, add-on enhancements, and time slot selection β€” all with real-time availability checking.
Expo Router React Native Context API date-fns expo-location

Booking Flow

  1. Client selects service type (massage, personal training, life coaching)
  2. System filters therapists by location and service area (geofencing)
  3. Client picks therapist, adjusts duration, and selects add-on enhancements
  4. Available time slots displayed with real-time availability
  5. Booking confirmation with therapist info and appointment summary
Booking state is managed via a shared Context provider, persisting partial selections across steps. Therapist availability is filtered server-side and validated against geofence boundaries using expo-location coordinates.

Rewards & Loyalty System

A full loyalty engine with points earned on appointments, daily check-in streaks, redeemable rewards with voucher codes, and a complete redemption history β€” designed to drive client retention.
React Native AsyncStorage JWT Auth Zod

Client Rewards Flow

  1. Points earned automatically upon completed appointment
  2. Daily check-in available with streak multiplier bonuses
  3. Client browses reward catalog (credits, discounts, products)
  4. Redemption generates a unique voucher code
  5. Full redemption history and current point balance visible on dashboard
Points ledger and redemption records are stored server-side and synced on app load. The admin panel allows manual point adjustments and creation of new reward offerings with configurable point costs.

Admin Dashboard & Business Management

A full-featured admin portal giving therapists and business owners control over every operational aspect: scheduling, client management, service catalog, therapist profiles, and business analytics.
Expo Router (Admin) RBAC React Native TypeScript

Admin Capabilities

  1. Dashboard overview of upcoming bookings and revenue metrics
  2. Therapist availability management β€” block time, set unavailability
  3. Service catalog management β€” durations, pricing, add-on enhancements
  4. Client management β€” full client list with appointment history
  5. Therapist profiles β€” bio, photos, specialties, service areas
  6. Reviews moderation β€” view and remove inappropriate reviews
  7. Push notification broadcasting to clients or therapists
The admin panel is a separate Expo Router tab group, gated by RBAC roles embedded in the JWT token. Role checks happen on the client at route level and are re-validated server-side on every API request.

Geofencing & Location-Based Availability

Therapist availability is tied to configurable geographic service areas. Clients only see therapists who serve their location, and admins can draw service zones directly in the app.
expo-location Geofencing API TypeScript

Location Flow

  1. App requests location permission on first booking attempt
  2. Client coordinates sent to API for service area matching
  3. Only in-range therapists appear in the booking flow
  4. Admins configure service zones per therapist in the admin panel
Service areas are stored as radius + center-point pairs. The matching logic runs server-side using Haversine distance, keeping coordinate math off the client and enabling future polygon support without app updates.

Push Notifications

Full push notification support for appointment reminders, booking confirmations, cancellations, and admin broadcasts β€” targeting individual clients, therapists, or all users simultaneously.
expo-notifications Expo Push API expo-secure-store

Notification Flow

  1. Push token registered on login and stored server-side per user
  2. Appointment lifecycle events trigger automatic notifications
  3. Admin can broadcast custom messages from the admin dashboard
  4. Clients can opt in/out of notification categories in profile settings
Expo push tokens are stored with the user record server-side. Notification delivery uses the Expo Push Notification API as a managed relay, avoiding the complexity of direct APNs/FCM integration while retaining full targeting control.

Multi-Profession Theme Customization

The app is architected as a white-label platform. Business owners can customize the color scheme, branding, and profession context (massage, personal training, life coaching) entirely from the admin dashboard β€” no app store update required.
React Context (Theme) AsyncStorage TypeScript React Native StyleSheet

Theme Flow

  1. Admin selects profession and primary brand colors in settings
  2. Theme config stored server-side and synced to all active clients on launch
  3. ThemeContext distributes color tokens throughout the component tree
  4. All UI components consume theme tokens β€” no hardcoded colors
A ThemeProvider wraps the entire app, consuming a business config from the API. This makes the codebase deployable for any health/wellness business with zero UI code changes β€” just a new backend config record.

πŸ“‹ Professional Summary

Full-Stack Mobile Booking Platform β€” React Native / Expo Fox Tranquility Massage is a production-grade mobile booking and client management platform built for a Denver-based massage therapy business. The app spans two distinct user experiences: a polished client-facing flow for discovery, booking, and loyalty engagement, and a comprehensive admin portal for therapist scheduling, business operations, and client relationship management.

The platform was architected with white-label reusability in mind β€” a ThemeContext-driven design system, configurable profession types, and a server-driven business config make it deployable across wellness businesses without code changes. Core engineering challenges included multi-step booking state management across Expo Router screens, geofence-based therapist availability filtering, a full loyalty ledger with streak mechanics, and Expo push notification delivery for real-time appointment lifecycle events.

The entire codebase is TypeScript with Zod-validated API boundaries, JWT authentication with secure token storage via expo-secure-store, and React Context for global Auth, Theme, Business, and Toast state. The result is a cohesive, production-ready platform demonstrating depth in mobile architecture, business logic design, and full-stack engineering.

🎯 Most Marketable Skills

Mobile Development

  • React Native 0.81 with Expo 54
  • Expo Router (file-based routing)
  • Tab and stack navigation patterns
  • TypeScript 5.9 throughout
  • Responsive layouts with StyleSheet

Auth & Security

  • JWT token-based authentication
  • expo-secure-store for token persistence
  • Zod schema validation on all API boundaries
  • RBAC role gating (client / therapist / admin)
  • Secure account deletion flow

Business Logic

  • Multi-step booking state machine
  • Loyalty points ledger with streak mechanics
  • Geofence-based availability filtering
  • Reward catalog and voucher generation
  • Service area management (radius + center)

UX & Architecture

  • White-label ThemeContext design system
  • Server-driven business config
  • Multi-profession branding (no code changes)
  • AsyncStorage for offline persistence
  • Toast/notification UX patterns

πŸ—οΈ Architecture

Client App

  • React Native / Expo 54
  • Expo Router (file-based)
  • TypeScript 5.9
  • Tab + stack navigation
  • StyleSheet theme tokens

State & Context

  • AuthContext (JWT + user role)
  • ThemeContext (brand config)
  • BusinessContext (biz info)
  • ToastContext (global alerts)
  • AsyncStorage persistence

API & Validation

  • REST API via fetch
  • Zod schema validation
  • JWT auth headers
  • date-fns for date handling
  • Server-driven availability

Device Services

  • expo-notifications (push)
  • expo-location (geofencing)
  • expo-secure-store (tokens)
  • expo-image-picker (profiles)
  • AsyncStorage (cache)

Admin Portal

  • Separate Expo Router group
  • RBAC role-gated routes
  • Service & availability mgmt
  • Push notification broadcast
  • Theme & business config

πŸ† Key Achievements

πŸ“…

Full Booking Engine

Multi-step flow with service selection, therapist matching, duration, add-ons, and geofenced availability β€” all in a single cohesive UX.

🎁

Loyalty & Rewards System

Complete points ledger, streak check-ins, redeemable catalog, voucher codes, and full redemption history β€” driving repeat bookings.

πŸ—ΊοΈ

Geofence Scheduling

Location-based therapist availability using expo-location and server-side Haversine matching β€” clients only see in-range therapists.

🎨

White-Label Theming

Server-driven ThemeContext architecture makes the app deployable for any wellness business with no UI code changes β€” just a new config.

πŸ”

Secure Auth & RBAC

JWT tokens with expo-secure-store, Zod-validated boundaries, and role-based routing across client, therapist, and admin experiences.

πŸ””

Push Notifications

Full lifecycle notifications via Expo Push API β€” confirmations, reminders, cancellations, and admin broadcasts with per-user opt-out.

βš™οΈ Full Tech Stack

React Native 0.81 Expo 54 TypeScript 5.9 Expo Router 6 Context API JWT Authentication expo-secure-store expo-notifications expo-location Zod 3.23 date-fns 3.6 AsyncStorage 2.2 RBAC Geofencing Expo Push API REST API
← Back to Portfolio