{"id":22100079,"url":"https://github.com/tjhorner/gtfs-janitor","last_synced_at":"2025-07-11T08:33:46.838Z","repository":{"id":251137634,"uuid":"836016871","full_name":"tjhorner/gtfs-janitor","owner":"tjhorner","description":"Semi-automated GTFS/OpenStreetMap conflation tool","archived":false,"fork":false,"pushed_at":"2024-09-03T14:57:27.000Z","size":400,"stargazers_count":13,"open_issues_count":4,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-04T18:02:26.627Z","etag":null,"topics":["gtfs","open-data","openstreetmap"],"latest_commit_sha":null,"homepage":"https://gtfs-janitor.tjhorner.dev/","language":"TypeScript","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/tjhorner.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":"2024-07-31T02:01:46.000Z","updated_at":"2025-05-12T21:19:52.000Z","dependencies_parsed_at":"2024-08-19T22:59:19.465Z","dependency_job_id":null,"html_url":"https://github.com/tjhorner/gtfs-janitor","commit_stats":null,"previous_names":["tjhorner/gtfs-janitor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tjhorner/gtfs-janitor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tjhorner%2Fgtfs-janitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tjhorner%2Fgtfs-janitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tjhorner%2Fgtfs-janitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tjhorner%2Fgtfs-janitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tjhorner","download_url":"https://codeload.github.com/tjhorner/gtfs-janitor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tjhorner%2Fgtfs-janitor/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264765616,"owners_count":23660595,"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":["gtfs","open-data","openstreetmap"],"created_at":"2024-12-01T05:11:43.574Z","updated_at":"2025-07-11T08:33:46.796Z","avatar_url":"https://github.com/tjhorner.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GTFS Janitor\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://gtfs-janitor.tjhorner.dev\"\u003eTry it out!\u003c/a\u003e •\n  \u003ca href=\"https://wiki.openstreetmap.org/wiki/GTFS_Janitor\"\u003eGTFS Janitor on OSM Wiki\u003c/a\u003e\n\u003c/p\u003e\n\n![screenshot of UI](https://github.com/user-attachments/assets/7af269b5-9a0f-4c3a-bd6b-8d9f5498aaab)\n\nThis is a web-based tool for syncing GTFS feeds with OpenStreetMap data. It performs [conflation](https://wiki.openstreetmap.org/wiki/Conflation) of GTFS stops and nodes in OSM, then assists users in resolving ambiguous matches. After import, it will provide an osmChange file that can be reviewed in an external editor.\n\nYou can configure it to work with your transit agency's GTFS feed by writing an import profile. You can learn more about import profiles in [the documentation](docs/import-profile.md).\n\nYou can try it out [here](https://gtfs-janitor.tjhorner.dev/). (To quickly demo it, you can use [King County Metro's GTFS feed](https://www.soundtransit.org/GTFS-KCM/google_transit.zip).)\n\n## Feedback\n\nThis project is in a very early stage, so feedback from the OpenStreetMap community is very much appreciated. If you encounter a problem (e.g., data integrity issue, crash/bug, etc.) or have a suggestion (e.g., tag improvements, UX enhancements, algorithm adjustments, etc.), please [check the repo issues](https://github.com/tjhorner/gtfs-janitor/issues) and open one if it doesn't already exist.\n\nYou may also discuss the project in the [OpenStreetMap World](https://discord.gg/openstreetmap) Discord. I am active there as `tjhorner`, and you can find me in channels like `#developer`, `#mapping-projects`, and `#imports`. When in doubt, you can just go ahead and ping me in `#general`.\n\n## Future Improvements\n\n- Route matching\n  - Match GTFS routes/route masters to OSM relations\n  - Include bus stop nodes in relations\n  - Include route ways in relations using map matching techniques\n- Better PTv2 compatibility\n  - Support for separately-mapped `public_transport=platform` ways\n  - Support for `public_transport=stop_area` relations\n- Architectural improvements\n  - The project only has a very loose structure that will be difficult to refactor in the future. More thought should be put into the architecture so it is easier to maintain and extend.\n  - There are currently no automated tests. This is important especially for the matching algorithm; we should write tests in order to maintain data integrity and prevent regressions.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftjhorner%2Fgtfs-janitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftjhorner%2Fgtfs-janitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftjhorner%2Fgtfs-janitor/lists"}