{"id":21870733,"url":"https://github.com/mbta/concentrate","last_synced_at":"2025-10-12T20:12:15.862Z","repository":{"id":37949444,"uuid":"114391883","full_name":"mbta/concentrate","owner":"mbta","description":"Concentrate: combine realtime transit files","archived":false,"fork":false,"pushed_at":"2025-01-31T20:13:06.000Z","size":1191,"stargazers_count":29,"open_issues_count":13,"forks_count":4,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-04-14T23:53:52.906Z","etag":null,"topics":["elixir-lang","gtfs","gtfs-realtime-data","mqtt","transit"],"latest_commit_sha":null,"homepage":"","language":"Elixir","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/mbta.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}},"created_at":"2017-12-15T16:45:02.000Z","updated_at":"2025-02-27T20:42:48.000Z","dependencies_parsed_at":"2023-12-19T08:07:50.319Z","dependency_job_id":"835bd72a-c7bd-40cc-9a9c-960f22cc3c31","html_url":"https://github.com/mbta/concentrate","commit_stats":{"total_commits":539,"total_committers":17,"mean_commits":"31.705882352941178","dds":0.4267161410018553,"last_synced_commit":"f5d0fa4f49b1fff4ace4e37b764acdc32585f3f0"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbta%2Fconcentrate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbta%2Fconcentrate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbta%2Fconcentrate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbta%2Fconcentrate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mbta","download_url":"https://codeload.github.com/mbta/concentrate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248981261,"owners_count":21193144,"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","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":["elixir-lang","gtfs","gtfs-realtime-data","mqtt","transit"],"created_at":"2024-11-28T06:12:26.719Z","updated_at":"2025-10-12T20:12:15.857Z","avatar_url":"https://github.com/mbta.png","language":"Elixir","readme":"# Concentrate\n\n[![Elixir CI](https://github.com/mbta/concentrate/actions/workflows/elixir.yml/badge.svg)](https://github.com/mbta/concentrate/actions/workflows/elixir.yml)\n\nConcentrate combines realtime transit information from multiple sources into\nsingle output files.\n\n## Configuration\n\nConcentrate can either be configured via `config/config.exs` or a JSON environment variable as `CONCENTRATE_JSON`: more details are available in [configuration.md](guides/configuration.md).\n\nAn example run commands bash script for configuring Concentrate is available in `.envrc.example`. Note that you must run apply this configuration in a bash shell by using `source` instead of via `direnv` or a\nsimilar tool, since it runs bash commands.\n\n## Architecture\n\nSee [architecture.md](guides/architecture.md) for the overall architecture of the system.\n## Development Setup\n\n```\n# after installing asdf from https://github.com/asdf-vm/asdf..\nasdf install\n\n# get Elixir dependencies\nmix deps.get\n\n# add pre-commit hook to verify formatting/tests/types\nln -s ../../hooks/pre-commit .git/hooks/pre-commit\n\n# make sure everything passes! (slowest to fastest)\nmix format --check-formatted\nmix credo\nmix dialyzer\n```\n\nSee [the section on tests below](#tests) for information on running unit tests, which requires having a local MQTT broker running.\n\nIf you run into issues compiling `snabbkaffe`:\n\n``` shell\nrm -fr deps/quicer\nmix deps.get\nmix deps.compile\n```\n\n### Tests\n[tests]: #tests\n\nTo run the tests, first install and setup Colima, Docker, and docker-compose:\n\n```shell\nbrew install docker docker-compose colima\ncolima start\nmkdir -p ${DOCKER_CONFIG:-\"~/.docker\"}/cli-plugins\nln -sfn /opt/homebrew/opt/docker-compose/bin/docker-compose ${DOCKER_CONFIG:-\"~/.docker\"}/cli-plugins/docker-compose\n```\n\nThen, start the Compose configuration in a separate window or tab and run the tests: \n1. `docker compose up` \n1. `mix test`\n\n## Docker\n\nConcentrate comes with a Dockerfile, allowing you to build an image that can\nbe run anywhere Docker works. It's a [multi-stage](https://docs.docker.com/engine/userguide/eng-image/multistage-build/) build, so it requires at least Docker 17.05.\n\n```\n# build\ndocker build -t concentrate:latest .\n\n# run\ndocker run concentrate:latest\n```\n","funding_links":[],"categories":["Producing Data"],"sub_categories":["GTFS Realtime"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbta%2Fconcentrate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmbta%2Fconcentrate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbta%2Fconcentrate/lists"}