For developers
OSVolunteer is one Cloudflare Worker in plain JavaScript with server-rendered HTML, backed by Cloudflare D1, and built on OSCivic core. The source, tests and install steps are in the repository.
Open data on every install
| Feed | Address | What's in it |
|---|---|---|
| Shifts | /shifts.json | Shifts still to come, with places left right now; ?program= for one program, ?for= a partner's host |
| Programs | /programs.json | Programs, with their partner pages and their shifts' feed |
| Calendar | /shifts.ics | A calendar of the shifts |
| News | /feed.xml | RSS of the shifts |
| Records | /v1/records.json | Every published record in the OSCivic shared envelope, with its provenance and a Merkle root |
Every feed carries its provenance
Pages and feeds are read from OSCivic core's keeper, not from the tables coordinators edit. A shift's date, times, place, address, places needed, minimum age and cancellation are relied-upon facts: a change to one needs a reason, published with it. Approved hours are kept as personal records under a pseudonym, never in a feed.
From another OS app
An app shows "Volunteer for this" from its own pages by reading /shifts.json?for= with its own host, for example https://halcyon.osvolunteer.com/shifts.json?for=halcyon.osfairground.com. A site that wants sign-ups inside its own install can use core's shifts module directly.
How it's checked
Every push runs the unit tests, then a walk-through of what volunteers and coordinators 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 demo; a failure opens an issue.
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.