A mobile app for tracking public transport journeys, built from personal experience as a former commuter between Gading Serpong, Tangerang and Kemang, South Jakarta.
- Compared to the previous Transport Tracker repo, this version utilizes SQLite instead of Supabase to store all your transport data locally on your device. You can export and import your data in JSON format at any time.
- Add or remove data without internet connection. Features like map display and GPS tracking requires internet connection.
- Add multiple vehicle types for stops (ex: metro on top, bus stop on the bottom).
Disclaimer: Currently tested on Android only. iOS compatibility not verified.
- React Native (0.79.4) - Cross-platform mobile development
- Expo (~53.0.13) - Development platform and toolchain
- @react-navigation/native - Navigation framework
- @op-engineering/op-sqlite - High-performance local SQLite database
- react-native-mmkv - Fast, secure key-value storage for app preferences
- expo-file-system - File operations and local storage management
- @maplibre/maplibre-react-native - Privacy-focused mapping (Google Maps alternative)
- expo-location - Location services for journey tracking
- react-native-calendars - Calendar functionality for journey history
- react-native-reanimated - Smooth animations and gestures
- expo-crypto - Cryptographic functions for data security
- Node.js (v18 or newer)
- npm or yarn
- Expo CLI (install with
npm install -g eas-cli
) - Android Studio (for Android development)
- An Android device or emulator
-
Clone the repository
git clone [your-repo-url] cd transport-tracker-app
-
Install dependencies
npm install
-
Start the development server
npx expo start
-
Run on your device
- Scan the QR code with Expo Go app (Android)
- Or press
a
to run on Android emulator
- This project uses file-based routing
- The app works offline - no backend setup required!
- Build your own debug apk to avoid Expo-related error
First-time setup:
- Install EAS CLI:
npm install -g eas-cli
- Login to Expo:
eas login
- Configure your project:
eas build:configure
Building:
-
Pull environment variables (if using EAS)
npx eas env:pull --environment preview
-
Update app with latest changes
npx eas update --environment preview
-
Build APK
npx eas build --profile preview --platform android
For local development builds:
-
Generate native code
npx expo prebuild --clean
⚠️ Important: Close any runningnpx expo start
instances before running this command to avoid Gradle import errors. -
Open in Android Studio
- Open the generated
android
folder in Android Studio - Let Gradle sync complete
- Build and run the project
- Open the generated
- The app automatically creates and manages its SQLite database on first launch. No manual setup required!
- Specify
EXPO_PUBLIC_MAP_STYLE
andEXPO_PUBLIC_MAP_STYLE_DARK
on env file to load default map and map with dark mode. MapLibre currently has limited functionalities with React Native's New Architecture.