Project Highlights
- Built a cross-platform React Native app with Expo and TypeScript that tracks GPS speed at 1-second intervals using expo-location, with a dual-calculation fallback combining sensor data and derived velocity.
- Integrated the OpenStreetMap Overpass API to fetch live road speed limits within a 300m radius, parsing road class defaults, directional limits, school zone conditional tags, and time-based rules (e.g. school hours only).
- Implemented custom haversine and bearing algorithms from scratch for road proximity detection and upcoming speed limit prediction with a 220m pre-warn distance — no external geo library used.
- Designed a multi-modal alert system combining expo-speech voice TTS ('Reduce speed now'), expo-haptics, and visual state indicators (Safe / Warning / Alert) with configurable +5/+10/+15 km/h thresholds.
- Built alert fatigue prevention logic requiring 4 seconds of sustained overspeed before triggering, plus a 25-second cooldown between alerts to avoid driver distraction.
- Optimized performance using useRef-based tracking for non-render state, debounced API calls with 7-second and 70-metre movement thresholds, and a 35-second staleness cache for speed limit data.
- Shipped cross-platform builds via EAS Build for iOS App Store and Android Play Store, with a demo mode that simulates drives without GPS for testing and development.
