This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Babel (or oxc when used in rolldown-vite) for Fast Refresh
- @vitejs/plugin-react-swc uses SWC for Fast Refresh
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the TS template for information on how to integrate TypeScript and typescript-eslint in your project.
############################## FOR IOS
- Xcode 15 or later
- iOS 16.0+
- CocoaPods
- A Firebase project
- A Google Maps API key
git clone https://github.com/WSU-4110/Fleet-App.git
cd Fleet-App/iOScd Fleet-Tracker
pod installOpen the project using the .xcworkspace file — not .xcodeproj:
open Fleet-Tracker.xcworkspace- Go to Firebase Console
- Select your project → iOS app
- Download
GoogleService-Info.plist - Drag it into the
Fleet-Trackerfolder in Xcode (make sure "Copy items if needed" is checked)
In AppDelegate.swift or wherever GMSServices.provideAPIKey is called, replace with your key:
GMSServices.provideAPIKey("YOUR_GOOGLE_MAPS_API_KEY")You can get a key from Google Cloud Console — enable the Maps SDK for iOS and Roads API.
Make sure these keys are present in Info.plist:
NSLocationWhenInUseUsageDescription
NSLocationAlwaysAndWhenInUseUsageDescription
NSLocationAlwaysUsageDescription
NSCameraUsageDescription
NSPhotoLibraryUsageDescription
NSPhotoLibraryAddUsageDescription
- Target → Signing & Capabilities
- Add Background Modes → check Location updates
- Add Push Notifications (if using notifications)
Copy the rules from firestore.rules in the repo into your Firebase Console → Firestore → Rules tab.
These are created automatically when users sign up and use the app:
users/
employeeUsers/
employeeIndex/
usernameIndex/
businesses/
└── employees/
└── vehicles/
└── timesheets/
└── expenses/
└── notifications/
└── speedAlerts/
Add a composite index for speed alerts:
- Collection:
speedAlerts - Fields:
read(Ascending),timestamp(Descending)
- Connect a real iPhone (push notifications and GPS do not work on the simulator)
- Select your device in Xcode's device picker
- Press Cmd + R to build and run
- Sign up as an Admin first to create a business
- Share the access code with drivers so they can sign up as employees
- Admin view — live map of all clocked-in drivers with GPS pins, speed, and mileage
- Employee view — clock in/out, mileage tracking, break management, expense submission
- Fleet management — add and manage vehicles with photos
- Speed monitoring — automatic alerts when drivers exceed speed limits
- Notifications — clock-in/out events logged and visible to admin
- Expense reports — employees can submit receipts with photos
- Subscription management — Pro/Enterprise tier plans
- Swift / SwiftUI
- Firebase Auth, Firestore, Storage
- Google Maps SDK for iOS
- Google Roads API (speed limits)
- CoreLocation
Drivers not showing on admin map — make sure the employee has location permission set to "Always" in iOS Settings → Fleet Tracker → Location.
App crashes when adding a vehicle — confirm NSCameraUsageDescription and NSPhotoLibraryUsageDescription are in Info.plist.
Mileage not updating — GPS must be active. Test on a real device while moving.
Push notifications not working — requires APNs key uploaded to Firebase Console → Project Settings → Cloud Messaging.