{"id":18369248,"url":"https://github.com/trifectalabs/roadquality","last_synced_at":"2026-05-18T04:47:50.975Z","repository":{"id":45615737,"uuid":"83763237","full_name":"trifectalabs/roadquality","owner":"trifectalabs","description":"Crowdsourcing road quality and traffic safety data for cyclists.","archived":false,"fork":false,"pushed_at":"2017-11-04T18:05:55.000Z","size":10080,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-10T21:16:59.442Z","etag":null,"topics":["crowdsourcing","cycling","elm-css","elm-lang","play-framework","road-quality","scala","slick","slick-pg","strava"],"latest_commit_sha":null,"homepage":"","language":"Elm","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trifectalabs.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":"2017-03-03T05:59:59.000Z","updated_at":"2017-11-04T14:22:47.000Z","dependencies_parsed_at":"2022-09-05T02:42:11.212Z","dependency_job_id":null,"html_url":"https://github.com/trifectalabs/roadquality","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/trifectalabs/roadquality","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trifectalabs%2Froadquality","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trifectalabs%2Froadquality/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trifectalabs%2Froadquality/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trifectalabs%2Froadquality/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trifectalabs","download_url":"https://codeload.github.com/trifectalabs/roadquality/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trifectalabs%2Froadquality/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272325399,"owners_count":24914642,"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-27T02:00:09.397Z","response_time":76,"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":["crowdsourcing","cycling","elm-css","elm-lang","play-framework","road-quality","scala","slick","slick-pg","strava"],"created_at":"2024-11-05T23:28:52.136Z","updated_at":"2026-05-18T04:47:45.943Z","avatar_url":"https://github.com/trifectalabs.png","language":"Elm","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The Road Quality Project\n### Crowdsourcing road quality and traffic safety data for cyclists\n\nThis project is not currently being maintained. If you are interested in it in any way please let us know and we'd love to talk to you about it!\n\n## Demo\n\n![RoadQuality GIF Demo](demo.gif)\n\nHigher quality video of demo available at https://vimeo.com/241302056.\n\n## Development\n#### Prerequesties\n\n1. Java 8\n2. Scala 2.12\n3. SBT\n4. Elm 0.18\n5. elm-css\n6. Docker\n7. Postgres\n8. [Osmosis](http://wiki.openstreetmap.org/wiki/Osmosis#Downloading)\n9. [PostGIS](http://postgis.net/install/)\n10. [pgrouting](http://pgrouting.org/)\n11. osm2pgrouting\n\n#### To setup database locally:\n\n```sh\n# Assuming you have an .osm.pbf file from Geofabrik\n# Use osmosis to select specific area\nosmosis --read-pbf ./ontario-latest.osm.pbf --bounding-box top=43.753963 bottom=43.561912 left=-79.632868 right=-79.194903 --write-xml toronto.osm\n# or just keep the entire area\nosmosis --read-pbf ./ontario-latest.osm.pbf --write-xml ontario-latest.osm\n# create maps database with trifecta user\ncreateuser -s trifecta\ncreatedb maps --user trifecta\n# Setup postgis and pgrouting in the db\npsql maps --user trifecta\n\u003e create extension postgis;\n\u003e create extension pgrouting;\n# import osm data into db\nosm2pgrouting --f toronto.osm --conf /usr/share/osm2pgrouting/mapconfig_for_bicycles.xml --dbname maps --clean\n# note: on macOS if osm2pgrouting was installed with Homebrew the path for the config is /usr/local/Cellar/osm2pgrouting/2.2.0_2/share/osm2pgrouting/mapconfig_for_bicycles.xml\n```\n\n#### To compile server components:\n\n```sh\nsbt api/compile\n```\n\n#### To compile web assets:\n\n```sh\ncd web/\nelm make src/Main.elm --output=public/javascripts/main.js\nelm-css src/Stylesheets.elm --output=public/stylesheets/main.css\n```\n\n#### To run server locally:\n\nYou need the following environment variables\n\n```sh\n# if running osrm as stated below this can be set to http://localhost:5000\nOSRM_URI\n# at this point in time strava is the only auth service and as such strava client identifiers are required\nSTRAVA_CLIENT_ID\nSTRAVA_CLIENT_SECRET\n# needs to exist for the application to run, but can be any string if mailing list signup is not required\nMAILCHIMP_TOKEN\n```\n\nNote the first time the server is run it will setup the database. This however has one caveat at the moment as it does not add the \"temporary\" table `beta_user_whitelist`. \n\n```sh\npsql maps --user trifecta\n\u003e create table beta_user_whitelist (email text);\n\u003e insert into beta_user_whitelist values ('your strava email address');\n```\n\nRun the server\n\n```sh\nsbt \"api/run -Dhttp.port=9001\"\nsbt web/run\n```\n\n#### To run routing locally:\n\n```sh\n# Get OSM data\ncd resources/osrm \u0026\u0026 mkdir maps \u0026\u0026 cd maps\ncurl -LO http://download.geofabrik.de/north-america/canada/ontario-latest.osm.pbf \u0026\u0026 cd ..\n# Prepare data for routing\ndocker run -t -v $(pwd)/maps:/data -v $(pwd)/profiles:/opt osrm/osrm-backend osrm-extract -p /opt/bicycle.lua /data/ontario-latest.osm.pbf\ndocker run -t -v $(pwd)/maps:/data osrm/osrm-backend osrm-contract /data/ontario-latest.osrm\n# Run routing server\ndocker run -t -i -p 5000:5000 -v $(pwd)/maps:/data osrm/osrm-backend osrm-routed /data/ontario-latest.osrm\n```\n\n#### To run tileserver locally:\n\n```sh\n# find docker ip address (172.16.123.1 on macOS)\nsudo ifconfig lo0 alias 172.16.123.1 # macOS only\n```\n\nUpdate postgres to trust connections from the above address. Open your `pg_hba.conf` and add `host  all  all  172.16.123.1/32  trust`. Then start the docker container.\n\n```sh\ndocker run -e TREX_DATASOURCE_URL=postgresql://trifecta@172.16.123.1/maps -p 8080:8080 --name trex kiambogo/roadquality_tileserver:0.2.2\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrifectalabs%2Froadquality","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrifectalabs%2Froadquality","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrifectalabs%2Froadquality/lists"}