Namma Shuttle is a focused, map‑first planner for BMTC Vayu Vajra (KIA) airport buses in Bengaluru. It helps you quickly find the best airport bus route, nearest stops, and recommended departures around your flight time – all in a dark, map‑heavy UI.
Note
This project uses Generative AI tools sparingly to speed up mechanical work (e.g. refactors, formatting, boilerplate UI, data munging scripts). Core product decisions, domain rules, and data modelling were reviewed and iterated on by a human. You should still treat the transit data as best-effort, community maintained rather than authoritative and are encouraged to inspect the code and raise issues/PRs where something looks off.
-
Route browser
- All KIA routes with clear
KIA-xlabels, origin → airport names, fares, typical duration, and frequency. - Search across route id, from/to, and stop names.
- Click a card to highlight that route on the map and dim others.
- All KIA routes with clear
-
Interactive dark map
- Dark-themed basemap with:
- Colored route polylines per KIA route.
- Stops with emphasis on terminal and nearest stops.
- Airport marker and your location marker (when granted).
- Auto-zoom to selected routes or your nearest stops.
- Dark-themed basemap with:
-
Nearby tab
- Uses browser geolocation (when allowed) to:
- Find closest KIA stops around you.
- Show which routes serve those stops and rough distance.
- One-click to jump from a nearby stop’s route into the main Routes tab.
- Uses browser geolocation (when allowed) to:
-
Bus trip planner
- “Plan” tab to:
- Enter flight takeoff time and type (domestic/international).
- Choose a KIA route.
- See recommended bus departures with “recommended/tight/too late/early” labels.
- Shows check‑in buffer and bus travel time.
- “Plan” tab to:
-
Onboarding + feedback
- One-time onboarding dialog explaining the app, author, and data sources.
- Feedback pill (bottom-right) with quick links to:
- Report incorrect data via GitHub Issues.
- Open the source repo for PRs.
-
Branding & DX
- Custom logo and metadata (OG/Twitter) for nice link previews.
- Vercel Analytics integrated for privacy-friendly traffic insight.
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- UI: React 18, Tailwind CSS
- Maps: Leaflet +
react-leaflet - Tooling: Bun, Prettier, ESLint, @vercel/analytics
- Node 18+ (or just Bun)
- Bun installed
bun installbun dev
# or
npm run devApp will be available at http://localhost:3000.
bun formatapp/layout.tsx– global layout, metadata, analytics, styles.page.tsx– main UI shell (sidebar, tabs, map, onboarding).
components/RouteMapContainer.tsx– Leaflet map, routes, stops, user location.RouteCard.tsx– route list card.RouteStopDetails.tsx– expanded route details (stops, schedule).BusTripPlannerPanel.tsx– flight-aware departure suggestions.NearbyRoutesPanel.tsx– nearest stops UI.OnboardingDialog.tsx– one-time welcome / branding dialog.FeedbackPill.tsx– GitHub + feedback pill + panel.
data/TransitDataAdapter.ts– compiled static data for routes/stops, helpers likefindNearestStops,getRoutesSorted,suggestDepartures.raw/– raw BMTC / KIA data, compile scripts.
public/logo.png– branding/logo.favicon.ico– app icon.
- Core route and stop geometry is adapted from:
- BMTC public data and APIs:
https://bmtc.gov.in - Community project:
github.com/bengawalk/kia
- BMTC public data and APIs:
- Fares, durations, and schedules are approximated based on public info and community knowledge.
- They are not official and can drift over time as BMTC changes routes/timings.
If you see something wrong (fare, times, stops, paths):
- Use the in-app Feedback pill, or
- Open an issue:
https://github.com/mayur57/namma-shuttle/issues
Please include:
- Route id (
KIA-…) - What seems inaccurate
- Any source link or photo (stop board, timetable, etc.)
Contributions are welcome – especially better data:
-
Bug reports & data corrections
- File an issue at
Issues. - Use clear titles: e.g.
KIA-9: fare changed to ₹200orStop name typo at Hebbal Bridge.
- File an issue at
-
Pull requests
- Fork and clone the repo.
- Update route metadata / logic in
data/TransitDataAdapter.tsor the raw data/compile scripts indata/raw/. - Run
bun formatandbun devto sanity-check. - Open a PR describing:
- What changed
- Which routes/stops are impacted
- How you verified the data
-
Feature ideas
- Suggestions (e.g. offline mode, notifications, multi-leg planning) are welcome via issues.
- Built to run on Vercel with:
@vercel/analyticsfor lightweight analytics.
- No custom backend; all transit data is static and bundled with the app.
- Code is open source under the MIT license (see
LICENSEif present). - BMTC and OpenStreetMap data is subject to their respective licenses and terms.