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.
The native app communicates with d-sports-api through a typed HTTP client in lib/api/. All requests use Clerk bearer-token authentication and expect a normalized response envelope.
The client in lib/api/client.ts validates that every 2xx response includes a top-level success field. Responses missing it are rejected with an INVALID_RESPONSE_ENVELOPE code. This is referred to as strict envelope mode.
The user module (lib/api/user-api.ts) covers profile management and social features:
Method
Endpoint
Description
GET
/api/user
Get current user profile
PATCH
/api/user
Update user profile
GET
/api/user/onboarding
Check onboarding status
POST
/api/user/onboarding
Complete onboarding
GET
/api/user/sync-clerk
Sync user with Clerk
POST
/api/user/follow
Follow a user
DELETE
/api/user/follow
Unfollow a user
GET
/api/user/collectibles
Get user collectibles
GET
/api/user/search
Search users
GET
/api/user/top-users
Get top 10 fans
GET
/api/user/all
List all community users
GET
/api/user/check-username
Check username availability
The follow endpoint uses POST /api/user/follow with a { targetUserId } body. Unfollow uses DELETE /api/user/follow?targetUserId=<id>. The top-users endpoint returns a { topUsers: TopUser[] } shape inside the envelope data field.
Ecosystem overview
See how the native app fits with the PWA, site, and Mic’d Up.