From f4bf2769a5f24575a3e53515456c04ec5e976a0a Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2026 06:10:16 +0000 Subject: [PATCH] docs: expand d-sports-engage-native documentation with project structure and architecture Generated-By: mintlify-agent --- repositories/d-sports-engage-native.mdx | 82 ++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 7 deletions(-) diff --git a/repositories/d-sports-engage-native.mdx b/repositories/d-sports-engage-native.mdx index f3a816f..4dd5f5f 100644 --- a/repositories/d-sports-engage-native.mdx +++ b/repositories/d-sports-engage-native.mdx @@ -8,7 +8,19 @@ icon: "smartphone" **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. -- **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. +## Getting started + +```bash +# 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 +``` ## Tech stack @@ -24,6 +36,45 @@ icon: "smartphone" | Navigation | Expo Router | | Package | Bun | +## Project structure + +```tree +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 (Button, TextField, etc.) +└── Icon/ # Icon wrapper using lucide-react-native + +hooks/ +├── use-wallet-screen.ts # All wallet state, effects, and handlers +├── use-shop-screen.ts # All shop state, effects, and handlers +└── useScrollHandler.ts # Scroll-based navbar visibility + +lib/ +├── api/ # API client modules (wallet, shop, user, checkout, etc.) +├── revenuecat/ # RevenueCat in-app purchases provider +└── utils.ts # Shared utilities + +context/ +├── user-context.tsx # Authentication, user profile, team membership +├── collectibles-context.tsx # Owned packs and items +└── navbar-visibility-context.tsx +``` + ## Features - **Wallet** — Tokens, holdings, pack opening, crypto checkout (via PWA backend) @@ -33,14 +84,31 @@ icon: "smartphone" - **Profile** — User profile and settings - **Theme** — Dark/light mode (default dark) -## Getting started +## 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 +- **PWA-ready** — `display: standalone`, responsive desktop layout, web hover states + +## Checkout and payments + +| Method | Provider | Platform | +| ------ | -------- | -------- | +| Fiat | RevenueCat | Apple IAP (native), Google Play (native), Stripe (web) | +| Crypto | Thirdweb | Arbitrum (default), Ethereum, Polygon | + +The crypto checkout flow calls the PWA backend at `POST /api/checkout/crypto` and `POST /api/checkout/crypto/verify`. -1. Clone the repository and run `bun install`. -2. Configure environment (Clerk, RevenueCat, Thirdweb, API base URL) per repo README. -3. Run `bunx expo start`. -4. For development builds: `bun run build:dev` (EAS) or run with Expo dev client. +## Branding -The app targets both native and web (responsive) and uses the same backend (d-sports-api) as the PWA for API and checkout flows. +- **Base background (dark):** `#0a0e1a` +- **Accent gold:** `#F5C842` / `#FFD700` +- **Primary blue:** `#4169E1` +- Default theme is dark mode See how the native app fits with the PWA, site, and Mic'd Up.