A web application for viewing and exporting appointments from any ChurchTools instance as styled PDF documents or JPEG images.
- Calendar selection — choose one or more public calendars from your ChurchTools instance
- PDF & JPEG export — generate formatted appointment lists with customizable styling
- Responsive dashboard — manage calendars, formatting, and exports from a single interface
docker run -d \
-e CHURCHTOOLS_BASE=your-instance.church.tools \
-v ./data:/app/data \
-p 5005:5005 \
schowave/churchtools:latestgit clone https://github.com/schowave/churchtools-api.git
cd churchtools-api
cp .env.example .env # set CHURCHTOOLS_BASE
python -m venv venv && source venv/bin/activate
pip install -e ".[dev]"
make run| Variable | Required | Default | Description |
|---|---|---|---|
CHURCHTOOLS_BASE |
Yes | — | Your ChurchTools domain (e.g. my-church.church.tools) |
DB_PATH |
No | churchtools.db |
Path to the SQLite database file |
-
Create a project folder on your NAS (e.g.
/volume1/docker/churchtools/) -
Add the
docker-compose.ymlfrom this repository -
Create a
.envfile with your configuration:CHURCHTOOLS_BASE=your-instance.church.tools
-
In Container Manager → Project → Create, point to the folder and start
The included Watchtower service monitors Docker Hub and automatically updates the container when a new release is published.
The Docker image schowave/churchtools is built for linux/amd64. It works on any x86_64 platform that supports Docker or Podman.
# docker-compose.yml
services:
churchtools-api:
image: schowave/churchtools:latest
ports:
- "5005:5005"
volumes:
- ./data:/app/data
environment:
- CHURCHTOOLS_BASE=your-instance.church.tools
restart: unless-stoppedReleases are managed via GitHub Actions:
- Go to Actions → Release → Run workflow
- Either enter a version number (e.g.
3.1.0) or leave empty to auto-increment the patch version (e.g.3.0.2→3.0.3) - The workflow runs tests, updates
pyproject.toml, creates a git tag, builds a multi-arch Docker image, and pushes to Docker Hub - Watchtower picks up the new image automatically on connected hosts
Requires GitHub Secrets:
DOCKERHUB_USERNAMEandDOCKERHUB_TOKEN
| Command | Description |
|---|---|
make run |
Start dev server with auto-reload |
make test |
Run test suite |
make lint |
Check code style (ruff) |
make format |
Auto-fix code style |
make build |
Build container image locally |
CI runs lint and tests on every push to main and on pull requests.
