Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 55 additions & 12 deletions repositories/d-sports-engage-native.mdx
Original file line number Diff line number Diff line change
@@ -1,47 +1,90 @@
---
title: "d-sports-engage-native"
description: "Native iOS and Android app for D-Sports Engage. Expo 54, React Native, Clerk, RevenueCat, Thirdweb."
description: "Native iOS and Android app for D-Sports Engage. Expo 54, React Native 0.81, Clerk, RevenueCat, Thirdweb."

Check warning on line 3 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L3

Did you really mean 'Thirdweb'?
icon: "smartphone"
---

## 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.

Check warning on line 9 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L9

Did you really mean 'leaderboard'?

- **Run:** `bunx expo start` or `bun run start` — then press `a` for Android or `i` for iOS, or scan the QR code with Expo Go.
- **Run:** `bunx expo start` — then press `a` for Android or `i` for iOS, or scan the QR code with Expo Go.

## Tech stack

| Category | Technology |
| ---------- | ------------------------- |
| Framework | Expo 54, React Native 0.81, React 19 |
| Auth | Clerk (Expo) |
| Payments | RevenueCat (react-native-purchases) |
| Web3 | Thirdweb |
| State | Zustand |
| Storage | MMKV |
| UI | Lucide React Native |
| Navigation | Expo Router |
| Framework | Expo 54, React Native 0.81.5, React 19.1 |
| Auth | Clerk (Expo) 2.19 |
| Payments | RevenueCat 1.26 |
| Web3 | Thirdweb 5.118 |

Check warning on line 20 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L20

Did you really mean 'Thirdweb'?
| State | Zustand 5.0 |

Check warning on line 21 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L21

Did you really mean 'Zustand'?
| Storage | MMKV 4.1 |
| UI | Lucide React Native 0.562 |

Check warning on line 23 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L23

Did you really mean 'Lucide'?
| Navigation | Expo Router 6.0 |
| Animations | Reanimated 4.1 |
| Package | Bun |

## Features

- **Wallet** — Tokens, holdings, pack opening, crypto checkout (via PWA backend)

Check warning on line 30 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L30

Did you really mean 'crypto'?
- **Shop** — Collectibles, cart, coin bundles, checkout
- **Shop** — Collectibles, cart, coin bundles, crypto checkout (Arbitrum, Ethereum, Polygon)

Check warning on line 31 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L31

Did you really mean 'crypto'?

Check warning on line 31 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L31

Did you really mean 'Arbitrum'?

Check warning on line 31 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L31

Did you really mean 'Ethereum'?
- **Leaderboard** — Rankings and filters

Check warning on line 32 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L32

Did you really mean 'Leaderboard'?
- **Locker room** — Social feed and engagement
- **Locker room** — Social feed, quests, daily games (Pick 'Em, Spin Wheel, Guess the Player)
- **Profile** — User profile and settings
- **Onboarding** — New user onboarding flow
- **Settings** — Nested settings pages (accessibility, appearance, privacy, notifications, etc.)
- **Theme** — Dark/light mode (default dark)
- **PWA support** — Responsive desktop layout with web hover states

## Project structure

```
app/
├── (auth)/ # Login, signup, SSO callback, password reset
├── (onboarding)/ # New user onboarding flow
├── (tabs)/ # Main tab navigation (wallet, shop, leaderboard, locker-room, profile)
├── settings/ # Settings pages with nested modals/tabs
└── _layout.tsx # Root layout with providers + auth protection

components/
├── wallet/ # Wallet sub-components (TokenRow, HoldingRow, modals)
├── shop/ # Shop sub-components (CartModal, CryptoCheckoutModal)
├── locker-room/ # Locker room components (quests, games, feed)
├── leaderboard/ # Leaderboard components
├── settings/ # Settings components
├── ui/ # Reusable UI primitives
└── layout/ # AppScreen wrapper (responsive web max-width)

hooks/
├── use-wallet-screen.ts # Wallet state and handlers
├── use-shop-screen.ts # Shop state and handlers
└── use-feed-section.ts # Feed state and handlers

lib/api/ # API client modules (wallet, shop, user, quests, checkout, etc.)
context/ # React contexts (user, collectibles, navbar visibility)
```

## Getting started

1. Clone the repository and run `bun install`.
2. Configure environment (Clerk, RevenueCat, Thirdweb, API base URL) per repo README.

Check warning on line 71 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L71

Did you really mean 'Thirdweb'?
3. Run `bunx expo start`.
4. For development builds: `bun run build:dev` (EAS) or run with Expo dev client.
5. For native iOS builds: use Xcode Cloud CI scripts in `ios/ci_scripts/`.

Check warning on line 74 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L74

Did you really mean 'Xcode'?

The app targets both native and web (responsive) and uses the same backend (d-sports-api) as the PWA for API and checkout flows.

## Architecture patterns

- **File-based routing** via Expo Router with route groups `(tabs)`, `(auth)`, `(onboarding)`
- **Modular screen architecture** — screen files contain only JSX; state/effects/handlers live in dedicated hooks
- **Extracted sub-components** — wallet and shop screens decomposed into `components/wallet/` and `components/shop/`
- **Zustand + MMKV** for global state with synchronous persistence

Check warning on line 83 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L83

Did you really mean 'Zustand'?
- **API client layer** in `lib/api/` with MMKV cache fallback
- **Crypto checkout** via Thirdweb SDK calling PWA backend for on-chain payments

Check warning on line 85 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L85

Did you really mean 'Crypto'?

Check warning on line 85 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L85

Did you really mean 'Thirdweb'?
- **PWA-ready** — `display: standalone`, responsive desktop layout, web hover states

<Card title="Ecosystem overview" icon="map" href="/repositories/ecosystem-overview">
See how the native app fits with the PWA, site, and Mic'd Up.

Check warning on line 89 in repositories/d-sports-engage-native.mdx

View check run for this annotation

Mintlify / Mintlify Validation (chronoscyberchronicles) - vale-spellcheck

repositories/d-sports-engage-native.mdx#L89

Did you really mean 'Mic'd'?
</Card>