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).
## 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)