Skip to content

aashir-athar/Crypto-Price-Tracker

Repository files navigation

Crypto Price Tracker logo — real-time cryptocurrency price tracker app

Crypto Price Tracker

A real-time cryptocurrency price tracker for active traders — sub-second ticks, momentum-ranked gainers, a paper portfolio with live P/L, and threshold price alerts.

Stars License Last commit Top language Issues

Expo SDK 54 React Native TypeScript iOS Android

Features · Getting Started · Usage · Report Bug · Request Feature


Crypto Price Tracker is an open-source, cross-platform cryptocurrency price tracker mobile app built with React Native, Expo SDK 54, and TypeScript. It streams hundreds of Bitget USDT-perpetual pairs every second, ranks the coins moving right now across 1-minute, 1-hour, and funding-rate boards, and runs a paper-trading portfolio with live unrealized P/L. Designed to feel like a precision instrument — calm under pressure, fast even on a 2 GB Android phone.

Track live crypto prices, build a watchlist, paper-trade a portfolio, and get notified the moment a coin breaks your threshold — all from one native iOS & Android app.

🚧 Active development. The core app (markets, gainers, watchlist, portfolio, alerts, coin detail) is implemented and runnable. Roadmap items below are explicitly marked.


✨ Features

Feature Description
Live price tape Sub-second ticks across hundreds of Bitget USDT-perpetual pairs, with a UI-thread flash-on-tick so you catch what just moved.
📈 Momentum gainers Three boards — 1-minute, 1-hour, and funding rate — recomputed as ticks roll in.
Watchlist Star any coin; persisted to AsyncStorage so it survives app restarts.
💼 Paper portfolio Add positions with entry + quantity, see live unrealized P/L per row and across the whole book.
🔔 Threshold alerts Configurable 24h % move + short-window % alerts via local push notifications, deduped per coin and direction.
🔍 Coin detail Live price hero, 60-minute sparkline, momentum tiles, 24h high/low, funding rate, and watchlist toggle.
🎨 Theming System / light / dark with persistence and semantic up/down colors tuned for contrast in both themes.
🚀 Instant cold start TanStack Query cache persisted to AsyncStorage, so reopens show last-known prices before the first poll lands.

🛠️ Tech Stack

Category Technology
Framework Expo SDK 54 + React Native 0.81 (New Architecture + React Compiler)
Language TypeScriptstrict, noUncheckedIndexedAccess, noImplicitOverride
Navigation Expo Router 6 — file-based, typed routes
Server state TanStack Query 5 + AsyncStorage persistence (1s refetch)
Client state Zustand 5 — watchlist, portfolio, settings, momentum, alerts
Lists @shopify/flash-list — 60+ FPS on a 500-row feed
Animations Reanimated 4 + react-native-worklets
Validation Zod 4 — portfolio input schemas
Charts react-native-svg — custom Bezier sparkline
Notifications expo-notifications — local threshold alerts
Surfaces expo-glass-effect (iOS 26+) · expo-blur (iOS<26) · flat (Android)
Fonts Inter · Space Grotesk · JetBrains Mono (tabular figures for prices)

🚀 Getting Started

Prerequisites

  • Node.js >= 20.18 (LTS)
  • npm >= 10 (or pnpm / Bun)
  • Xcode 16+ for iOS · Android Studio with API 35 for Android
  • Expo CLI runs via npx — no global install needed

Installation

git clone https://github.com/aashir-athar/Crypto-Price-Tracker.git
cd Crypto-Price-Tracker
npm install

Run

npm start

Then, in the Expo dev server:

  • Press i to open the iOS simulator
  • Press a to open the Android emulator
  • Or scan the QR code with Expo Go on a physical device

For full expo-glass-effect (iOS 26 Liquid Glass) parity, build a dev client with npx expo prebuild && npx expo run:ios / npx expo run:android. See zero-to-deploy.md for the full fresh-machine-to-store guide.


📖 Usage

Run the app, then explore the bottom tabs:

npm run ios      # build & launch on the iOS simulator
npm run android  # build & launch on the Android emulator
npm run web      # web preview (best-effort)
npm run lint     # lint across the tree
npx tsc --noEmit # strict TypeScript typecheck

Typical flow once the app is open:

  1. Markets — browse the full live Bitget USDT-perpetual list; tap any coin for detail.
  2. Gainers — switch between 1m / 1h / funding boards to see what's moving now.
  3. Watchlist — star coins to pin them; the list persists across restarts.
  4. Portfolio — add a position (entry + quantity) and watch live unrealized P/L update with the tape.
  5. Settings — configure threshold alerts and theme.

The data plane is a single useTickers query refetching every second; useMomentumIngest writes each tick into a rolling per-coin buffer, and useAlertsRunner checks every coin against your thresholds and fires a local notification on breach.

Swap in a different exchange (Binance, Bybit, OKX)

The app is exchange-agnostic past the client. Edit src/api/bitget.ts (or add a sibling), make it return Coin[] matching the existing shape, then point useTickers at it. Zod validates the payload, so a mismatched shape fails loudly rather than silently.


🗺️ Roadmap

  • Live ticker stream with 1s refresh
  • Momentum-ranked gainers (1m / 1h / funding)
  • Watchlist persisted to AsyncStorage
  • Paper portfolio with live unrealized P/L
  • Threshold-based push alerts (24h + short window)
  • System / light / dark theme with persistence
  • Coin detail with sparkline + momentum tiles
  • Multi-exchange aggregation (Binance, Bybit, OKX)
  • Drag-to-reorder watchlist
  • Export portfolio to CSV
  • WebSocket stream to replace REST polling on the foreground tab

🤝 Contributing

Contributions are welcome — first-time contributors especially. Open an issue first for any major change.

  1. Fork the repo
  2. Create a branch (git checkout -b feat/your-feature)
  3. Commit using Conventional Commits (feat:, fix:, chore: …)
  4. Run npx tsc --noEmit && npm run lint until clean
  5. Push and open a Pull Request into main

📄 License

Distributed under the MIT License. See LICENSE for details.


👤 Author

Aashir Athar

GitHub LinkedIn X


If this crypto price tracker helped you, consider leaving a ⭐ — it genuinely helps the project reach more developers.

Built by Aashir Athar with React Native, Expo & TypeScript.

Keywords: cryptocurrency price tracker · crypto portfolio tracker · React Native crypto app · Expo SDK 54 · Bitget USDT-perpetual · live crypto prices · Bitcoin Ethereum price alerts · iOS Android mobile app · TanStack Query · Zustand · TypeScript

About

Real-time cryptocurrency price tracker app built with React Native, Expo SDK 54 & TypeScript. Live Bitget USDT-perpetual ticks, momentum gainers, paper portfolio P/L, price alerts.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors