Scheduling assistant for TTRPG groups. Intended as a selfhosted replacement for RollRota.
  • Python 67.2%
  • JavaScript 32.4%
  • Dockerfile 0.2%
Find a file
Ryan e2360c73a8
All checks were successful
CI / Backend lint (ruff) (push) Successful in 1m56s
CI / Frontend tests, audit, and build (push) Successful in 2m1s
CI / Docker image build (push) Successful in 2m25s
CI / Bot tests and audit (push) Successful in 5m6s
CI / Backend migration, tests, and audit (push) Successful in 5m55s
Updated .gitignore
2026-07-14 13:40:12 -05:00
.forgejo chore(deps): update https://data.forgejo.org/actions/forgejo-release action to v2.13.4 2026-07-13 04:22:28 +00:00
bot chore(deps): update dependency cffi to v2.1.0 2026-07-13 06:34:23 +00:00
docs Retire docs/ENHANCEMENTS.md; track all work in Forgejo issues 2026-06-23 23:25:11 -05:00
scripts Updated priorities on roadmap. 2026-05-11 10:15:32 -05:00
webapp chore(deps): lock file maintenance 2026-07-13 09:22:26 +00:00
.env.example Add lore entry image upload and URL import 2026-04-24 00:40:56 -05:00
.gitignore Updated .gitignore 2026-07-14 13:40:12 -05:00
.gitmessage chore: add release infrastructure 2026-03-14 20:03:28 -05:00
.pre-commit-config.yaml chore: consolidate monorepo — unified Dockerfile, package rename, merged configs 2026-03-20 16:03:32 -05:00
ARCHITECTURE.md docs: rewrite ARCHITECTURE.md to reflect bot integration and planned recording refactor 2026-03-20 16:11:00 -05:00
CHANGELOG.md Move CI automation to Forgejo 2026-05-11 15:24:31 -05:00
CLAUDE.md fix: switch bot from py-cord to discord.py 2.7.1 2026-03-20 23:51:26 -05:00
docker-compose.dev.yml Fix Vite 8 allowedHosts blocking custom dev hostnames 2026-04-23 15:44:03 -05:00
docker-compose.override.yml Make production compose the default 2026-04-05 01:16:16 -05:00
docker-compose.prod.yml Make production compose the default 2026-04-05 01:16:16 -05:00
docker-compose.yml Add lore entry image upload and URL import 2026-04-24 00:40:56 -05:00
Dockerfile chore(deps): update python docker tag to v3.14 2026-07-06 04:10:36 +00:00
LICENSE Create LICENSE 2026-03-13 21:10:10 -05:00
Makefile Add guarded production migration workflow 2026-05-04 15:34:41 -05:00
README.md Retire docs/ENHANCEMENTS.md; track all work in Forgejo issues 2026-06-23 23:25:11 -05:00
renovate.json Expand CI and add Renovate auto-merge config 2026-06-23 19:08:56 -05:00
TEST_FIX_STATUS.md Fix UUID comparison in import test; update handoff doc 2026-05-05 18:58:37 -05:00

Quest Board

Quest Board is a self-hosted TTRPG campaign hub for groups who want scheduling, Discord coordination, session memory, and campaign lore in one place instead of spread across calendars, chat logs, and wikis.

Read This First

What It Does

  • OIDC sign-in with providers like Authentik, Keycloak, and Google
  • Session scheduling with vote, direct, and tentative modes, plus per-session voting grids and GM confirmation flows
  • Campaign-level reminder scheduling with Discord delivery, configurable offsets, and webhook or bot-backed notifications
  • Discord reaction voting, attendance RSVP, account linking, and bot commands like /next, /recap, /note, /ask, and /record
  • Voice session recording with transcript upload, attributed speaker capture, review/approval workflow, and AI-generated summaries
  • Session pages with private player notes, GM-shared notes, calendar export links, attendance tracking, and responsive dashboards
  • Campaign journals that combine session history, recap content, and public notes into a readable campaign record
  • Campaign milestones for tracking major events, linked sessions, dates, and long-term progress beats
  • Campaign analytics for attendance, participation, and session cadence
  • A campaign wiki with article pages, relationships, structured sidebar fields, timeline events, aliases, version history, and search
  • Player-character wiki support with owner roles, private character notes, campaign-page linking, and player-editable public character pages
  • Lore pipeline automation that turns approved session recordings into reviewable wiki proposals, relationship updates, and campaign-memory tooling

Production Quick Start

1. Clone and configure

git clone https://git.rhoving.com/rbrooks/Quest-Board.git quest-board
cd quest-board
cp .env.example .env

Update .env for your real deployment values. At minimum:

  • set APP_URL and QUESTBOARD_PUBLIC_URL to your public URL
  • set OIDC_REDIRECT_URI to https://your-domain/auth/callback
  • set strong values for SECRET_KEY, POSTGRES_PASSWORD, POSTGRES_MIGRATE_PASSWORD, and BOT_API_KEY
  • configure your OIDC provider settings
  • add DISCORD_BOT_TOKEN if you want bot features enabled

The full environment reference lives in .env.example.

2. Start the stack

docker compose up -d

Or:

make up

3. Run the guarded migration workflow

make migrate-safe

This is the preferred production migration path. It:

  • runs a schema sanity preflight
  • writes an immediate pg_dump snapshot under /app/backups
  • applies alembic upgrade head

4. Put it behind a reverse proxy

Quest Board expects external TLS termination. Point your reverse proxy at the frontend HTTP port exposed by the stack.

5. Finish app configuration

  • sign in through your OIDC provider
  • configure Admin -> Bot Settings
  • configure campaign-level Discord settings if needed

See docs/OPERATIONS.md and docs/INTEGRATIONS.md for the detailed production setup steps.

Updating Production

git pull
docker compose up -d --build
make migrate-safe

If you want a manual snapshot before a risky change:

make backup-now

Useful Make Targets

make help

Common operations:

  • make up
  • make down
  • make logs
  • make migrate
  • make migrate-safe
  • make backup-now
  • make set-admin EMAIL=user@example.com

Notes

  • Review the code before running it in production. This project has been developed with AI coding assistance and may contain mistakes.
  • Development instructions have moved to docs/DEVELOPMENT.md.
  • Integration setup details have moved to docs/INTEGRATIONS.md.