dnd-hub/README.md
2026-03-16 22:14:18 -04:00

1.5 KiB

DnD Campaign Hub

Self-hosted web application and Discord bot for managing rotating DnD campaigns.

Stack

  • Node.js + TypeScript (Express API + Discord bot + scheduler)
  • React + Vite + TypeScript
  • SQLite
  • Docker Compose

Quick Start

  1. Copy .env.example to .env and fill values.
  2. Install dependencies:
    • npm install
  3. Run DB migrations:
    • npm run migrate -w @dnd-hub/server
  4. Run in dev mode:
    • npm run dev

Docker

  1. Copy .env.example to .env.
  2. Start:
    • docker compose up --build

Project Layout

  • apps/server: API, SQLite access, scheduler, Discord bot and slash commands
  • apps/web: React UI
  • infra: Docker and nginx config

Transcript Session Feature

Added structured transcript support with campaign + character context.

Discord Commands

  • /session start: starts a transcript session on the currently selected campaign
  • /session stop: ends active transcript session
  • /session status: shows active transcript session state

API Endpoints

  • POST /sessions/start
  • POST /sessions/:id/stop
  • GET /sessions/active
  • POST /sessions/:id/segments
  • GET /sessions/:id/transcript
  • POST /sessions/:id/push-to-cloud

Cloud Sync

If CLOUD_API_BASE_URL is configured, each transcript segment is queued and POSTed to:

  • POST {CLOUD_API_BASE_URL}/transcripts/segments

Headers sent:

  • X-API-Key: CLOUD_API_KEY
  • X-Idempotency-Key: ${sessionId}:${sequence}
  • X-Signature: HMAC-SHA256 payload signature using CLOUD_API_HMAC_SECRET