{"id":13424987,"url":"https://github.com/bsdavidson/trimetric","last_synced_at":"2025-08-31T08:13:54.778Z","repository":{"id":57554607,"uuid":"67749122","full_name":"bsdavidson/trimetric","owner":"bsdavidson","description":"Realtime visualization of Portland's transit system","archived":false,"fork":false,"pushed_at":"2018-01-22T04:09:37.000Z","size":35570,"stargazers_count":15,"open_issues_count":2,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-15T19:36:57.801Z","etag":null,"topics":["docker","golang","gtfs","javascript","kafka","mapbox","portland","postgres","react","redux","transit","trimet"],"latest_commit_sha":null,"homepage":"https://trimetric.briand.co","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bsdavidson.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}},"created_at":"2016-09-08T23:52:49.000Z","updated_at":"2023-10-21T23:40:47.000Z","dependencies_parsed_at":"2022-09-26T18:51:24.546Z","dependency_job_id":null,"html_url":"https://github.com/bsdavidson/trimetric","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bsdavidson/trimetric","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsdavidson%2Ftrimetric","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsdavidson%2Ftrimetric/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsdavidson%2Ftrimetric/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsdavidson%2Ftrimetric/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bsdavidson","download_url":"https://codeload.github.com/bsdavidson/trimetric/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsdavidson%2Ftrimetric/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272953955,"owners_count":25021136,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["docker","golang","gtfs","javascript","kafka","mapbox","portland","postgres","react","redux","transit","trimet"],"created_at":"2024-07-31T00:01:01.552Z","updated_at":"2025-08-31T08:13:54.771Z","avatar_url":"https://github.com/bsdavidson.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# trimetric\n\nTrimetric is a realtime visualization of the [Trimet] transit system in\nPortland, OR, using the [GTFS] feeds provided for developers by Trimet.\n\nIt downloads the static GTFS feeds periodically and ingests them into the local\n[Postgres] database, for querying later using PostGIS. Realtime GTFS data, such\nas vehicle position and trip updates, are polled and produced into [Kafka],\nwhere it is consumed by other workers.\n\nThe front end is a responsive web app built in React and uses [Mapbox] and\n[deck.gl] for rendering the map and icon layers. When zoomed in, Trimetric shows\nyou a dynamic list of the stops that are visible on screen, which you can click\nto see upcoming arrivals.\n\n### Demo\n\nYou can view Trimetric online at: https://trimetric.briand.co\n\n\n### Screenshots\n\n\u003cimg alt=\"Main View\" src=\"screenshots/zoomed_out_view.png\" width=\"888\"\u003e\u003cbr /\u003e\n\u003cimg alt=\"Stop List View\" src=\"screenshots/stop_list_view.png\" height=\"213\"\u003e\n\u003cimg alt=\"Arrival List View\" src=\"screenshots/arrival_list_view.png\" height=\"213\"\u003e\n\u003cimg alt=\"Mobile View\" src=\"screenshots/mobile_view.png\" height=\"213\"\u003e\n\n\n### Running\n\nYou can run Trimetric locally using Docker Compose. You'll need:\n\n- [Mapbox Access Token] (free)\n- [Trimet API Key] (free)\n- [Docker] and [Docker Compose]\n\nThen run the following to get things up and running:\n\n```sh\ngit clone https://github.com/bsdavidson/trimetric.git\ncd trimetric\nmkdir secrets\necho MAPBOX_ACCESS_TOKEN=\u003cyour_mapbox_token\u003e \u003e web/.env\necho \u003cyour_trimet_api_key\u003e \u003e secrets/trimet-api-key\necho example \u003e secrets/postgres-password\necho INFLUXDB_USER_PASSWORD=example \u003e secrets/influxdb.env\ndocker-compose up\n```\n\nYou should see the logs from Docker Compose in the terminal. All the\ndependencies will be started automatically and the local directories will be\nmounted in the containers for easy development. The API and web app will be\nrebuilt automatically when you make changes. You can view the running web app in\nyour browser by opening: http://localhost:8080\n\n\n### Testing\n\nThere are tests for both Go and JavaScript. The Go tests require Postgres, so\nmake sure the Docker Compose environment is running (with `docker-compose up`).\nThen run this command locally to both Go and JavaScript tests:\n\n```sh\nmake test\n```\n\n\n[Trimet]: https://trimet.org\n[GTFS]: https://developers.google.com/transit/\n[Postgres]: https://www.postgresql.org/\n[Kafka]: https://kafka.apache.org/\n[Mapbox]: https://www.mapbox.com/\n[deck.gl]: https://uber.github.io/deck.gl/\n[Mapbox Access Token]: https://www.mapbox.com/signup/\n[Trimet API Key]: https://developer.trimet.org/appid/registration/\n[Docker]: https://www.docker.com/\n[Docker Compose]: https://docs.docker.com/compose/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbsdavidson%2Ftrimetric","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbsdavidson%2Ftrimetric","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbsdavidson%2Ftrimetric/lists"}