For developers
OSVenue is one Cloudflare Worker in plain JavaScript with server-rendered HTML, backed by Cloudflare D1. Pages run no script except the passkey script on the sign-in and account pages. The source, tests and install steps are in the repository.
Open data on every venue site
| Feed | Address | What's in it |
|---|---|---|
| Events | /events.json | The venue, links to the other feeds, and upcoming events with local dates and times, offsets, space, organizer, price, tickets, whether cancelled, and each one's record |
| schema.org | /events.jsonld | The same events as schema.org Event at a Place |
| Venue | /venue.json | Address, contact, time zone, accessibility details, booking address |
| Calendar | /events.ics | A calendar subscription; cancelled events stay, marked |
| News | /feed.xml | RSS of upcoming events |
| Search engines | schema.org on pages, /sitemap.xml, /robots.txt, /llms.txt | Event and Place with accessibility features |
| Records | /v1/records.json | Every published version of each event and of the venue, with its provenance, under a Merkle root |
Every feed carries its provenance
The feeds and public pages are read from OSCivic core's keeper, not from the tables staff edit. Each event and the venue carry a record: its id, source, hash, when it became public and what it replaces. An event's date, times, space, price and cancellation, the venue's address, contact and accessibility details, and each space's name, capacity and access, are relied-upon facts: changing one on something published needs a reason, and the reason and each change (from and to) are published with it. Titles and descriptions are stamped but need no reason. Drafts are never kept.
All feeds send Access-Control-Allow-Origin: *. None carries a requester's contact details. The README shows an example of events.json.
How it's checked
Every push runs the unit tests, then a walk-through of what a visitor, a requester and staff do, with axe-core WCAG 2.1 AA checks at desktop and phone width. After each deploy and every night, the full walk-through runs against the Two Step Dance Hall demo and the public steps against the other five; a failure opens an issue.
Run it on your computer
Node.js 22: clone the repository (or download the source), then npm test, and follow "Run it on your computer" in the README to start a local copy with demo data.
Contributing
Pull requests are welcome. Database migrations only add; code more than one OSCivic project needs goes into OSCivic core first; every bug fix adds a test. See CONTRIBUTING.md.