Skip to content
dannyclarkdevPublic

About

An open source campaign manager for Dungeon Masters and Game Masters.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

175 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

demgem

An open source campaign manager for Dungeon Masters and Game Masters.
Prepare sessions, run encounters, and keep track of your campaign.

CI MIT license PHP 8.4 Laravel 13 Livewire 4 Self-host with Docker

Run it · What it does · Documentation · API · Changelog


Session view with opening notes, initiative, hit points, conditions, encounter budget, and player display controls.

Session notes, combat tracking, and player display controls.


About demgem

Use demgem to plan sessions, track combat, share maps and handouts, and write recaps. Keep your NPCs, locations, quests, and notes linked to the sessions where you need them. Players can follow initiative, manage their characters, and read what you've shared with them.

You can use it with any game system. The optional SRD 5.2.1 ruleset adds 330 creatures, encounter budgets, and a 5e character sheet. Without a ruleset, you can add your own creatures and use the rest of the campaign tools.

What it does

🎬 Session prep

Plan an opening, arrange scenes, and prepare secrets and clues. Add NPCs, locations, monsters, and treasure to each session. During play, notes autosave and you can reveal secrets as needed. Publish a recap afterward; unrevealed secrets carry over to the next session.

⚡ Live initiative and dice

Turn order and rounds update across everyone’s screens as the GM advances combat. Players see health descriptions, and dice rolls are shared with the table. GMs can also roll privately.

🖥️ Player display

Open /screen on a TV or shared monitor to show the party an encounter, handout, map, or progress clocks. Switch what’s displayed from the session view.

⚔️ Encounter tracking

Track initiative, hit points, conditions, concentration, death saves, and legendary and lair actions. Estimate encounter difficulty from Trivial to Deadly, add creatures with their stats from the compendium, and duplicate encounters for reuse.

📖 Creature compendium

Browse 330 SRD creatures by type and challenge rating, or write your own in Markdown. Use Copy to my campaign to make an editable copy of an included creature.

📜 5e character sheets

Manage ability scores, proficiencies, expertise, hit dice, and spell slots, with modifiers calculated automatically. Players can edit their sheets, record damage, and take a long rest.

🗺️ Maps, handouts, and clocks

Upload maps with pins linked to campaign pages or other maps. Pan, zoom, and reveal pins as the party explores. Attach up to ten files to a handout and update progress clocks during play.

🌙 Custom calendars

Define months, weeks, moons, leap rules, and eras for your setting. View the current date on the dashboard, moon phases on the calendar, and events and sessions on a timeline.

🧭 Campaign wiki

Organize characters, locations, factions, items, quests, arcs, journals, and notes. Pages support Markdown, [[wiki links]], backlinks, tags, nesting, images, and search. GM notes and :::secret blocks stay hidden from players, including in search and API responses.

🧾 Quests and party records

Track quest objectives and when they were completed. Group quests and sessions into story arcs. Record party decisions, money, items, downtime, faction reputation, family trees, and relationships between pages.

📦 Export and import

Download a campaign archive with JSON data, images, attachments, and Markdown pages you can open in Obsidian. Export JSON on its own if you only need the data. Import either format into another demgem installation.

🔌 API, Discord, and scheduling

Access campaign data through /api/v1 with the same permissions as the app. Send recap notifications to Discord. Members can RSVP, vote on session times, and receive reminder emails.

Campaign dashboard with the current date, next session, latest recap, party, and active quests. Monthly calendar with moon phases and session dates. Player view of combat with the current round, turn order, and party health.
Campaign dashboard World calendar Player combat view

Run it in three commands

Requires Docker 24 or newer with Compose v2. All application dependencies run in containers.

cp .env.docker.example .env.docker
docker compose run --rm --no-deps app php artisan key:generate --show   # paste the key into APP_KEY in .env.docker
docker compose up -d

Open http://localhost:8000 and register. After the first account is created, registration requires an invite link. The stack runs the app, a queue worker, the scheduler, the Reverb websocket server, PostgreSQL, and Redis. The Docker guide covers ports, HTTPS, object storage, and running without the websocket.

For a development machine with PHP 8.4, Node 20, and PostgreSQL, see Local setup. The guide also covers seeding a demo campaign with GM and player accounts.

Documentation

Guide What it covers
Local setup Requirements, installation, background services, and demo data.
Docker Services, configuration, and deployment.
Live table Websockets, Reverb, proxies, and polling fallback.
Reminders, Discord, and calendar feeds Email, scheduling, webhooks, and calendar subscriptions.
Export and import Campaign archives, JSON, and Obsidian exports.
Templates and body history Reusable page templates and previous versions.
API API keys, endpoints, and permissions.
Contributing Code conventions, development commands, configuration, and timezones.
Changelog Feature history and implementation plans.

Built with

Laravel 13, Livewire 4, Alpine, and Tailwind 4, on PHP 8.4. Reverb handles live updates. The app uses PostgreSQL in production and SQLite for local tests.

Contributing

Issues and pull requests are welcome. See the contributing guide for setup, conventions, and testing. CI runs Pint, Larastan, and Pest tests on PostgreSQL, then builds and boots the Docker image.

Content licensing

demgem's code is licensed under MIT. The creature data in database/srd/ comes from the System Reference Document 5.2.1, published by Wizards of the Coast LLC under CC BY 4.0.

This work includes material taken from the System Reference Document 5.2.1 ("SRD 5.2.1") by Wizards of the Coast LLC and is licensed under the Creative Commons Attribution 4.0 International License, available at https://creativecommons.org/licenses/by/4.0/legalcode.

The attribution notice appears in the compendium and SRD stat block API responses. See attribution requirements and dataset provenance for details.

License

MIT. See LICENSE.

About

An open source campaign manager for Dungeon Masters and Game Masters.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages