For developers
OSChapel 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 congregation's site
| Feed | Address | What's in it |
|---|---|---|
| Events | /events.json | The congregation, links to the other feeds, and upcoming events with local dates and times, offsets, calendar, whether everyone is welcome, room, organizer, cost, whether cancelled, and each one's record. ?open=1 lists only events everyone is welcome to; ?calendar= one calendar |
| schema.org | /events.jsonld | Events everyone is welcome to, as schema.org Event at a PlaceOfWorship |
| Congregation | /congregation.json | Address, contact, time zone, services and groups (how they repeat), rooms with use fees, accessibility details, the request address |
| Calendars | /events.ics, /calendar/<slug>.ics, /services.ics | Calendar subscriptions: every event and every date of each service and group, one calendar's, or the services for the next eight weeks; cancelled dates stay, marked |
| News | /feed.xml | RSS of upcoming events everyone is welcome to |
| Search engines | schema.org on pages, /sitemap.xml, /robots.txt, /llms.txt | Event and PlaceOfWorship with accessibility features, for events everyone is welcome to |
| Records | /v1/records.json | Every published version of each event and of the congregation, 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, service, group and the congregation carry a record: its id, source, hash, when it became public and what it replaces. An event's date, times, room, cost, cancellation and who is welcome; a service or group's rule, dates, times, changed dates and room; the congregation's address, contact and accessibility details; and each room's name, capacity, access and use fee, 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 or group. 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 walk-through runs against the Glimmer Community Chapel demo; 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.