Your next Athens train, instantly.
Metro • Tram • Suburban Railway
Syrmos is a transit companion for the Athens metro, tram and suburban railway. Pick a station or let GPS find the nearest one and get a live countdown to your next departure. Works offline, underground, with no signal.
Syrmos (συρmos) is the Greek word for the carriages that form a metro train.
|
|
|
|
| Home | Lines | Live Map | Settings |
- Instant departures at any station, any line, any direction
- GPS nearest station detection sorted by walking distance
- Live train map with simulated metro/tram positions and real-time suburban tracking
- Realistic movement with station dwell, acceleration and deceleration curves
- Custom station and vehicle icons shared across all three platforms
- Line browser grouped by Metro, Tram, and Suburban with station counts
- Station detail with connecting lines, interchange info, and next departures
- Full timetable viewer with weekday, Friday, Saturday, and Sunday schedules
- Bilingual interface in English and Greek
- Light and dark theme with Metro Blue branding
- Fully offline with all schedule data embedded in the app
| Mode | Lines | Stations | Operator |
|---|---|---|---|
| Metro | Line 1 (Green), Line 2 (Red), Line 3 (Blue) | 71 | STASY |
| Tram | T6 (Syntagma-Pikrodafni), T7 (Akti Poseidonos-Voula) | 56 | STASY |
| Suburban | A1, A2 (Airport), A3 (Chalcis), A4 (Kiato) | 68 | Hellenic Train |
All three platforms run from a single Kotlin Multiplatform codebase and share the same train simulation engine, schedule logic, data layer, and icon assets.
| Platform | UI | Map |
|---|---|---|
| iOS | SwiftUI + MapKit | Apple Maps with polylines and train annotations |
| Android | Compose + osmdroid | OpenStreetMap with PNG vehicle/station markers |
| Web | Compose for Web (Wasm) + Leaflet | OpenStreetMap with SVG directional train icons |
- JDK 17+
- Android Studio Ladybug or later
- Xcode 16+ (for iOS)
./gradlew :androidApp:installDebug./simulator.shThe script auto-detects the Xcode project, picks the latest simulator, builds, installs, and streams logs.
./simulator.sh --device "iPhone 16 Pro" --clean # specific device
./simulator.sh --release # release build
./simulator.sh --list # show devices./gradlew :composeApp:wasmJsBrowserRunProduction deploy:
./gradlew :composeApp:stageWebRelease
# Output: composeApp/build/web-release/
# Or deploy directly to syrmos.peterdsp.dev:
./scripts/deploy-web-to-pi.sh./gradlew allTestsMulti-module MVI with unidirectional data flow. 15+ Gradle modules managed by convention plugins in build-logic/.
iosApp (SwiftUI, MapKit, native iOS experience)
androidApp (Compose Activity shell)
|
composeApp (KMP composition root, tab navigator, Koin wiring)
|
feature/ -- home, lines, stations, schedule, map, settings
| each: Screen + ViewModel + UiState
|
core/ -- domain (use cases)
-- data (repositories, seed data, DataSeeder)
-- database (SQLDelight, platform drivers)
-- network (Ktor, live train feeds)
-- designsystem (theme, shared components)
-- navigation (Voyager tabs and routes)
-- model (domain data classes)
-- common (Result type, datetime, geo distance)
| Dependency | Role |
|---|---|
| Kotlin 2.1 | Language (Android, iOS, Web) |
| Compose Multiplatform 1.8 | Shared UI |
| SwiftUI + MapKit | Native iOS app |
| SQLDelight 2.1 | Local database (all platforms) |
| Koin 4.1 | Dependency injection |
| Ktor 3.1 | HTTP client (live train feed) |
| Voyager 1.1 | Multiplatform navigation |
| osmdroid | Android map tiles |
| Leaflet.js | Web map tiles |
| kotlinx-datetime | Athens timezone calculations |
Schedule data is extracted from official PDF timetables published by:
- STASY - Metro Lines 1, 2, 3 and Tram
- Hellenic Train - Suburban Railway
Live train positions from the Hellenic Train API.
Syrmos is not affiliated with STASY, Hellenic Train, or OASA.
Planned for upcoming releases:
- Plan your trip -- route planning with transfers, walking directions, and estimated arrival times across metro, tram, and suburban lines
- AI chat helper -- ask questions about the Athens transit network, get route suggestions, and receive real-time travel advice
- Accessibility features -- VoiceOver and TalkBack support, dynamic type, high contrast mode
- National rail coverage -- intercity trains (Athens-Thessaloniki, Athens-Patras) with live tracking
- Suburban rail in other cities -- Thessaloniki and Patras suburban networks
- Push notifications -- alerts for service disruptions on your saved lines
- Widget support -- home screen widgets for next departure at your favorite station
Syrmos does not collect, store, or transmit personal data. Location is processed on-device only. No analytics, no ads, no tracking. See Privacy Policy.
BSD 3-Clause. See LICENSE.
Schedule data is derived from publicly available timetables by STASY and Hellenic Train. Live positions from the Hellenic Train API. Syrmos is not affiliated with any Greek transport authority.



