11# AKL Live
22
3- An Android app for live Auckland Transport buses and trains, built for the
4- Galaxy S26. It's the phone version of
3+ A native Android app for getting around Auckland: live buses, trains and
4+ ferries, journey planning on AT's full timetable, and a few quirks. Built for
5+ the Galaxy S26 with Kotlin, Jetpack Compose and Material 3. It started as the
6+ phone version of
57[ akl-departure-board] ( https://github.com/intelarc/akl-departure-board ) , the
6- ESP32 desk display.
8+ ESP32 desk display, and brings over the features of the desktop app .
79
810## Install
911
@@ -13,13 +15,30 @@ builds a new signed APK there. Installing it updates the app in place.
1315
1416The app needs an Auckland Transport API key, and none is built in. Sign up at
1517[ dev-portal.at.govt.nz] ( https://dev-portal.at.govt.nz ) (it's free), subscribe
16- to the GTFS and realtime APIs, and paste your key in the app's Settings. The
17- app opens on Settings until a key is set.
18+ to the GTFS and realtime APIs, and paste your key in the app's Settings. Home
19+ shows a card pointing there until a key is set.
1820
19- ## Buses
21+ The bottom bar has ** Home** , ** Directions** , ** Live** (every bus), ** Trains**
22+ and ** More** (search, alerts, routes, the fleet, the fleet dex, settings).
2023
21- The 27H at Aldersgate Road, Hillsborough, both directions: stop 8669 to
22- Britomart and 8664 to Waikowhai. Stops and route can be changed in Settings.
24+ ## Home
25+
26+ A greeting for the time of day (Mōrena, Kia ora, Ahiahi mārie in Kiwi mode), a
27+ line on how things look ("The 27H's running 6 min late, eh", "Double-decker
28+ incoming"), the time and the weather, then:
29+
30+ - ** Leave in…** for the next bus each way, from how long your walk to the stop
31+ is. Miss it and it tells you when to leave for the one after, or to run.
32+ - ** A search bar** for everything, and one-tap chips: take me home, to work,
33+ every bus, alerts.
34+ - ** Your stops' live scenes** (below), each with ** Track** and ** All departures** .
35+ - ** The next 12 hours of weather** , with the chance of rain.
36+ - ** Favourite stops** with their next departures, live.
37+ - ** Stops near me** from your location.
38+ - ** The live route map** and your ** fleet dex** progress.
39+
40+ Home's scenes follow your stops: by default the 27H at Aldersgate Road,
41+ Hillsborough, both directions (stop 8669 to Britomart, 8664 to Waikowhai).
2342
2443- ** A live scene per direction.** The bus drives toward the stop as its arrival
2544 counts down, and its wheels turn while it's moving. The sky follows the real
@@ -42,6 +61,71 @@ Britomart and 8664 to Waikowhai. Stops and route can be changed in Settings.
4261 photos (or a street map), every bus on its way to you gliding between GPS
4362 fixes and pointing where it's heading. Tap it for full screen, then tap a bus
4463 to see what it is. Pull down anywhere to refresh.
64+ - ** Tap the scene** and the bus honks.
65+
66+ ## Directions
67+
68+ Journey planning across buses, trains and ferries, on the phone. AT's full
69+ GTFS timetable (about 29 MB) downloads once, is checked for updates every six
70+ hours, and each service day is compiled into a compact network cached on the
71+ phone. A RAPTOR planner, ported from the desktop app, finds the fastest
72+ journeys with 1, 2, 3 or more rides, walking between nearby stops for changes.
73+
74+ - ** From and to** : your location, home, work, favourite stops, recent places,
75+ any stop or station, any address or place (Photon / OpenStreetMap), or a pin
76+ dropped on the map.
77+ - ** Leave now, leave at or arrive by** , today or any day in the next week.
78+ - ** Options** : how far you'll walk, your pace, buses/trains/ferries, how many
79+ changes.
80+ - ** Each option** shows its times, the rides in order, walking, changes and
81+ "leave in", with live delays on the first ride and tags for the fastest,
82+ fewest changes and least walking. If walking there takes under 25 minutes,
83+ that shows too.
84+ - ** The journey view** : the whole trip over a map, with the ride shapes and
85+ every bus or train live on them, walking paths with turn-by-turn directions
86+ (OSRM), every stop on each ride, platforms, and "3 stops away" / "you're on
87+ it: 5 stops to go". Share it, add it to your calendar, or track a ride.
88+
89+ ## Stops, routes and search
90+
91+ - ** Any stop or station** : live departures from every platform, filtered by
92+ route, with each bus's model, how late it is and how many stops away. Tap one
93+ to see the bus and track it. There's a map of the stop with the buses heading
94+ for it (tap one to see its route), alerts for the stop and its routes,
95+ favourites with nicknames, directions to or from it, and ** add to home
96+ screen** as its own icon.
97+ - ** Any route** : its paths on a map, its stops each way, trips today, first and
98+ last departures, who runs it, and every bus on it right now.
99+ - ** Search** finds stops (by name or the number on the sign), routes, places,
100+ bus models and fleet numbers. With nothing typed, it shows saved places,
101+ favourites and recent searches.
102+ - ** Alerts** : AT's disruptions with yours first (your route, stops and
103+ favourites), then everything happening now or coming up, searchable by route.
104+
105+ ## On your phone
106+
107+ - ** Track a bus** : a notification that counts down to it on its own, shows how
108+ many stops away it is, its model and how full it is, updated every 20 s. It
109+ buzzes when it's time to leave (your walk plus a lead time you choose), and
110+ stops itself once the bus has been.
111+ - ** Home screen widget** : your next bus each way, refreshed in the background.
112+ - ** Quick settings tile** : "27H · 6 min" in the notification shade.
113+ - ** App shortcuts** : long-press the icon for Directions, Live, Trains, Search
114+ and your favourite stops.
115+ - ** Links** : ` akllive://stop/8669 ` , ` akllive://route/27H ` , ` akllive://plan ` and
116+ the rest open straight to the screen.
117+
118+ ## Looks and quirks
119+
120+ - ** Material 3** throughout, with six colour themes named after Auckland
121+ things (Waitematā, Pōhutukawa, Kawakawa, Kōwhai, Rangitoto, Tūī), Material
122+ You colours from your wallpaper, light, dark and pure black.
123+ - ** Shake to refresh** , haptics on taps, predictive back, a splash screen,
124+ and a themed icon.
125+ - ** Kiwi mode** : "Sweet as", "Chur!", "Gutted.", "Time to hit the road!".
126+ - ** Fleet dex** : every bus model that pulls up at your stops is spotted and
127+ counted, from Rookie spotter to Ultimate spotter. Unseen ones stay mysteries.
128+ - A few things to find in search, and in Settings' version number.
45129
46130## Live
47131
@@ -92,8 +176,13 @@ out west. Harbours and volcanic cones sit behind it.
92176
93177## How it's built
94178
95- Kotlin + Jetpack Compose. The scenes, the train diagram and the vehicle
96- markers are drawn with Compose Canvas. The real maps are
179+ Kotlin, Jetpack Compose and Material 3, with navigation-compose, Glance for
180+ the widget and WorkManager behind it. The scenes, the train diagram and the
181+ vehicle markers are drawn with Compose Canvas. The journey planner
182+ (` gtfs/ ` ) is plain Kotlin: a streaming GTFS reader, a compiler that turns a
183+ service day into flat arrays (routes, stops, trips grouped into patterns,
184+ footpaths between stops within 450 m, shapes) saved to disk, and RAPTOR over
185+ them. The real maps are
97186[ MapLibre] ( https://maplibre.org ) (open source), with:
98187
99188- satellite: [ Esri World Imagery] ( https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9 ) ,
@@ -114,6 +203,12 @@ Transit data comes straight from the
114203| Station departures | stoptrips for each platform (platforms from ` parent_station ` ) |
115204| Every bus (Live, Fleet) | ` realtime/legacy/vehiclelocations ` , the whole feed (~ 80 KB gzipped) |
116205| Bus operator and model | the vehicle label (` TR3884 ` ) looked up in ` app/src/main/assets/fleet.tsv ` and ` models.json ` |
206+ | Service alerts | ` realtime/legacy/servicealerts ` |
207+ | The timetable (Directions, stops, routes) | ` https://gtfs.at.govt.nz/gtfs.zip ` |
208+
209+ Other open services: [ Photon] ( https://photon.komoot.io ) for places,
210+ [ FOSSGIS OSRM] ( https://routing.openstreetmap.de ) for walking directions and
211+ [ Open-Meteo] ( https://open-meteo.com ) for weather. None needs a key.
117212
118213Train GPS fixes are snapped onto the nearest station-to-station stretch of the
119214train's own line on the schematic. ` tools/gen_data.py ` generates the map
0 commit comments