Skip to content
Tools for collecting, processing, and interpreting mobility data using SharedStreets
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets 1.0 Apr 19, 2019
src cache point matched street geometries May 2, 2019
test add jump provider + tests Apr 17, 2019
.gitignore add config template Apr 17, 2019
.npmignore use shst lib directly Apr 10, 2019
LICENSE move to server-based workflow Feb 8, 2019 Update May 6, 2019
config.template.json set privacy threshold from config May 2, 2019
index.html map data styling May 2, 2019
package-lock.json point-based street aggregations May 1, 2019
package.json v1.2.0 May 2, 2019
server.js default fallback for providers May 2, 2019
shst-logo.jpg add config template & logo Apr 17, 2019

Mobility Metrics

SharedStreets Mobility Metrics is an open source server and frontend for ingestion and analysis of MDS mobility data. It is capable of reading raw MDS data in memory and aggregating useful & privacy-protecting metrics for longterm storage and analysis.


  • OSX or Linux (Support for Windows coming soon via docker)
  • Node.js v11
  • Valid MDS credentials for at least one live MDS Provider API



Serves a dashboard for viewing and exporting metrics

GET /{YYYY-MM-DD}/{provider}

Returns a daily summary of all statistics for a provider. This endpoint powers the builtin dashboard, and can be used for custom reporting and modeling.


Setup project and install dependencies.

git clone
cd sharedstreets-mobility-metrics
npm install


A config.json file is required to run Mobility Metrics. Enable providers and set credentials through this file. This file is used to store access tokens - handle with care. See config.template.json for a starter config.


Run a script to backfill a datastore of metrics. Configure this command in cron for automated daily imports.

# --day = target backfill date in YYYY-MM-DD format
# --days = number of days prior to target to also backfill
node src/backfill.js --day 2018-11-10 --days 1;


Runs a server that is capable of powering the JSON API and UI. (localhost:5000 by default)

npm start


Run a comprehensive test suite across the project. Auto-formats code using linter. (Note: tests provider endpoints, and requires config with up to date credentials)

npm test


Runs a linter, prettier, and auto-formats code to meet consistent style, while checking for syntax errors.

npm run lint


Daily summary:

Total vehicles: Total number of vehicles that were on the street at any time during the specified day. This includes all vehicles that were available, unavailable or reserved according to the event types specified here.

Active vehicles: Total number of vehicles that completed at least one trip during the specified day. (Trips)

Total trips: Total number of trips taken throughout the specified day.

Total trips distance: Total miles traveled by any vehicles throughout the specified day. (trip_distance)

Vehicle Utilization: Percentage of vehicles that were active over the course of a day.

Average distance per vehicle: Total trips distance, divided by active vehicles

Average trips per active vehicle: Total trips, divided by active vehicles

Average trip distance: Total trips distance, divided by total trips

Average trip duration: Total trips duration, divided by total trips

Time Filtered:

Trip Volume: The number of vehicles that moved over a street or in a zone during the time window specified.

Availability: The maximum number of vehicles that were available to users during the time window specified.

On-street: The maximum number of vehicles that are on the street and available or unavailable during the time window specified.

Pickups: The total number of trips that began during a time window

Dropoffs: The total number of trips that ended during a time window

Flows: The number of trips that went from one area of the city to another area of the city, sometimes referred to as origin/destination data or “O/D pairs”

You can’t perform that action at this time.