Skip to main content

Overview

d-sports-engage-native (package name: engage-native) is the native mobile app for D-Sports. It mirrors the core PWA experience on iOS and Android: wallet, shop, leaderboard, locker room, and profile.

Tech stack

PackageVersion
Expo54.0
React Native0.81.5
React19.1.0
TypeScript5.9.2
Expo Router6.0
Clerk2.19
RevenueCat1.26
Thirdweb5.118
Zustand5.0
MMKV4.1
Reanimated4.1
Lucide Icons0.562

Features

  • Wallet — Tokens, holdings, pack opening, crypto checkout (via PWA backend)
  • Shop — Collectibles, cart, coin bundles, checkout
  • Leaderboard — Rankings and filters
  • Locker room — Social feed and engagement
  • Profile — User profile and settings
  • Theme — Dark/light mode (default dark)

Getting started

# Install dependencies
bun install

# Start development server
bunx expo start
# Press 'a' for Android, 'i' for iOS, or scan QR with Expo Go

# TypeScript check
bun tsc --noEmit
Configure environment variables (Clerk, RevenueCat, Thirdweb, API base URL) before running.

Project structure

app/
├── (auth)/              # Login/signup screens
├── (onboarding)/        # New user onboarding flow
├── (tabs)/              # Main tab navigation
│   ├── wallet.tsx       # Wallet screen (JSX only — logic in hook)
│   ├── shop.tsx         # Shop screen (JSX only — logic in hook)
│   ├── leaderboard.tsx  # Leaderboard screen
│   ├── locker-room.tsx  # Social feed
│   └── profile.tsx      # User profile
├── settings/            # Settings pages with nested modals/tabs
└── _layout.tsx          # Root layout with providers + auth protection

components/
├── wallet/              # Wallet sub-components (TokenRow, ActionModal, etc.)
├── shop/                # Shop sub-components (CartModal, CryptoCheckoutModal, etc.)
├── locker-room/         # Locker room components
├── layout/              # AppScreen wrapper (responsive web max-width)
└── ui/                  # Reusable UI primitives

hooks/
├── use-wallet-screen.ts # All wallet state, effects, and handlers
└── use-shop-screen.ts   # All shop state, effects, and handlers

lib/api/                 # API client modules (wallet, shop, user, checkout, etc.)

Architecture patterns

  • File-based routing via Expo Router with route groups (tabs), (auth), (onboarding)
  • Modular screen architecture — screen files contain only JSX; all state/effects/handlers live in dedicated hooks
  • Zustand + MMKV for global state with synchronous persistence
  • React Context for auth, collectibles, navbar visibility
  • API client layer in lib/api/ with MMKV cache fallback
  • Crypto checkout via Thirdweb SDK calling PWA backend for on-chain payments (Arbitrum, Ethereum, Polygon)
  • PWA-ready — responsive desktop layout, web hover states, keyboard nav

Branding

  • Base background (dark): #0a0e1a
  • Accent gold: #F5C842 / #FFD700
  • Primary blue: #4169E1

Ecosystem overview

See how the native app fits with the PWA, site, and Mic’d Up.