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,C3will 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/npmmatching the version in the.node-versionfile (just runnodenv installif using nodenv)
npm install # bundle dependenciesnpm 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.