Stibble

Stibble shows live STIB-MIVB departures on the Pebble Time 2. It covers the bus, tram, and metro network of Brussels. Get it on the [Pebble appstore](https://apps.repebble.com/ceaa036bfc5543f6b0873247).

The departures page   The line detail screen   The station page

## Features - The app finds the stops nearest to you through the phone GPS. - The app starts on the departures page. It merges the departures of your nearby stops into one list, sorted by time. The header shows the stop count. - Each row shows the line badge in its official color, the stop name, the destination, and the next two waits in minutes. Every row also carries a small icon for its kind: tram, metro, bus, train, or bike. - The line detail screen shows the vehicles on their way to your stop. - The line detail screen draws a small route map next to the line strip. - Disruption notices appear on the affected lines. - The nearby list shows SNCB train departures from the nearest station as gray rows with a train icon, below the timed departures. Select a train row to open the station page with platforms and delays. - The nearby list shows the bike and dock counts of the nearest Villo station as a gray row with a bike icon. - The favorites page in the carousel shows the departure boards of stops you choose. Add or remove favorites by touching and holding a stop on the nearby page or from the app settings, up to 8 stop groups. - A line at the end of its service shows the service message as a gray row below the timed departures. - The launcher shows your next departure under the app name. - You can arm a wakeup alarm for a departure, trains included. The watch wakes you when it is time to walk to the stop or the station. A bell icon marks the armed departure. When the alarm cannot arm, the reason flashes on the screen. - The header bar color shows the app state at a glance. - The watch can vibrate when your vehicle arrives. - The interface speaks English, French, and Dutch. - Every page shows the current time in its header. - Departure times turn gray when the data is older than 45 seconds. - The line detail screen shows a clear message when the line has no data or the network fails. ## Controls - The app starts on the departures page. Press up or down to move through the merged departures. - Press select on a departure to open its line detail screen. A train row opens its station page instead, a Villo row opens the stand page. - Hold select in the line detail to arm or disarm the wakeup alarm. - Hold select on a station page row to arm or disarm the train alarm. - Press down in the line detail to read the full disruption notice. - Press back to go up one screen. Press back on the departures page to close the app. Tap a row to open it; drag to scroll any list or the disruption text. Swipe left or right on the departures page to switch between the trains, nearby, and Villo pages; the dots in the header show the current page. Swipe right on a detail screen to go back. Touch and hold to arm or disarm the wakeup alarm on a line or train row. On the line screen, tap the disruption banner to read the full notice; tap elsewhere to refresh. Touch and hold a stop on the nearby page to add or remove it from favorites. ## Configuration Open the app settings on your phone. Search for stops to check line coverage near you. The search forgives small misspellings and accents, so "hermann" still finds Herrmann-Debroux. Set the interface language and the language of the stop names. Turn the arrival vibration on or off. ## How it works The watch app does not talk to STIB-MIVB. A small server polls the open data APIs, commits each complete refresh to a SpatiaLite-backed SQLite database, and answers the watch with compact transit, train, and Villo boards. The database survives process restarts; readiness and feed health come from its committed state. The repository does not configure an off-host backup, so loss of the server host or volume still loses that state. The phone side of the app fetches a board every 30 seconds and streams it to the watch. Read [server/README.md](server/README.md) for the API, storage operations, setup, and quota rules. You can run your own server, then rebuild the app with its address or set the `server` key in the phone app localStorage. ## Build Install the Pebble tool and the latest SDK. Then build and test: ``` pebble build node --test tests/pkjs.test.js tests/c/run.sh ``` Run the app in the emulator with `pebble install --emulator emery`. ## Credit Stibble started as a fork of [pebble-stib-mivb](https://github.com/aureooms-archive/pebble-stib-mivb) by Aurélien Ooms. Thank you, Aurélien, for the original app. Source: STIB-MIVB, Open Data (CC BY 4.0)