The iOS and Android companion to StockTracker Web. Same portfolio data, optimised for your phone — with biometric unlock, push notifications, and an Android home screen widget showing your portfolio balance at a glance.
This app connects to the StockTracker backend. You need the web app running (or deployed) before the mobile app will work.
- Full portfolio overview — holdings, P&L, cost basis
- Performance charts with period comparison
- Fundamentals and analysis for each holding
- Watchlist for stocks you're keeping an eye on
- Cash flow tracking
- Community leaderboard
- Biometric unlock (Face ID / fingerprint)
- Push notifications
- Android home screen widget — live portfolio balance, updated every 30 min
- Dark and light mode (follows system)
- Google OAuth login via the web backend
| Layer | What |
|---|---|
| Framework | Expo 57 / React Native 0.86 |
| Routing | Expo Router (file-based, same feel as the web) |
| Data fetching | TanStack React Query |
| Auth | Better Auth + @better-auth/expo |
| Animations | React Native Reanimated |
| Charts | D3 (d3-scale, d3-shape) |
| Icons | Lucide React Native |
| Widget | react-native-android-widget |
| Builds | EAS Build (Expo's cloud CI) |
- Node.js 20+
- Bun or npm
- Expo Go on your phone for development, or Android Studio / Xcode for a local build
- The StockTracker web app running locally or deployed — the mobile app points to its API
From this directory:
npm installcp .env.example .env.localSet EXPO_PUBLIC_API_URL to wherever the web backend is running:
# Local dev (physical Android device via adb reverse)
EXPO_PUBLIC_API_URL=http://localhost:8080
# Production
EXPO_PUBLIC_API_URL=https://stocktracker.derekyuan.co.uk
Physical Android device over USB: run adb reverse tcp:8080 tcp:8080 first so the device can reach localhost. Don't use your LAN IP — Google OAuth won't accept it as a redirect URI.
npm startScan the QR code with Expo Go (Android) or the Camera app (iOS). For a full native build (widgets, biometrics, push notifications), use a dev client build instead — see EAS below.
EAS Build is Expo's cloud build service. It handles signing, native compilation, and distribution without needing Xcode or Android Studio locally.
# Install EAS CLI
npm install -g eas-cli
# Log in
eas login
# Development build (runs on device, includes native modules)
eas build --profile development --platform android
eas build --profile development --platform ios
# Preview build (internal testing)
eas build --profile preview --platform all
# Production build
eas build --profile production --platform allBuild profiles are defined in eas.json.
app/
(tabs)/ # Main tab screens (dashboard, holdings, analysis, etc.)
_layout.tsx # Root layout and auth guard
src/
components/ # Shared UI components
theme/ # Design tokens and colours
widget/ # Android home screen widget
assets/ # Icons, splash screen, fonts
- Web app: github.com/derekyuan1000/StockTracker — TanStack Start web app and shared backend API
See CONTRIBUTING.md for code style, commit format, and PR guidelines.
MIT