{"id":44617247,"url":"https://github.com/jdamcd/arrivals-kmp","last_synced_at":"2026-04-05T10:04:48.954Z","repository":{"id":141420515,"uuid":"592216258","full_name":"jdamcd/arrivals-kmp","owner":"jdamcd","description":"Multiplatform public transit status","archived":false,"fork":false,"pushed_at":"2026-04-01T21:34:25.000Z","size":9071,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-02T06:22:57.574Z","etag":null,"topics":["gtfs","gtfs-rt","kotlin-multiplatform","macos","swiftui","tfl-api"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jdamcd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-23T08:21:45.000Z","updated_at":"2026-04-01T21:34:29.000Z","dependencies_parsed_at":"2023-04-29T12:01:02.898Z","dependency_job_id":"7c48f187-01ee-43e6-9235-eedd301c66f9","html_url":"https://github.com/jdamcd/arrivals-kmp","commit_stats":null,"previous_names":["jdamcd/arrivals-kmp"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/jdamcd/arrivals-kmp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdamcd%2Farrivals-kmp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdamcd%2Farrivals-kmp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdamcd%2Farrivals-kmp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdamcd%2Farrivals-kmp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdamcd","download_url":"https://codeload.github.com/jdamcd/arrivals-kmp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdamcd%2Farrivals-kmp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31431455,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T08:13:15.228Z","status":"ssl_error","status_checked_at":"2026-04-05T08:13:11.839Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gtfs","gtfs-rt","kotlin-multiplatform","macos","swiftui","tfl-api"],"created_at":"2026-02-14T13:11:19.498Z","updated_at":"2026-04-05T10:04:48.947Z","avatar_url":"https://github.com/jdamcd.png","language":"Kotlin","funding_links":[],"categories":["Using Data"],"sub_categories":["Consumer Apps"],"readme":"# Arrivals\n\nArrivals is a Kotlin Multiplatform project for live transit times. It supports 3 targets: a macOS toolbar app, a CLI, and a desktop app (for Raspberry Pi kiosk displays). \n\n| Dot Matrix | LCD |\n|:---:|:---:|\n| ![Screenshot: macOS status bar, dot matrix style](readme-img/led.png) | ![Screenshot: macOS status bar, LCD style](readme-img/lcd.png) |\n\n### Supported transit systems\n\n|  | System | Source |\n|--|--------|--------|\n| **London** | Underground, Overground, DLR | TfL API |\n| **UK** | National Rail | Darwin API |\n| **NYC** | Subway | MTA GTFS |\n| **SF Bay Area** | BART | 511.org GTFS |\n| **Berlin** | U-Bahn, S-Bahn, Tram | transport.rest |\n\n... or any custom [GTFS-RT feed](https://mobilitydatabase.org)\n\n## Run\n\nThe macOS toolbar app can be downloaded from [releases](https://github.com/jdamcd/arrivals-kmp/releases) and copied to your Applications folder. Other targets can to be built from source with the instructions below.\n\n## Build\n\n### Prerequisites\n\n1. Get API keys for any authenticated sources you plan to use:\n   - **TfL**: [Transport for London API](https://api-portal.tfl.gov.uk)\n   - **UK National Rail**: [OpenLDBWS](https://realtime.nationalrail.co.uk/OpenLDBWSRegistration/Registration)\n   - **BART**: [511.org](https://511.org/open-data)\n2. Create `shared/secret.properties` and add your keys:\n   ```\n   tfl_key=YOURKEY\n   darwin_key=YOURKEY\n   org_511_key=YOURKEY\n   ```\n3. Make sure you have a JDK configured at `$JAVA_HOME`\n\n### Targets\n\n| Target | Platform | Description | Quick start |\n|--------|----------|-------------|-------------|\n| **macOS** | macOS | SwiftUI status bar app | Open `macOS/Arrivals.xcodeproj` in Xcode and click the Run button |\n| **Desktop** | Linux (incl. Raspberry Pi), macOS, Windows | Compose Multiplatform window with fullscreen mode | `./gradlew :desktop:run` |\n| **CLI** | JVM (all platforms) | Command-line interface | `./cli/install` |\n\n---\n\n### macOS toolbar app\n\nNative status bar application for macOS, built with SwiftUI.\n\n1. Open `macOS/Arrivals.xcodeproj` in Xcode\n2. Press the Run button\n3. Configure via the settings UI\n\n---\n\n### Desktop window\n\nCross-platform desktop UI, built with Compose Multiplatform. Includes a fullscreen mode for kiosk displays and configuration via a YAML file.\n\n#### Run from Gradle\n\n```bash\n# Windowed mode\n./gradlew :desktop:run\n\n# Fullscreen with custom dimensions\n./gradlew :desktop:run --args=\"-pi 1280 400\"\n```\n\n#### Build native distribution\n\n```bash\n# Executable in desktop/build/compose/binaries/main/app/\n./gradlew :desktop:createDistributable\n```\n\n#### Configuration via YAML\n\nCreate a `.arrivals.yml` in the user home directory to configure:\n\n```yaml\n# Mode: \"tfl\", \"darwin\", \"bvg\", or \"gtfs\"\nmode: tfl\n\n# Shared config fields\nstop: 910GSHRDHST           # Station/stop ID (all modes)\nplatform: 2                 # Optional platform (all but GTFS)\nline:                       # Optional line (BVG only: U8, M10, etc.)\ndirection:                  # Optional direction (TfL only: \"inbound\" or \"outbound\")\n\n# GTFS-specific config\ngtfs_realtime: https://api-endpoint.mta.info/Dataservice/mtagtfsfeeds/nyct%2Fgtfs-g\ngtfs_schedule: http://web.mta.info/developers/data/nyct/subway/google_transit.zip\n# Optional for authenticated feeds\ngtfs_api_key_param:         # Param or header (e.g. \"app_id\", \"header:Authorization\")\ngtfs_api_key:               # API key\n```\n\n---\n\n### CLI\n\nCommand-line interface (JVM required). Run `./cli/install` to install the `arrivals` command on macOS or Linux, or run it via Gradle with `./gradlew :cli:run`.\n\n![Screenshot: arrivals CLI command](readme-img/cli.png)\n\n#### TfL example\n\n```bash\narrivals tfl --station 910GSHRDHST --platform 2\n```\n\n#### GTFS example\n\n```bash\narrivals gtfs --station G28S \\\n  --realtime https://api-endpoint.mta.info/Dataservice/mtagtfsfeeds/nyct%2Fgtfs-g \\\n  --schedule http://web.mta.info/developers/data/nyct/subway/google_transit.zip\n```\n\n#### Search for station codes\n\n```bash\narrivals search tfl \"shoreditch high street\" # or use list-stops for GTFS\n```\n\n## Attribution\n\n* Powered by:\n  * [TfL Open Data](https://api.tfl.gov.uk)\n    * OS data © Crown copyright and database rights 2016\n    * Geomni UK Map data © and database rights 2019\n  * [Rail Data Marketplace](https://raildata.org.uk) via [Huxley2](https://github.com/jpsingleton/Huxley2)\n  * [511 Open Data](https://511.org/open-data)\n  * [transport.rest](https://transport.rest)\n* Uses this [London Underground Dot Matrix Typeface](https://github.com/petykowski/London-Underground-Dot-Matrix-Typeface)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdamcd%2Farrivals-kmp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdamcd%2Farrivals-kmp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdamcd%2Farrivals-kmp/lists"}