School Bus Tracker
Live fleet tracking, QR attendance & one-tap SOS for parents, drivers & admins
Give parents live bus visibility and digitise attendance — one app, three roles, many schools.
A multi-tenant React Native + Firebase app for school transport with three role experiences — parent, driver, and admin — sharing one Firestore data model. Drivers stream high-accuracy background location that survives a locked screen, scan student QR codes for idempotent per-day attendance, and raise a one-tap SOS; parents watch the bus move live on a map with per-stop ETAs computed client-side from haversine distance and live speed; and admins run a fleet dashboard with route, student, and driver management. Six Cloud Functions turn Firestore writes into FCM push notifications for pickup/drop, trip start/end, schedule delays, and emergency SOS — all scoped by schoolId so a single deployment serves many institutions.
Features built in
Multi-tenant architecture
- Single Firebase project serves many schools, every doc scoped by schoolId
- RootNavigator gates on Zustand auth store and resolves role → tab navigator
- Thin service layer (auth/tracking/eta/sos/attendance) keeps screens declarative
- Central TypeScript types mirror the Firestore document schema 1:1
- Firestore rules: own-doc access + admin-per-school management gates
Live tracking
- Background geolocation with high accuracy + 10m distance filter
- Foreground-service notification keeps reporting when locked/backgrounded
- Each fix writes lat/lng, heading, speed (m/s→km/h) + server timestamp
- Parents subscribe via onSnapshot; animated bus marker on react-native-maps
- Stale-location threshold drives a 'last seen X min ago' indicator
ETA engine
- Haversine straight-line distance from bus to each upcoming stop
- Speed-aware: uses live speed, falls back to 20km/h when stationary/noisy
- Per-stop ETA + distance computed for the full route in order
- 'Next stop' heuristic picks nearest unreached stop for the driver
- Human-readable formatting (Arriving now / Arrives in 12 min / 1h 5m)
Attendance & QR
- vision-camera v5 object-output scanning of student QR codes
- Idempotent records (doc id == studentId) in attendance/{date}/records
- Separate morning-pickup & evening-drop status + timestamp fields
- Scheduled function seeds pending records at midnight IST
- Collection-group indexes power student/route/school history reports
Notifications & alerts
- Cloud Functions turn Firestore writes into FCM pushes
- Pickup/drop, trip start/end, and schedule-delay parent notifications
- Notifee channels: standard Bus Updates + high-importance Emergency
- In-app notification docs mirror every push for an inbox view
- FCM token stored on the user doc, refreshed on auth
Driver SOS & admin fleet
- One-tap SOS captures live GPS + reason, writes an active SOS doc
- Function fans the alert out to every admin in the school instantly
- Admin LiveFleet view of all active buses; manage routes/students/drivers
- Reports dashboard with gifted-charts attendance analytics
- Bus assignment, route editing with ordered stops & polyline
- Schools giving parents real-time visibility of the morning/evening bus run
- Transport operators digitising paper attendance with QR scan-in/scan-out
- Admins monitoring a live fleet and reacting to delays or breakdowns
- Drivers raising an instant emergency alert with their live location
From idea to live in 4 steps
Enquiry
Tell me what you want to build using the form below — platform, features, budget, and timeline.
Quote & Scope
Within 24 hours you get a fixed quote, a clear scope, and a delivery plan — no surprises.
Design & Build
I design and build in weekly milestones with live previews so you watch it come together.
Deploy & Support
I ship it live — web, App Store, Play Store — and stick around for support and iteration.
Common questions
Does tracking work when the driver locks the phone?
Yes. It uses a background-geolocation foreground service so fixes keep streaming when the app is backgrounded or the screen is locked.
Is it multi-tenant?
Every document is scoped by schoolId and security rules enforce isolation, so a single Firebase project can serve many schools at once.
What does it cost to run?
It's serverless on Firebase (Firestore, Auth, FCM, Cloud Functions) and uses client-side haversine ETAs, so there's no always-on server and no per-move Directions API spend required.
How is attendance recorded?
The driver scans each student's QR with the camera; records are idempotent (keyed by studentId) per day, with separate pickup and drop fields.
What auth does it use?
Firebase phone-number OTP, defaulted to +91/India with a configurable resend cooldown; the role decides which app the user sees.
Which platforms ship?
Native iOS and Android, including a Swift AppDelegate, iOS privacy manifest, and Android foreground-service configuration.
Can I rebrand and extend it?
Yes — it's a typed React Native codebase with a thin service layer and a reusable UI kit, so theming and new screens drop in cleanly.