A premium NBA statistics app for iOS, built with React Native and Expo. Focused on unique insights, clean design, and real-time data.
- Swish Score (GIS) — Proprietary Game Impact Score with tier labels (MVP, Elite, Starter, etc.). Shows who dominated each game at a glance.
- Player Performance Cards — View any player's game stats on a shareable card; save as PNG to your device or share.
- AI Game Summary — Post-game AI match recaps (AI INSIGHTS) for finished games.
- Player Comparison — Side-by-side stat comparison with visual bars (points, rebounds, FG%, etc.).
- Chinese-Localized — UI and translated NBA news for Chinese-speaking users.
- Games Dashboard — Today's games with real-time status, marquee highlighting, and date navigation.
- Game Details — Collapsing header, live auto-refresh (10s for live games), period scores, team stats.
- Statistical Comparison — FG%, 3P%, Points in Paint, rebounds, assists, etc., with proportional bars.
- Pre-Game Context — Season series history, injury reports by team.
- Team Profiles — Roster, schedule, recent results, team leaders.
- Player Profiles — Career stats, bio, game logs.
- Top Players Leaderboard — League leaders by category with rank badges.
- NBA News Feed — Infinite-scroll feed of translated NBA news.
- Conference Standings — East/West rankings with playoff seeding badges.
- About — Version, legal links (Privacy Policy), data source disclaimer.
- Local team logo assets for fast loading.
- Network resilience via
NetInfofor offline/online recovery. - Dark-first design with consistent motion and layout.
- Private backend (
nba-stats-api) for data aggregation.
- Framework — Expo SDK 54 (React Native)
- Routing — Expo Router
- Data — TanStack React Query
- Network —
@react-native-community/netinfo - Cards —
react-native-view-shot,expo-media-library - Backend —
nba-stats-api(Express/Node.js)
npm installSet API_BASE_URL in src/services/api.ts:
- Simulator —
http://localhost:3000 - Physical Device — Your local IP (e.g.
http://192.168.x.x:3000) - Production — Your deployment URL
npx expo start -- --clearswish/
├── app/
│ ├── _layout.tsx
│ ├── (tabs)/
│ │ ├── index.tsx # Games feed
│ │ ├── teams.tsx # Standings
│ │ ├── players.tsx # Stats leaderboard
│ │ ├── news.tsx
│ │ └── about.tsx
│ ├── game/[id].tsx
│ ├── game/[id]/player/[playerId].tsx # Performance Card
│ ├── playerComparison/[id1]/[id2].tsx
│ ├── team/[id].tsx
│ └── player/[id].tsx
├── src/
│ ├── components/
│ ├── services/
│ ├── constants/
│ ├── types/
│ └── utils/
└── assets/
- Core Games Feed
- Game Details & AI Summary
- Standings
- Team & Player Profiles
- News Feed
- Player Performance Cards
- Player Comparison
- App Store readiness
- Search, Favorites, Personalization
- Monorepo docs index:
../../docs/README.md - API v1 response schemas:
../../docs/API_V1_SCHEMAS.md
Swish is not affiliated with ESPN or the NBA. All data is aggregated from third-party sources.