Project Awesome project awesome

GTFS Realtime Utilities > Concentrate

Combines realtime transit information from multiple sources into single output files. Maintained by Massachusetts Bay Transportation Authority (MBTA).

Package 30 stars GitHub

Concentrate

Elixir CI

Concentrate combines realtime transit information from multiple sources into single output files.

Configuration

Concentrate can either be configured via config/config.exs or a JSON environment variable as CONCENTRATE_JSON: more details are available in configuration.md.

An 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 similar tool, since it runs bash commands.

Architecture

See architecture.md for the overall architecture of the system.

Development Setup

# after installing asdf from https://github.com/asdf-vm/asdf..
asdf install

# get Elixir dependencies
mix deps.get

# add pre-commit hook to verify formatting/tests/types
ln -s hooks/pre-commit .git/hooks/pre-commit

# make sure everything passes! (fastest to slowest)
mix format --check-formatted
mix credo
mix dialyzer

See the section on tests below for information on running unit tests, which requires having a local MQTT broker running.

If you run into issues compiling snabbkaffe:

rm -fr deps/quicer
mix deps.get
mix deps.compile

Tests

To run the tests, first install and set up Colima, Docker, and docker-compose:

brew install docker docker-compose colima
colima start
mkdir -p ${DOCKER_CONFIG:-"$HOME/.docker"}/cli-plugins
ln -sfn /opt/homebrew/opt/docker-compose/bin/docker-compose ${DOCKER_CONFIG:-"$HOME/.docker"}/cli-plugins/docker-compose

Then start the Compose configuration and run the tests:

  1. In a separate window or tab: docker compose up
  2. mix test

Docker

Concentrate comes with a Dockerfile, allowing you to build an image that can be run anywhere Docker works. It's a multi-stage build, so it requires at least Docker 17.05.

# build
docker build -t concentrate:latest .

# run
docker run concentrate:latest
Back to Transit