A PWA transit navigator for Addis Ababa. Search landmarks in Amharic or English, plan multi-modal routes (minibus → LRT → walk), and see live commuter demand on a real-time heatmap — all with no app install required.
# EthioRoute
> Landmark-first navigation & real-time transit for Addis Ababa.
---
# The EthioRoute application is currently available upon request only
## 🚀 Quick Start
ethio-route.vercel.app
No build step, no bundler. Requires a local HTTP server (Service Worker and Fetch API do not work over `file://`):
```powershell
npx serve .
```
Then open `
localhost`.
**One-time setup checklist:**
1. Add your **Supabase credentials** to `config.js` (URL + anon key)
2. Create the required Supabase tables — SQL in `NEEDS_MORE_INFO.md` Step 2
3. Download the **Noto Sans Ethiopic** fonts into `fonts/` — instructions in `NEEDS_MORE_INFO.md` Step 1
---
## 🗂 Project Structure
```
EthioRoute/
├── index.html # App shell — open this
├── manifest.json # PWA manifest (installable)
├── service-worker.js # Offline tile + asset caching
├── config.js # Supabase URL & anon key ← YOUR CONFIG
│
├── css/
│ ├── main.css # Global design system, tokens, splash, FABs
│ ├── map.css # Map container, locate button, popups, user marker
│ └── panels.css # Left drawer, route steps, tariff table, toggles
│
├── js/
│ ├── app.js # Bootstrapper & all UI event wiring
│ ├── map.js # Leaflet 1.9.4 initialisation & tile switching
│ ├── i18n.js # Amharic ↔ English string table & toggle
│ ├── gtfs-data.js # Route registry, Haversine, nearest-stop finder
│ ├── transfer-graph.js # Multi-leg transfer adjacency graph (BFS)
│ ├── landmarks.js # Weighted POI search, favourites, suggestions
│ ├── search.js # Search UI, per-input autocomplete, suggest modal
│ ├── transit.js # LRT / Anbessa / Minibus / Sheger layer renderer
│ ├── heatmap.js # Supabase real-time demand heatmap
│ ├── crowdsource.js # Anonymous crowdsourced bus GPS
│ ├── routin …