No description
  • Rust 98%
  • PLpgSQL 1.8%
  • Shell 0.1%
  • Dockerfile 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Steven 400d6ffd81
Some checks are pending
ci / test (push) Waiting to run
Church Garden: church management platform MVP
Rust + Axum + Datastar on Postgres, everything through docker compose.
Accounts and sessions, rate limiting, password reset, email verification,
role-based access with ministry scope, rota auto-assign, geofence
attendance, service order and songs, sermon files, and the test suite.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 09:06:37 +00:00
.gitea/workflows Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
docs Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
migrations Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
scripts Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
src Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
static Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
tests Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
.dockerignore Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
.gitignore Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
Cargo.lock Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
Cargo.toml Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
compose.yaml Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
Dockerfile Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00
README.md Church Garden: church management platform MVP 2026-11-04 09:06:37 +00:00

Church Garden

Church management: rota, attendance, service order, worship songs, sermon files. Rust (axum) + Postgres + Datastar. No ORM. Docker is the only tool you need installed.

Develop

docker compose up            # Postgres + app with live reload on http://localhost:3000
# emails the app sends (sign-up verification, password resets) show up in Mailpit: http://localhost:8025
# port 3000 busy? CHURCHGARDEN_PORT=8080 docker compose up
docker compose run --rm test                       # all unit + route tests (each test gets its own throwaway database)
docker compose run --rm tools cargo clippy --all-targets -- -D warnings
docker compose run --rm tools cargo fmt
docker compose run --rm tools cargo add <crate>    # any other cargo command
docker compose down -v                             # stop and wipe the database

First run builds the toolchain image (a few minutes); later runs reuse it.

Open http://localhost:3000 and create an account. Rota page: /services/<id>/rota. Migrations in migrations/ run on startup.

Layout

  • src/lib.rs routes + SQL, src/rota.rs assignment algorithm, src/geo.rs geofence
  • tests/api.rs route tests; unit tests sit beside the code
  • docs/PLAN.md roadmap and decisions

CI

scripts/ci.sh is the whole check (format, clippy, tests, all through docker compose); run it locally before pushing. .gitea/workflows/ci.yml runs it on every push and pull request using Gitea Actions. That needs Actions enabled on the Gitea server and a runner (act_runner) whose host has Docker with the compose plugin and mounts the Docker socket into jobs. The workflow uses no third-party actions, so nothing is pulled from GitHub.