Skip to content
MobileLogistics / Safety

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.

SBApp preview

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
React Native 0.85React 19TypeScript 5.8Firebase Auth (phone OTP)Cloud Firestore (@react-native-firebase)Cloud Functions Gen 1Firebase Cloud Messaging + Notifeereact-native-background-geolocationreact-native-maps (Google)react-native-vision-camera 5 (QR)Zustand 5React Navigation 7Reanimated 4 + Workletsreact-native-paper + gifted-charts
  • 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.