Çanakkale Hat & Sefer
A mobile-first progressive web app for Çanakkale's public bus network — live tracking, trip planning and schedules, all in a single HTML file with no app store required.
The Problem
Çanakkale's municipal bus system has no official app. Passengers are left with:
- A PDF timetable buried on the municipality website, updated seasonally
- No way to know where a bus actually is right now
- No trip planner — figuring out which bus to take from A to B requires knowing the network by memory
- No alerts when a bus is approaching
This app solves all of that.
Features
📅 Seferler — Live Schedule
A dynamic tab row shows every schedule the municipality publishes. Regular weekday and weekend timetables sit alongside any special-day PDFs the city posts — Kurban Bayramı, Arefe, dated one-offs. The tab that matches today's date is preselected.
Each tab lists all routes with departure times split by direction. On today's tab the next upcoming departure is highlighted in blue and past times are greyed out; other tabs show their times plain so they're usable for previewing future or past days.
Each route card has a 🚌 Canlı button that jumps straight to the live tracker for that line.
Above the cards, a 📄 Open PDF button links to the original municipality timetable that tab was parsed from, so the source is always one tap away.
🗺 Rota & Harita — Trip Planner & Live Map
Tap the map (or use GPS) to set your starting point and destination. The planner finds every direct route and one-transfer trip that connects them, sorted by total ETA — walking time + wait for the next bus + ride time + walking to destination.
- One-transfer trips — when no single bus connects A to B, or a transfer gets you there meaningfully faster, the planner builds a two-leg trip with a walking transfer between lines. Both route badges and the transfer stop are shown, and a transfer only outranks a direct bus when it actually saves time
- Real walking distances — every walking segment uses Valhalla pedestrian routing, so which stops count as reachable and how long each walk takes reflect actual on-foot distances that cross roads and follow footpaths. The dashed lines on the map carry a duration + distance label, with a straight-line fallback when offline
- Taxi alternative — every result list ends with a 🚕 taxi card showing the driving distance, time, and an approximate fare from the Çanakkale tariff. Tap it to draw the cab's route on the map
- Plan ahead — use the time offset buttons (+30 dk, +1 sa, +2 sa) to plan for later
- Live bus data — shows which buses are approaching your boarding stop right now. Tap a bus to see its current stop and where it's heading next
- Scheduled fallback — when no live data is available, the ETA falls back to today's active timetable. On Bayram, Arefe, or any dated special day, the planner automatically consults the matching schedule instead of the regular weekday one
- Search for a place — can't point at your destination because you don't know where it is? Search it by name and hand it to the planner in one tap (see Yer Ara below)
- Tap a stop to pick it — while in Konum or Hedef pick mode, tapping any stop circle on the map snaps your pin to that stop exactly
- Stop browser — tap any stop on the map to see which routes serve it and when the next bus comes
🔎 Yer Ara — Place Search
A search bar sits over the map for the destinations you can't already point at. Type a venue, a shop, a street or a stop — Container Hall, Migros, Kordon — pick a result, and the map flies there and drops a pin. The card that opens names the nearest bus stop with its distance and hands the point straight to the planner as 📍 Buradan başla or 🏁 Buraya git.
- Two sources, merged into one list — saved places, bus stops and 6,400+ local businesses and venues match instantly from a bundled index that needs no network at all; an online geocoder adds the streets and addresses a POI extract has no concept of. Results are de-duplicated across the two, Turkish-folded (
kordon finds Kordon), and ranked so a place actually called Container Hall beats a long company name that merely contains the word
- Why bundle an index at all — OpenStreetMap alone doesn't have most Turkish businesses. Container Hall Çanakkale — a real venue 129 m from a stop — has zero matches in raw OSM across the entire Çanakkale bbox, while Overture Maps carries it at 0.99 confidence. So the app ships a monthly Overture extract next to the live geocoder
- Restricted to the map area — anything outside the Çanakkale bounding box is unroutable by the planner anyway, so it never appears in the list
- Remembers — your last 5 searched places come back when you focus the empty box
🔍 Trip Detail
Tap any route to see a full breakdown:
- Walk to boarding stop
- ⏱ Wait time — live bus position or next scheduled departure with estimated arrival at your stop
- Ride (number of stops)
- For a transfer trip: the transfer stop, the walk between lines, and the wait for the second bus
- Walk to destination
- Total estimated journey time
- Stop timeline with live bus positions marked
- 🧭 Start Trip — launches guided turn-by-turn navigation for this trip (see below)
🧭 Start Trip — Guided Navigation
From any trip detail, tap 🧭 Start Trip to be guided through the journey one step at a time. The map clears to show only the current segment — no clutter from the full overview — while a bottom banner tells you what to do right now: walk to your stop → wait for the bus → ride → (transfer →) walk to your destination → arrived. Advance manually, or let GPS auto-advance as you reach each stop.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗