grimoire logo

grimoire

Self-hosted organizer for your TTRPG content and campaigns

Developer ToolsSelf-HostedJavaScriptGPL-3.0 124 7Health 68
discordendpointendpointpython 3.12react 18docker
GitHub

What is it?

What it is

Grimoire is a self‑hosted web application that lets tabletop RPG enthusiasts organize, search, and read their PDF collections from any device. It provides a responsive UI built with React, a FastAPI backend, and a Docker‑ready deployment stack.

Why it exists

Many TTRPG groups keep thousands of PDFs, maps, tokens, and audio files scattered across drives or cloud services. Grimoire centralizes this content, automatically detects folder structures, indexes every page for instant full‑text search, renders PDFs as images for fast mobile viewing, and offers features like tagging, bookmarks, favorites, campaigns, and an OPDS feed for e‑readers. It solves the pain of manual cataloging, slow search, and fragmented access to game resources.

Who should use it

Game MastersPlayers with large digital collectionsTech-savvy users who can manage Docker

Who should avoid it

Casual usersThose who prefer simple apps without self-hostingUsers who don't need OCR or campaign features

How it works

A quick walkthrough in plain English

How grimoire works

Step 1 of 3

You interact with it

Open grimoire, send a request, or connect it to your stack.

Features

Library Browser organized by game system and folder structure
Full‑text search of every PDF page with SQLite FTS5 and support for maps, tokens, and audio
Page‑by‑page PDF viewer with pinch‑to‑zoom, swipe, and spread mode
Map gallery with tag filtering, grid metadata, and full‑resolution download
Token browser for character tokens and portrait assets
Audio library with in‑browser playback for MP3, OGG, Opus, FLAC, WAV, M4A, AAC and embedded metadata
Global audio player with persistent queue and repeat toggle
Per‑user bookmarks with inline highlights
Favorites for quick access to systems, books, maps, tokens, and audio
Custom view modes (card, compact, list) per content type
Metadata editor for descriptions, tags, genre, publisher links, and character builder URLs
Bulk actions for tagging, campaign assignment, and metadata editing
Campaign system with markdown wiki, resource linking, scheduling, and guest invites
OPDS catalog for e‑reader integration
Docker‑ready one‑command deployment
Responsive UI for desktop, tablet, and phone
OCR support for image‑only PDFs via Tesseract
Tagging via tags.json in map, token, audio, and book folders
Guest invite system for campaign‑only access
OpenID Connect authentication support
Rate limiting for authentication endpoints
Healthcheck endpoint for orchestrators
Valkey page cache support
Automatic database migrations via Alembic
Automatic OPDS feed token generation
Per‑user explicit content filtering
User roles (admin, GM, player, guest) with granular permissions

Advantages

  • Easy deployment with Docker or local Python/Node stack
  • Self‑hosted with full control over data and privacy
  • Open source GPL‑3.0 license
  • Rich feature set for tabletop RPG libraries in one app
  • Fast full‑text search with OCR for scanned books
  • Responsive UI works on mobile and desktop
  • Built‑in campaign management and wiki
  • Supports multiple media types (PDF, images, audio)
  • Tagging and bulk actions simplify library organization
  • OPDS support enables e‑reader integration
  • OpenID Connect allows single‑sign‑on
  • Healthcheck and rate limiting improve reliability and security
  • Valkey cache speeds up page rendering
  • Automatic database migrations ease upgrades
  • Per‑user feeds and explicit content filtering enhance user experience

Disadvantages

  • Requires Docker or a Python/Node environment to run
  • Large libraries can take minutes to index and OCR can be CPU‑intensive
  • No native PDF editing or annotation beyond bookmarks
  • No built‑in cloud sync; relies on external file storage
  • Library organization must follow a strict folder structure
  • Requires manual backup of data volume for persistence
  • Limited to supported audio formats; no streaming services
  • Open source GPL license may restrict commercial use
  • No mobile app; relies on web UI
  • No automatic updates; must pull new Docker image or rebuild

Installation

docker

docker pull hunterreadca/grimoire:latest

native

Run Grimoire directly on the host with Python 3.12+ and Node 20+, following the instructions in docs/running-from-source.md

compose

cp docs/docker/docker-compose.yml docker-compose.yml
# Edit docker-compose.yml: set SECRET_KEY and volume paths
# Then start the service

docker compose up -d

FAQ

What is grimoire?

grimoire is an open-source project licensed under GPL-3.0.

What language is grimoire built with?

Primary language: JavaScript.

Is it free to use?

Yes. Licensed under GPL-3.0. Check the license for commercial use.

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for grimoire

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare
grimoire | MushyBook