Skip to content

johnhelmuth-st/onebusaway-application-modules

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The OneBusAway Application Suite Java CI with Maven Join the OneBusAway chat

A project of the non-profit Open Transit Software Foundation!

The OneBusAway application suite's primary function is to share real-time public transit information with riders across a variety of interfaces:

  • Wayfinder - A high-performance web application built with with the SvelteKit JavaScript web app framework
  • OneBusAway Web - A variety of web interfaces to transit data
    • A standard web interface to transit data, including maps and stop pages with real-time info
    • Sign-mode - Same information as the standard web interface, but in a large format for large displays (e.g., large televisions)
    • A mobile-optimized version of the web interface for smart phone mobile browsers
    • A text-only version of the web interface for more-basic mobile browsers
  • OneBusAway REST API - A RESTful web-service that can be used to quickly write applications built on top of transit data. This API powers the following apps:
  • OneBusAway GTFS-realtime export - A bulk export of all trip updates (predictions), vehicle positions, and service alerts for a transit system in the GTFS-realtime format.
  • OneBusAway Watchdog - A module hosting webservices for monitoring realtime data

Watch the YouTube video for more information.

Getting Started

Here are the high-level steps you'll need to take to launch the OneBusAway mobile apps in your area:

  1. Get your schedule transit data in the GTFS format
  2. Have an AVL system that produces arrival estimates (Note: we're working removing this requirement - contact us if you're interested. Alternatively, you may be able to use other open-source projects, such as The Transit Clock, to go directly from raw vehicle locations to arrival times that are shared via GTFS-realtime and SIRI - this would replace Steps 2 and 3.)
  3. Implement a GTFS-realtime or SIRI real-time data feed (We also support other formats)
  4. Set up a OneBusAway server
  5. Do some quality-control testing of arrival times
  6. Request to be added as a OneBusAway region

See the multi-region page for more details.

Setting up a OneBusAway server

There are two options for setting up your own OneBusAway instance:

Development Instructions with Docker

docker compose up builder

# Now, open another window or tab and continue running commands:

# acquaint yourself with the make options
bin/make --help 

# build the project
bin/make

# now you have built all of the OBA artifacts, which can be found in the `/root/.m2/repository` directory.

# enter the docker container and look around
bin/shell 
ls /root/.m2/repository # this runs inside the docker container

# exit the docker container
exit 

# Build a data bundle, which will power the OBA server:
bin/build_bundle

# Finally, copy all of the built WAR resources into /usr/local/tomcat
bin/copy_and_relaunch

# wait a few seconds for everything to spin up...

Finally, verify that everything works as expected!

GTFS Data

Be sure to rebuild the Docker image if you change any of these settings!

By default, the development server is configured to use static and real-time data from the Seattle area transit agency, King County Metro. To change this default to fit your development, testing, or debugging needs, change the following settings:

  • ./Dockerfile - Change GTFS_URL to your static GTFS URL: GTFS_URL="https://www.soundtransit.org/GTFS-KCM/google_transit.zip" (or modify it in the docker-compose.yml file).
  • ./docker_app_server/config/onebusaway-transit-data-federation-webapp-data-sources.xml - change the following properties...
    • tripUpdatesUrl
    • vehiclePositionsUrl
    • alertsUrl
    • agencyId

Note: if the GTFS-RT feeds require a header-supplied API key, also modify the headersMap property thusly:

<property name="headersMap">
  <map>
    <entry key="{API KEY PROPERTY NAME}" value="{API KEY PROPERTY VALUE}" />
  </map>
</property>

for example:

<property name="headersMap">
  <map>
    <entry key="X-API-KEY" value="12345" />
  </map>
</property>

Debugging

VSCode

  1. Make sure that you have completed all of the earlier steps and that this endpoint loads in your browser: http://localhost:8080/onebusaway-api-webapp/api/where/config.json?key=test
  2. Install these extensions:
  1. Set breakpoints in the code file that you want to debug. If you're just getting started, we recommend that you set a breakpoint in onebusaway-api-webapp/src/main/java/org/onebusaway/api/actions/api/where/ConfigAction.java in the index() method.
  2. Open the Run and Debug tab in VSCode, make sure that the debug target dropdown lists Debug (Attach).
  3. Click the Start Debugging button.
  4. Open your web browser and navigate to the API action where you have set a breakpoint. If you have set a breakpoint in ConfigAction.java, navigate to http://localhost:8080/onebusaway-api-webapp/api/where/config.json?key=test

Deploy OneBusAway

Deployments

OneBusAway is used in a number of places:

Check out the full list on the OneBusAway Deployments page. Check out the main project page at http://onebusaway.org.

Download

Build and Deploy OBA Artifacts to Maven Central

  1. Set up your environment, including GPG
  2. Run the command mvn deploy -DskipTests
  3. Upload the Zip file at ./target/central-publishing/central-bundle.zip to Maven Central's publishing page.
    • The Zip file is about 600MB in size. Be sure to have a fast, reliable connection.

Open questions and issues:

  • I haven't figured out why I cannot get the mvn deploy command to upload to Maven Central automatically.
  • We need to automate deployment to Maven Central via GitHub Actions eventually, too.

Developer Information

Contact Info

There are lots of ways to get in touch with us.

Releases

No releases published

Packages

No packages published

Languages

  • Java 63.7%
  • PureBasic 28.6%
  • JavaScript 6.1%
  • CSS 1.6%
  • Shell 0.0%
  • Dockerfile 0.0%