Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

QuickVolt

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.

Features

  • 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

Tech Stack

  • 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

Getting Started

Prerequisites

  • 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

Setup

  1. Clone the repo:

    git clone https://github.com/hashiributt/quickvolt-ios.git
  2. Open applogotest.xcodeproj in Xcode

  3. 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.swift and 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.org
    • firebase* values — from your own Firebase project's configuration
  4. In Xcode, make sure Secrets.swift is added to your target, and confirm Secrets.example.swift's Target Membership is unchecked (it's a reference-only template, not meant to compile)

  5. 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
  6. Build and run (min iOS 17)

Firestore Security Rules

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;
    }
  }
}

Project Structure

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

License

Add your preferred license here (e.g. MIT).

About

QuickVolt iOS App

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages