A mobile commuter app for Belgian train travelers, featuring a clock widget and real-time NMBS/SNCB train information.
- Clock Widget: Always know the current time
- iRail Widget: Real-time train departures and delays from NMBS/SNCB stations
- Built with Vue.js and Capacitor for native Android performance
- Node.js and pnpm
- Android Studio (for building APK)
- Install dependencies
cd frontend
pnpm install- Build the web app
pnpm run build- Add Android platform (first time only)
pnpm add @capacitor/core @capacitor/cli @capacitor/android @capacitor/status-bar
pnpm exec cap add android- Sync to Android
pnpm exec cap sync android- Open in Android Studio
pnpm exec cap open android-
Build APK
In Android Studio:
- Build → Build Bundle(s) / APK(s) → Build APK(s)
- APK will be in
android/app/build/outputs/apk/debug/app-debug.apk
After editing code:
pnpm run build
pnpm exec cap sync androidThen rebuild the APK in Android Studio.
Train data is provided by iRail, a free and open-source API for Belgian railway information.
This is a mobile-only application designed for Android devices. There is no backend server - all data is fetched directly from public APIs.
Because this project is a Capacitor Android app, a .env file is not required. If you do use API keys during local development, keep them in a local, untracked .env file and never commit it.
Note: You can change the default "from" and "to" destinations in frontend/src/components/widgets/IrailWidget.vue by changing these variables:
const fromA = 'Sint-Niklaas'
const toA = 'Gent-Sint-Pieters'