No description
Find a file
Leonard Ehrenfried 5adc7c4f11
Merge pull request #7459 from leonardehrenfried/netex-bundle-gc-2
Allow `NetexBundles` to be garbage-collected early
2026-03-26 15:44:45 +00:00
.github Update MASTER_BRANCH_VERSION 2026-03-18 11:39:41 +01:00
.idea style: Arrange all fields and methods 2022-04-06 10:34:19 +02:00
application Merge pull request #7459 from leonardehrenfried/netex-bundle-gc-2 2026-03-26 15:44:45 +00:00
astar Remove duplicate test fixtures in A* 2026-03-24 17:30:41 +01:00
client Update Debug UI dependencies (non-major) 2026-03-19 05:20:06 +00:00
doc Add changelog entry for #7452 [ci skip] 2026-03-26 14:00:40 +00:00
domain-core Format code [ci skip] 2026-03-26 07:30:54 +01:00
gtfs-realtime-protobuf Prepare next development iteration 2.10.0-SNAPSHOT 2026-03-18 12:04:49 +01:00
otp-shaded Prepare next development iteration 2.10.0-SNAPSHOT 2026-03-18 12:04:49 +01:00
raptor Account for boarding and alighting restrictions in direct transit search 2026-03-20 12:11:09 +01:00
script Fix regex pattern in custom-release.py to match version tags with only on digit \\d+\\d+ -> \\d+ 2026-03-25 10:15:37 +01:00
street Merge pull request #7443 from Skanetrafiken/street-search-request-to-from 2026-03-26 09:45:19 +00:00
test Prepare next development iteration 2.10.0-SNAPSHOT 2026-03-18 12:04:49 +01:00
utils Merge pull request #7434 from entur/fix-unstable-ordering-transmodel-tariffzones 2026-03-23 14:47:09 +00:00
.git-blame-ignore-revs Add .git-blame-ignore-revs entry 2026-03-23 10:42:40 +02:00
.gitignore Ignore EPSG directory that sometimes gets generated during tests 2026-01-30 15:17:15 +02:00
.prettierrc.yml Configure prettier to use lf for line endings 2026-03-23 10:38:36 +02:00
ARCHITECTURE.md Change titles to title case. 2025-10-08 10:38:03 +03:00
checkstyle.xml Add ConstantName rule to Checkstyle 2026-02-09 16:20:36 +02:00
CLAUDE.md Use Java 25 for everything 2026-01-27 23:16:07 +02:00
codecov.yml Fix codecov syntax [ci skip] 2022-12-21 21:56:21 +01:00
CONTRIBUTING.md Add text about AI tool usage to CONTRIBUTING.md. 2026-02-19 17:19:22 +02:00
DEVELOPMENT_DECISION_RECORDS.md Add docs 2025-10-23 14:18:58 +03:00
lgpl-3.0.txt add LGPL 2009-12-03 02:02:39 +00:00
LICENSE Add a single License file and remove all OTP and OBA file license headers. 2018-08-14 13:27:53 +02:00
magidoc.mjs refactor: Fix paths in CI scripts 2024-10-11 16:12:59 +02:00
maven-settings.xml replace TravisCI with GH actions and packages 2021-01-06 15:10:36 +08:00
mkdocs.yml Add separate config, docs 2026-01-26 10:53:15 +01:00
openrewrite.yml Add some openrewrite recipes that somewhat match the new checkstyle rules 2026-01-27 18:54:59 +02:00
pom.xml Bump serialization version id for #7446 2026-03-24 13:56:30 +00:00
publiccode.yml Run publiccode.yml fields through editor to validate the correctness of the file. 2026-02-20 11:20:15 +02:00
README.md Change titles to title case. 2025-10-08 10:38:03 +03:00
renovate.json5 Apply automerge also to Jackson BOM [ci skip] 2026-03-20 21:13:21 +01:00

Overview

Join the chat at https://gitter.im/opentripplanner/OpenTripPLanner Matrix codecov Commit activity Docker Pulls

OpenTripPlanner (OTP) is an open source multi-modal trip planner, focusing on travel by scheduled public transportation in combination with bicycling, walking, and mobility services including bike share and ride hailing. Its server component runs on any platform with a Java virtual machine ( including Linux, Mac, and Windows). It exposes GraphQL APIs that can be accessed by various clients including open source Javascript components and native mobile applications. It builds its representation of the transportation network from open data in open standard file formats (primarily GTFS and OpenStreetMap). It applies real-time updates and alerts with immediate visibility to clients, finding itineraries that account for disruptions and service changes.

Note that this branch contains OpenTripPlanner 2, the second major version of OTP, which has been under development since 2018 and is now the dominant one and the only one being supported.

Development

OpenTripPlanner is a collaborative project incorporating code, translation, and documentation from contributors around the world. We welcome new contributions. Further development guidelines can be found in the documentation.

Contributing Guidelines

See CONTRIBUTING.md

Development History

The OpenTripPlanner project was launched by Portland, Oregon's transport agency TriMet (http://trimet.org/) in July of 2009. As of this writing in September 2025, it has been in development for over 16 years. See the main documentation for an overview of OTP history and a list of cities and regions using OTP around the world.

Measuring OTP Performance

📊 Dashboard

We run a speed test (included in the code) to measure the performance for every PR merged into OTP.

More information about how to set up and run it.

Repository Layout

The main Java server code is in application/src/main/. OTP also includes a Javascript client based on the MapLibre mapping library in client/src/. This client is now used for testing, with most major deployments building custom clients from reusable components. The Maven build produces a unified ("shaded") JAR file at otp-shaded/target/otp-shaded-VERSION.jar containing all necessary code and dependencies to run OpenTripPlanner.

Additional information and instructions are available in the main documentation, including a quick introduction.

Getting in Touch

The fastest way to get help is to use our Gitter chat room where most of the core developers are. Bug reports may be filed via the Github issue tracker. The OpenTripPlanner mailing list is used almost exclusively for project announcements. The mailing list and issue tracker are not intended for support questions or discussions. Please use the chat for this purpose. Other details of project governance can be found in the main documentation.

OTP Ecosystem

  • awesome-transit Community list of transit APIs, apps, datasets, research, and software.