Project

Fix My Ride

Built by Akshat Srivastava (iamkahanikaar)

An iOS and CarPlay emergency assistance app that gives drivers quick access to national helplines, roadside assistance contacts, personal emergency contacts, car maintenance education, offline caching, Firebase-backed authentication, and one-tap calling.

Overview

FixMyRide is an iOS and CarPlay emergency assistance app built to help drivers quickly access national emergency helplines, roadside assistance contacts, personal emergency contacts, and car maintenance information from one place. The app is designed around emergency-first access, offline-friendly data loading, and in-vehicle usability through CarPlay.

Problem

Drivers often need emergency numbers or roadside assistance contacts during stressful situations, but this information is scattered across websites, brand pages, saved contacts, or search results. In low-connectivity situations, finding the right helpline or RSA number becomes even harder. FixMyRide solves this by bringing emergency contacts, brand-wise roadside assistance, dashboard warning education, and personal emergency contacts into one focused mobile experience.

My Role

I designed and built the iOS app architecture, SwiftUI user flows, Firebase-backed data handling, CarPlay experience, offline caching logic, authentication flow, profile image management, and AdMob integration. I also structured the codebase using MVVM with separate managers for authentication, roadside assistance, car bytes, calls, profile images, loading states, and error handling.

What I Built

I built the complete authentication flow for FixMyRide, including email/password login, user registration, mandatory email verification, password reset, and session handling with an offline-aware fallback so returning users can still access key app areas when connectivity is unreliable. The home experience brings together 9 national emergency helplines, brand-wise roadside assistance contacts loaded from Firebase, and one-tap calling for both emergency and RSA numbers. I also built the Car Bytes section for car maintenance articles and the Know Your Dashboard feature to help users understand dashboard warning lights through educational content. I added a Favourites section where users can save up to 3 personal emergency contacts using native Contacts integration. The Settings screen includes personal information, change password, legal documentation links, sign out, and profile image management. For profile images, I implemented PhotosPicker-based image selection, Firebase Storage uploads, automatic image compression, upload progress tracking, real-time profile image updates, and cache cleanup on sign out. I also built the CarPlay interface for accessing emergency helplines and roadside assistance contacts inside the vehicle, along with Google AdMob banner and interstitial ad support and offline-first caching for important app data.

Technical Highlights

FixMyRide is built with SwiftUI using an MVVM architecture, with separate managers for authentication, roadside assistance data, car content, calling, profile images, loading states, errors, and push notification token handling. Firebase Authentication powers login, signup, email verification, password reset, and session validation. Cloud Firestore stores user data, roadside assistance contacts, car bytes, and dashboard warning content, while Firebase Storage handles profile image uploads with automatic compression under 1MB. I implemented Firebase Cloud Messaging token management for push notification support and FileManager-based offline caching for RSA details and dashboard warning data, allowing important content to load even when the network is unavailable. The CarPlay experience uses CPTemplateApplicationScene with separate tabs for national helplines and roadside assistance contacts. I added authentication checks so unauthenticated users see a sign-in required state, and optimized CarPlay image loading through preloading, resizing, and caching. For monetization, I wrapped Google AdMob banner ads in SwiftUI using UIViewRepresentable and built an interstitial ad manager with singleton-based loading, ready-state tracking, and automatic reload after display. Network and data operations use async/await and Task-based concurrency, with centralized loading and error managers to keep the user experience consistent.

Stack

Swift, SwiftUI, MVVM, Firebase Authentication, Cloud Firestore, Firebase Storage, Firebase Cloud Messaging, CarPlay, Contacts, PhotosUI, Google AdMob, UserDefaults, FileManager caching, async/await, Combine, Xcode

What I Learned

FixMyRide taught me how to think beyond normal app screens and design for real-world stressful situations where speed, reliability, and offline access matter. I learned how to structure a larger SwiftUI app with MVVM, Firebase services, app managers, offline caching, profile image storage, and CarPlay support. It also gave me experience with production-adjacent concerns like authentication gates, cache cleanup, image compression, legal links, push token handling, and monetization through AdMob.