The CruciDrive frontend is an Expo 57 / React Native 0.86 app built with TypeScript. It targets iOS, Android, and Web simultaneously through Expo Router’s file-based navigation system. State is managed with Zustand, real-time communication runs over Socket.io, and authentication is provided by Supabase Auth with phone OTP.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/DavidCevallos15/Crucidrive---APP/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before installing, make sure the following tools are available on your machine:- Node.js LTS (v20 or later recommended)
- Expo CLI — install globally if you haven’t already:
- A physical device with the Expo Go app installed, or a configured iOS Simulator / Android Emulator
- Access to the backend
.envvalues (Supabase URL, anon key, API base URL)
Installation
Create your .env file
Copy the provided template and fill in your credentials:Then open
.env and supply real values for each EXPO_PUBLIC_ variable. See Configuration for a full description of every variable.Key dependencies
| Package | Version | Purpose |
|---|---|---|
expo | ~57.0.1 | Managed workflow runtime |
expo-router | ~57.0.2 | File-based navigation |
react-native | 0.86.0 | Mobile framework |
@supabase/supabase-js | ^2.49.0 | Auth & database client |
socket.io-client | ^4.8.0 | Real-time WebSocket communication |
zustand | ^5.0.0 | Lightweight state management |
expo-blur | ~57.0.0 | Backdrop blur for glassmorphism UI |
react-native-reanimated | 4.5.0 | 60 fps declarative animations |
react-native-maps | 1.27.2 | Interactive map component |
expo-location | ~57.0.1 | Device GPS access |
App structure
CruciDrive uses Expo Router’s file-based routing. Routes are organized into two authenticated groups —(passenger) and (driver) — gated by an (auth) flow:
The
app.json registers scheme: "crucidrive" for deep linking. This means external links like crucidrive:// will open the app directly and can route to specific screens. This scheme is also used by expo-linking when handling OAuth or notification deep links.