An embeddable SPA that displays live public message information for a transit organization using Avail Technologies' operations software.
This application is meant to be embedded statically within websites using <iframe>
s, and configurable
through url search parameters.
<iframe src="https://pvta-public-messages.admin.umass.edu"
style="display: block; width: 100%; border: none;"
onload="window.addEventListener('message', (e) => { if (new window.URL(e.origin).origin === new window.URL(this.src).origin) { this.height = e.data.height; } });">
</iframe>
Configuration options are passed using url search parameters (query strings) as outlined below.
?infoPoint=https://your-avail-instance/InfoPoint/rest/
will change the avail instance that the application retrieves data from (defaults to the PVTA's instance).?routes=A1,B2,C3
will provide a list of routes that you want to display messages for (will show all messages by default, and general messages will always be displayed).
A fully configured embedding to show messages for the UMass campus shuttle will look like:
<iframe src="https://pvta-public-messages.admin.umass.edu/?infoPoint=https://bustracker.pvta.com/InfoPoint/rest&routes=34,35"
style="display: block; width: 100%; border: none;"
onload="window.addEventListener('message', (e) => { if (new window.URL(e.origin).origin === new window.URL(this.src).origin) { this.height = e.data.height; } });">
</iframe>
This application uses react
as a framework and is bundled using vite
through node.js
+ npm
. It is recommended that you use
nodenv
to manage local node installations.
It is entirely clientside and data is fetched remotely from an Avail InfoPoint API instance.
node.js
/npm
matching the version in the.node-version
file (just runnodenv install
if using nodenv)
npm install # bundle dependencies
npm run build # builds a production bundle.
npm run dev # starts a local development server.
npm run lint # runs the js linter.
npm run lint:css # runs the css linter.
npm run preview # serves a previously built production bundle.
Bug reports and pull requests are welcome on GitHub.
The application is available as open source under the terms of the MIT License.