A companion application for game masters of various TTRPG formats. This application allows a game master to plan, and then subsequently execute a game plan for player sessions. As development continues, support for additional game mechanics will be added, via a "Rules" framework, more to come later.
As far as game masters are concerned, running a TTRPG campaign is associated with two primary actitivies: preparation (planning), and execution (running the campaign with players).
This application breaks down this process into two clean steps. First, the user is able to plan out their campaign, or at least some overarching critical storypoints. Notably, the plan will be able to be modified on the fly, with new branches able to be spun off, and a notion of "executed" storypoints.
To fit this theme, the "installation" and "usage" instructions are outlined below, as "Preparation" and "Execution."
This installation section is required.
-
Ensure poetry is installed on your system as per their websites instructions.
- Configure your preferred virtualenv defaults before proceeding.
-
Run
poetry install -
Activate your poetry environment. Poetry's instructions
Note: First complete the above Python setup
This section is optional; it is only required if you intend to use the web functionality.
- Ensure NodeJS is installed on your system, giving access to the
npmcommand.- On Windows, you can use the
winget install --id OpenJS.NodeJS --source wingetcommand (assuming the ID has not changed as of 10/09/25) to install the appropriate build.
- On Windows, you can use the
- Run
python -m campaign_master -hto see more exhaustive usage information.
This module can first and foremost be run in two different ways, as a local applet (a Qt application), or as a web server.
The switch from serving via FastAPI to serving via Qt is considered trivial thanks to the build step. If a hybrid mode is desired, just serve the static files via Qt.For this mode of operation, NodeJS is not required.
Simply run python -m campaign_master --gui [--debug]
This will launch a Qt Application where you can interface with your local file system to load relevant configuration files.
The debug flag can be used for more verbose logging.
Simply run python -m campaign_master --web [--debug]
The debug flag can be used for more verbose logging.
NOTE: in this use case, it also launches the development server using uvicorn. See the host (default: 127.0.0.1 aka localhost) and port (default: 8000) arguments.
- nginx (production server, wip)
- None more anticipated.
- Pydantic (Business logic)
- FastAPI (Serving business logic)
- uvicorn (local development server)
- PySide6 (Qt framework for client-side interface app)
- More to be added as developed.
- RSBuild (Pre-compilation of app before serving)
- TypeScript (TypeScript flavored React, see their documentation)
- Tanstack
- More to be added as developed.