Loop Pulse is a real-time, context-aware city intelligence platform for Chicago. This repository contains the mobile client, built to deliver low-latency AI interactions, real-time data visualizations, and high-fidelity native APIs (haptics, audio streaming).
- Framework: React Native / Expo (SDK 50+)
- Language: TypeScript
- Styling: React Native StyleSheet & Context API for dynamic theming
- Native Modules:
expo-av(Audio playback/recording),expo-file-system(Caching),expo-haptics(Tactile feedback)
- Harold (Conversational AI): Siri-style voice and text assistant. Features push-to-talk recording, real-time Markdown rendering, and dynamic source attribution chips.
- Perplexity-Style Maps: Parses AI responses to generate rich, native Google Maps cards using
Linkingfor deep-linking into the native OS map application. - Signals Dashboard: A high-fidelity "Blueprint" grid utilizing the
AnimatedAPI for radar pulses, avoiding the overhead and instability of heavy third-party map SDKs. - Live Transit & CPD Drawer: Real-time integration of CTA Train ETAs and Official Chicago Police Department (CPD) incident data, cleanly segmented from crowdsourced community reports.
- Expo & React Native: Chosen for rapid cross-platform compilation and the ability to instantly tap into device hardware (Microphone, Haptics) without writing custom Swift/Kotlin bridges.
- Pre-download Audio Strategy: Instead of attempting to stream raw HTTP audio chunks (which causes
-1008iOS player crashes on spotty hackathon Wi-Fi), the app usesexpo-file-systemto download the TTS payload to a temporary cache before playback, ensuring 100% stability during demos. - AI-Assisted Development: The frontend architecture, state management, and complex
Animatednative driver loops were scaffolded and refined utilizing Gemini for structural problem-solving and Windsurf/GitHub Copilot for rapid inline component generation.
- Clone the repository and run
npm install - Configure
.env.localwith the required API keys (e.g., Azure Maps static tile key if applicable). - Run
npx expo startornpm expo start --tunneland scan the QR code using the Expo Go app.