VoloRota a roster of the willing GitHub

Open source · Self-hosted · AGPL-3.0

Volunteer scheduling your church can own.

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

Why you might find it useful

01

Volunteers never make accounts

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.

02

Fair, explainable auto-fill

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.

03

Your data, your box

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.

04

Both ways churches schedule

Individual rotation for nursery and sound; whole-crew rotation for worship teams — “Crew B has the 2nd Sunday” — with blockouts honored in both.

Poke the demo — you can’t break it

A fictional congregation that resets every hour. Open a volunteer link on your phone — that’s the part worth seeing.

Admin console

url     demo.volorota.org
password volorota-demo

Open the admin demo matrix view, auto-fill, role qualifications

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.

Run it yourself

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 →