Rydr — Project Overview
Ride together. Save more.
Inspiration
Students who don't own cars struggle with daily commutes, weekend trips, and late‑night events. Buses are time‑bound, rideshares are expensive, and ad‑hoc carpools are unreliable. We wanted a simple, safe, and budget‑friendly way for students to coordinate rides within their campus communities.
What it does
Rydr helps students and local communities coordinate door‑to‑door carpools:
- Offer a ride: set start/end locations, date/time, seat count, parking pass availability, and price per seat.
- Find a ride: browse and search for upcoming rides that match your destination and timing.
- In‑app chat for each ride: coordinate pickup details and stay in touch with your driver or riders.
- AI‑powered destination ideas: surface popular, seasonal, and nearby places to go, personalized by region.
- Real‑time updates: rides, bookings, and chats sync instantly across devices.
- Sustainability tracking: estimate miles carpooled
- Leaderboards and gamification: user leaderboards, streaks, and badges for miles shared and rides hosted.
How we built it
- Frontend: React Native + Expo (TypeScript), Expo Router, modern RN UI components and gestures.
- Backend/data: Firebase Authentication and Cloud Firestore for user accounts, rides, bookings, and chat.
- Location & places: Google Maps Places Autocomplete and Place Details for high‑quality, canonical addresses.
- AI: Seasonal and region‑aware destination suggestions using a lightweight prompt layer over the Gemini Flash 2.5 Preview model.
- Notifications & device: Expo Notifications, Device, and Location to support a mobile‑first experience.
Key implementation details:
- Canonical geocoding: When a ride is posted, we resolve and store formatted addresses and place IDs to improve matching and deduping.
- Debounced autocomplete: We throttle network calls and use session tokens for accurate Google Places suggestions.
- Consistency with transactions: We use Firestore transactions to safely update bookings and seat counts.
- Real‑time listeners: Live queries keep rides, bookings, and chats in sync without manual refresh.
Challenges we ran into
- Getting location permissions and fallbacks right across platforms.
- Keeping Firestore data consistent while handling concurrent bookings and cancellations.
- Managing Google Places quotas and ensuring high‑quality suggestions on slow networks.
- Designing a clean, accessible mobile UI with fast interactions and minimal friction.
- Building ride‑scoped chat while preserving privacy and reducing notification noise.
Accomplishments that we're proud of
- End‑to‑end ride flow: offering, discovering, booking, and managing rides with real‑time updates.
- In‑app chat: a ride‑scoped conversation that helps drivers and passengers coordinate smoothly.
- AI suggestions: destination cards that feel timely and relevant, based on user region and seasonality.
- A polished, fast mobile experience with sensible defaults and thoughtful empty/loading states.
What we learned
- Strong typing in a React Native app (TS + hooks) pays off for complex, real‑time state.
- Expo Router simplifies navigation and deep links in a multi‑screen mobile app.
- Firestore rules and transactions are critical for safety in collaborative features (rides, seats, chat).
- Google Places session tokens and debouncing are essential for accurate, cost‑effective autocomplete.
- Small UX touches (press states, accessible labels, helpful errors) materially improve trust and usability.
- Users value cost transparency and availability: clearly showing price per seat and remaining seats reduces drop‑off during booking.
- Clear pickup logistics matter: suggested pickup windows, nearby landmarks, and quick map previews outperform free‑form text alone.
- Trust signals increase conversion: verified school email and basic driver profiles make riders more comfortable booking with new drivers.
- Chat etiquette benefits from structure: lightweight templates for first contact and confirmations reduce back‑and‑forth and no‑shows.
- Notification tuning is critical: batching ride updates and offering quiet hours beats per‑message pings in reducing churn.
- Accessibility and internationalization count: larger tap targets, voiceover labels, and flexible date/time formats improve usability for more users.
What's next for Rydr
- Trust & safety: identity/driver verification, ratings/reviews, and report workflows.
- Payments: seamless cost split and reimbursements (e.g., Stripe) with automatic per‑seat settlement.
- Smarter matching: suggest riders to drivers (and vice‑versa) based on route overlap and minimal detours. $$ \min \sum_{r \in \text{riders}} \bigl( d(\text{driver route with } r) - d(\text{driver base route}) \bigr) $$
- Maps and pickup UX: shared live locations, suggested pickup points, and clearer route previews.
- Campus networks: private circles (clubs, dorms, classes) with invite links and moderation controls.
- More AI assist: optimal pickup windows, template messages in chat, and proactive trip reminders.
Built With
- expo-router
- expo.io
- firebase
- firebase-authentication
- firestore
- google-maps
- react-native
- typescript
Log in or sign up for Devpost to join the conversation.