An iOS app for finding EV charging stations nearby — live availability, connector filtering by your vehicle, reviews, favorites, and notifications when a full station frees up.
- Live map search — find nearby EV chargers with real-time port availability pulled from Google Places
- Custom filtering — by charging speed, connector type, your specific EV model, or availability status
- Notify me when free — get notified (in-app and via push) the moment a full station opens up
- Reviews — read and leave reviews for individual stations, plus existing Google reviews shown inline
- Favorites — save stations you use often
- Recent searches — quickly jump back to a previously searched location
- Flexible sign-in — email/password, real SMS phone verification, or phone+password, with the ability to link an email onto a phone account afterward
- Guest mode — browse and search without an account
- Email verification & password reset
- Dark mode
- Miles/kilometers support, defaulted from your country at signup
- Animated splash & welcome screens
- UI: SwiftUI
- Maps & Places: Google Maps SDK for iOS, Google Places API (New)
- Station Data: OpenChargeMap API
- Backend: Firebase (Authentication, Firestore, Cloud Messaging)
- Ads: Google Mobile Ads (AdMob)
- Push Notifications: APNs via Firebase Cloud Messaging
- Xcode 16+
- An Apple Developer account (for push notifications / phone auth to work fully)
- API keys for: Google Maps/Places, OpenChargeMap, and a Firebase project
-
Clone the repo:
git clone https://github.com/hashiributt/quickvolt-ios.git
-
Open
applogotest.xcodeprojin Xcode -
Add your own secrets file — this repo doesn't include real API keys (they're gitignored on purpose). Copy the template and fill in your own values:
cp applogotest/Secrets.example.swift applogotest/Secrets.swift
Then open
Secrets.swiftand replace each placeholder with your real keys:googleMapsAPIKey— from Google Cloud Console (Maps SDK for iOS + Places API (New) enabled, billing active)openChargeMapAPIKey— free key from openchargemap.orgfirebase*values — from your own Firebase project's configuration
-
In Xcode, make sure
Secrets.swiftis added to your target, and confirmSecrets.example.swift's Target Membership is unchecked (it's a reference-only template, not meant to compile) -
Set up your own Firebase project:
- Enable Authentication (Email/Password and Phone sign-in methods)
- Enable Firestore
- Add the security rules below
- For push notifications: generate an APNs Authentication Key in your Apple Developer account and upload it to Firebase's Cloud Messaging settings
-
Build and run (min iOS 17)
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /reviews/{reviewId} {
allow read: if true;
allow create: if request.auth != null
&& request.auth.token.firebase.sign_in_provider != 'anonymous'
&& request.resource.data.userID == request.auth.uid;
allow update, delete: if request.auth != null
&& resource.data.userID == request.auth.uid;
}
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
match /stationReviews/{stationId} {
allow read: if true;
allow write: if request.auth != null;
}
}
}
applogotest/
├── EVFinderApp.swift # App entry point
├── SplashScreenView.swift # Animated launch screen
├── WelcomeView.swift # Sign in / sign up entry screen
├── LoginView.swift # Email/phone auth flows
├── ContentView.swift # Main map screen
├── ChargerDetailSheet.swift # Station detail view
├── AccountView.swift # Profile & settings
├── AuthManager.swift # Firebase Auth wrapper
├── ChargerService.swift # OpenChargeMap + Google Places integration
├── ReviewManager.swift # Firestore reviews
├── FavoritesManager.swift # Local favorites storage
├── NotifyQueueManager.swift # Notify-when-free queue
├── PushTokenManager.swift # FCM token management
├── AppTheme.swift # Colors, typography, button styles
└── Secrets.example.swift # Template for your own API keys
Add your preferred license here (e.g. MIT).