Built to order

College Bus Live Tracking Android App with Driver Console using Flutter and Firebase

CampusGo is a two-app Flutter system that puts college buses on a live map: the student app shows route-wise bus positions, ETAs and delay alerts, while the driver console lets verified drivers start trips, mark checkpoints and broadcast delays. Positions stream via Firebase Realtime Database every 5 seconds (design target); Firebase Authentication restricts the driver console to drivers. In the demo build a driver broadcast rendered on the student screen in 25 ms (measured). Suitable for B.E./B.Tech final-year projects in Computer Science, IT and Mobile App Development.

Android Firebase AuthenticationFused Location ProviderFirebase Realtime DatabaseGradle · Android StudioGoogle Maps SDK for AndroidFlutter 3 Dartgoogle_maps_flutter pluginSoftware
College Bus Live Tracking Android App with Driver Console using Flutter and Firebase — project thumbnail preview
More project photos (2)

The problem

College students who ride campus buses lose roughly 15–30 minutes a day (approximate) to a simple information gap: nobody knows where the bus actually is. They reach the stop early and wait in the sun, or arrive two minutes late and watch the bus pull away. CampusGo — a college bus live-tracking Android system built with Flutter and Firebase — closes that gap with two cooperating apps. The student app shows every bus moving live on a campus map, lists each route with arrival estimates per stop, and pushes delay alerts the moment a driver reports one. The driver console gives verified drivers a trip panel: start and end trips, stream GPS position every few seconds, tap checkpoints as they pass, and broadcast a delay with one tap. Positions flow through Firebase Realtime Database; Firebase Authentication restricts the driver console to verified drivers. Students check the map, time their walk to the stop, and get notified instead of waiting blind.

SYSTEM FLOW

5 components 4 connections

Live flow
Drag to explore
100%
userDriver Phone GPS

The driver's phone captures high-accuracy GPS fixes through the Fused Location Provider every 5 seconds (design target).

Follow the working sequence

How it works

The loop starts in the driver's pocket. Tapping Start trip makes the driver console request high-accuracy GPS fixes from Android's Fused Location Provider and write each fix — latitude, longitude, speed, timestamp — to that bus's node in Firebase Realtime Database every 5 seconds (design target). Firebase pushes every write to all connected clients, so the student app's listener receives the update and moves the bus marker with no polling and no refresh button. The student app also watches an alerts node: when the driver marks a checkpoint or broadcasts a delay, the event fans out to every student's feed in milliseconds. ETAs are computed on the student device from the bus's latest position and remaining route distance, so no application server is needed at all. Firebase Authentication gates the driver console, so every position and broadcast is provably from a verified driver.

  1. The driver signs in with email and password through Firebase Authentication; the console unlocks only for accounts flagged as drivers.
  2. Tapping Start trip begins high-accuracy location requests via the Fused Location Provider on the driver's phone.
  3. Every 5 seconds (design target) the console writes the GPS fix to /buses/{busId} in Firebase Realtime Database.
  4. Each student phone holds a realtime listener on the buses node; every write arrives as a push and the map marker glides to the new position — no polling.
  5. The student app recomputes each stop's ETA from the bus's latest position and remaining route distance, refreshing every 10 seconds (design target).
  6. Checkpoint taps and delay broadcasts are written to /alerts/{pushId} and fan out to every student's feed — about 25 ms from broadcast to render in the demo build (measured, same-browser realtime path).
  7. Tapping End trip stops location sharing, archives the trip log, and the bus leaves the live map.

Tech stack:

  • Flutter 3 · Dart
  • Firebase Realtime Database
  • Firebase Authentication
  • Google Maps SDK for Android
  • google_maps_flutter plugin
  • Fused Location Provider (Google Play services)
  • Android Studio · Gradle
  • Cloud Functions for Firebase (optional fan-out)
Parameter Value
Live position update interval 5 s (design target)
Driver-broadcast to student-screen latency About 25 ms (measured in the demo build — same-browser realtime path)
Reference dataset 3 routes · 13 stops · 4 buses (count)
ETA refresh cadence 10 s (design target)
Position source Fused Location Provider, high-accuracy mode
Typical GPS accuracy 5–20 m outdoors (typical)
Minimum Android version API 24 · Android 7.0 (design target)
Realtime DB simultaneous connections 100 (datasheet value — Firebase Spark plan)
Offline behavior Last-known position shown with age stamp; driver fixes queued and synced on reconnect (expected)
Driver sign-in Email/password via Firebase Authentication

Project features

The student live map is the heart of CampusGo: every bus appears as a labeled marker moving along its colour-coded route line, with a live-connection indicator, so a student sees at a glance which bus to catch. Route-wise ETAs turn raw positions into decisions — each stop shows an arrival estimate recomputed from the bus's latest position every 10 seconds (design target), with delayed buses flagged in red. The driver console is the system's other half: a verified driver starts a trip, streams GPS fixes, taps checkpoints as they pass, and broadcasts a delay with a reason in a few taps. Broadcasts land instantly in the student alert feed — in the demo build, a driver broadcast rendered on the student screen in about 25 ms (measured). Firebase Authentication gates every driver write, so position data always comes from a real driver.

  • [Live bus map] Every bus renders as a labeled marker moving along its colour-coded route on a Google-Maps-powered campus view, with a pulsing live indicator while the realtime connection is healthy. Tapping a marker opens the bus's next two stops with ETAs.
  • [Route-wise ETAs] Each stop on each route shows an arrival estimate recomputed on-device from the bus's latest reported position and remaining route distance, refreshed every 10 seconds (design target).
  • [Driver trip control] Verified drivers start and end trips from the console; trip state, elapsed time and location sharing sit in one panel, and ending a trip cleanly removes the bus from the live map.
  • [Checkpoint marking] Drivers tap each stop as they pass; the mark is timestamped and pushed to the student alert feed, so regular riders learn the bus's rhythm.
  • [Delay broadcast] One screen, three taps: pick a delay length, pick a reason, send. The alert fans out to every student's feed instantly.
  • [Driver authentication] Email/password sign-in through Firebase Authentication; only accounts flagged as drivers can write positions, checkpoints or broadcasts.
  • [Last-known-position fallback] If a bus goes dark mid-route, the map keeps showing its last reported position with an age stamp instead of a blank screen.

Configurable at build time: position update interval (5 s default), ETA refresh cadence, map style, route/stop lists. Optional add-ons: SMS fallback for delay alerts, admin web panel, trip-history analytics. Future scope: predictive ETAs trained on historical runs, parent-view mode.

What is included

  • Two Flutter apps with full Dart source: CampusGo Student and CampusGo Driver
  • Firebase project configuration: Realtime Database schema, security rules, driver-role setup
  • Admin seeding tool for routes, stops, buses and driver accounts
  • Builder notes from the working reference demo — including the realtime listener-ordering fix (an explicit initial read after subscribing, because a driver's first write can land before the student view attaches its listener)
  • Project report PDF and 10-section abstract
  • PPT presentation and viva Q&A document
  • Demo walkthrough script recorded from the reference demo
  • Build timeline: 3–4 weeks (expected); 30 days of build-query support after delivery (expected)

Limitations & prerequisites

  • The shipped Flutter build renders on the Google Maps SDK, which needs a billed API key — map loads are metered by Google; the reference demo uses a stylized campus schematic, not real map tiles.
  • GPS fixes are typically accurate to 5–20 m outdoors (typical); in basements, tunnels or dense urban canyons the fix degrades or drops entirely.
  • The 5-second update interval (design target) is a battery/accuracy trade-off — continuous high-accuracy GPS visibly drains the driver phone over a full day of trips.
  • The ~25 ms broadcast-to-render figure was measured in the demo build's same-browser realtime path; on the real Firebase path the latency depends on network conditions and is not claimed here.
  • Firebase's free Spark plan allows 100 simultaneous Realtime Database connections (datasheet value) — a large college would need the Blaze pay-as-you-go plan.
  • ETAs are distance-divided-by-live-speed estimates (design target); they do not model traffic unless the driver broadcasts a delay.

Frequently Asked Questions

Is this project suitable for a final-year project?

Yes — this is a strong final-year project for Computer Science, IT, and Mobile Application Development programs. It is a complete two-sided mobile system with a student app and a driver console, realtime GPS sync through Firebase, and a live demo that opens with buses moving on a map, which gives the viva plenty of real architecture to discuss. The report documents the database schema, the security rules, the ETA computation and the authentication design, so every viva question traces back to something the student actually built.

How does the live tracking actually work, end to end?

The driver's phone is the GPS source and Firebase Realtime Database is the pipe. When the driver starts a trip, the console streams GPS fixes to the bus's database node every 5 seconds (design target); Firebase pushes each write to every connected student phone instantly, and the student app moves the bus marker on the map with no polling or refresh. ETAs are computed on the student device from the latest position and remaining route distance, and checkpoint taps or delay broadcasts fan out to the alert feed the same way.

Why Firebase Realtime Database instead of a custom backend server?

Because live bus tracking is a fan-out problem, not a computation problem: one driver's position write must reach hundreds of student phones within milliseconds. Firebase Realtime Database is built exactly for that — every write is pushed to all listeners automatically, with offline queuing and security rules included — while a custom server would need websockets, connection management and push infrastructure built and maintained from scratch. The trade-off is the Spark plan's 100 simultaneous connections (datasheet value), which covers a pilot fleet comfortably.

What stops a random student from opening the driver console and faking a bus?

Firebase Authentication plus database security rules. The driver console requires an email/password sign-in, and only accounts flagged with a driver role can write to the buses and alerts nodes — the rules reject writes from any other authenticated user, and anonymous student accounts get read-only access to positions and alerts. Driver accounts are created by the college admin through the seeding tool, so there is no self-registration path into the driver role.

What does the student see when the bus drives through a patch with no network?

The last-known position, with an age stamp. Firebase queues the driver's unsent fixes on the driver phone and syncs them when coverage returns, while the student app keeps displaying the most recent position it received and marks how old it is — so a stale marker is never mistaken for a live one. This offline-persistence behavior is configured in the Firebase setup and demonstrated in the reference demo's fallback card.

What would it take to run this on a real college fleet of 20 buses?

Twenty driver phones, one Firebase project, and an admin afternoon. Each bus gets a driver account and a bus ID, routes and stops are seeded once through the admin tool, and students install the same student app — the Spark plan's 100 simultaneous connections (datasheet value) cover 20 drivers plus 80 concurrent student viewers before an upgrade is needed. The honest rollout is a 2–3 bus pilot first to validate battery drain and stop coverage, then the full fleet; the college also needs a billed Google Maps API key for production map tiles.

Components & software requirements
  • Flutter 3 · Dart
  • Firebase Realtime Database
  • Firebase Authentication
  • Google Maps SDK for Android
  • google_maps_flutter plugin
  • Fused Location Provider (Google Play services)
  • Android Studio · Gradle
  • Cloud Functions for Firebase (optional fan-out)
Delivery information

Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.

Support terms

Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.

Download free synopsis (PDF)

Enter your name and WhatsApp number — the synopsis PDF downloads immediately. We may send occasional project updates on WhatsApp; no spam.

Get a quotation