Open source · Self-hosted · AGPL-3.0
Auto-fill a fair rotation around blockout dates — then volunteers accept, decline, or arrange their own replacement from an emailed link. No volunteer accounts, no passwords, no monthly fee.
one container · one SQLite file · ~18 MB · zero third-party requests
Every action — accept, decline, pick a replacement, set blockout dates, subscribe a calendar feed — happens through a private emailed link. Zero onboarding for the nursery team.
Least-recently-served goes first, role qualifications are respected — your keys player is never scheduled on vocals — and nobody is double-booked across teams. The same data always produces the same schedule.
One Docker container, one SQLite file, about 18 MB of memory. No telemetry, no third-party requests, no vendor. AGPL-3.0 keeps it that way.
Individual rotation for nursery and sound; whole-crew rotation for worship teams — “Crew B has the 2nd Sunday” — with blockouts honored in both.
A fictional congregation that resets every hour. Open a volunteer link on your phone — that’s the part worth seeing.
url demo.volorota.org
password volorota-demo
Try the matrix view, run auto-fill on an open Sunday, and check the Worship team’s role qualifications — Emily only plays keys, so auto-fill never offers her a vocals slot.
A 1 GB VPS is plenty. The timed walkthrough from clean box to published schedule runs about ten minutes.
$ git clone https://github.com/VoloRota/volorota.git && cd volorota $ docker build -t volorota . $ docker run -d --name volorota \ -p 3000:3000 -v volorota_data:/data \ -e VOLOROTA_ADMIN_PASSWORD='pick-a-strong-password' \ volorota # open http://your-server:3000 — the setup checklist takes it from here
Full quickstart, env reference, and deployment guides on GitHub →