Skip to content

Introduction

Grimoire is a self-hosted web application for managing your tabletop RPG PDF collection. It runs as a Docker container, mounts your existing library folder, and gives you a clean browser-based UI to browse, search, and read your books from any device on your network.

What it does

  • Organizes your PDFs by game system and category, derived automatically from your folder structure, with no manual tagging required to get started
  • Indexes every page of every PDF for full-text search using SQLite FTS5, including OCR of image-only scanned PDFs
  • Renders PDF pages server-side as WebP images so the reader is fast even on mobile
  • Tracks maps, tokens, audio, and archive files alongside books in the same library, with a persistent global audio player
  • Supports campaigns (with a notes wiki, character sheets, and guest invites), bookmarks, favorites, OPDS feeds, and OpenID Connect authentication

What it does not do

Grimoire is a read-only viewer. It never modifies the files in your library folder. Adding, removing, or reorganizing files is done with whatever tool you prefer: a file manager, Calibre, Filebrowser Quantum, or just your OS. After making changes, trigger a Rescan in the Grimoire UI to pick them up.

Stack

LayerTechnology
BackendFastAPI (async Python 3.12)
DatabaseSQLite with FTS5 full-text search
PDF renderingPyMuPDF → WebP
FrontendReact 18, served by the FastAPI backend
Optional cacheValkey / Redis (page image cache)
AuthJWT + optional OpenID Connect

License

GNU General Public License v3.0. Source on GitHub.

Released under the GNU GPL v3.0 License.