Understand the platform. Build your own tools.
Build real modules and systems: start with a complete tutorial, install its project and verify the result. Then explore the API and contracts.
A practical starting point
Implementation tutorials 29
Learn to build modules and systems
Choose what you want to build and follow it from the first file to a working tabletop feature.
Implementation tutorialsCreate, install and update your first module
From an empty folder to a table button, with complete files, installation, activation and a second version.
Implementation tutorialsAll extension capabilities and where to implement them
An explicit method-by-method map to projects, local helpers, surfaces, server integrations and release limits.
Implementation tutorialsHow to create a complete original system package
One installable ZIP with working actor/token sheets, item types, stored initiative and three original compendium packs.
Implementation tutorialsHow to create a journal module
Build, install and run a normal module that creates private journals and appends saved GM session drafts.
Implementation tutorialsCreate a journal from a module, from scratch
Use the public create operation from a table.interface form and open the resulting private document.
Implementation tutorialsHow to create a module that acts on a sheet
Start with an empty folder and ship a working rename action on existing actor and token sheets.
Implementation tutorialsHow to build and replace a complete system sheet
Use the working Example Expedition package, install it, create actors and verify linked and independent tokens.
Implementation tutorialsHow to create a compendium module
Build the complete package from an empty directory, install it and verify its original content.
Implementation tutorialsHow to include compendiums in a system
Build the complete package from an empty directory, install it and verify its original content.
Implementation tutorialsHow to create a scene tools module
Build a working module to inspect scene layers, edit metadata, manage folders, draw a native door and broadcast a test scene.
Implementation tutorialsHow to create a token tools module
Place, move, duplicate, configure and remove tokens; control native vision/visibility and timed conditions.
Implementation tutorialsHow to create a combat tools module
Build a working encounter laboratory covering participants, initiative, order, flags, turns, rounds and cleanup.
Implementation tutorialsHow to build item and inventory tools
Create, organize, duplicate, share and edit original items with native revisions and permissions.
Implementation tutorialsHow to build deck and card tools
Create reusable deck definitions, draw, reveal, move, transfer and recover cards with real ownership.
Implementation tutorialsHow to build scene audio and soundtrack tools
Configure native tracks, playlists, spatial sources, scene voices and timed scores with the correct revisions.
Implementation tutorialsHow to build chat, dice and ready-check tools
Create a working module that sends messages, publishes rolls, moderates chat, searches documents and updates readiness.
Implementation tutorialsHow to create quest automation and quest-board actions
Create and read a real quest, advance objectives, assign actors and manage every board relationship.
Implementation tutorialsHow to create, draw and reset weighted roll tables
Build an original journal roll table, edit a weight without losing data and publish native draws with or without replacement.
Implementation tutorialsHow to create, organize and share journal documents
Build native rich diaries, preserve pages when editing, organize folder trees and control access and presentations.
Implementation tutorialsBuild an actor-directory module
Create, organize, rename and authorize actors using system-owned types.
Implementation tutorialsPersist module settings safely
Implement personal, shared and browser-local JSON with revisions and cleanup.
Implementation tutorialsUpload and use module and campaign files
Use File/Blob, actor images, card assets, native file providers and downloads.
Implementation tutorialsTranslate a module and react to changes
Read package files, format translated UI and subscribe without leaking listeners.
Implementation tutorialsMaintain a module using the original host.call SDK
Concrete actor/token DTOs, opaque revisions and the remaining multipart/local operations.
Implementation tutorialsBuild Customize forms and native module windows
A complete personal settings form with migration, CAS, translations, modal lifecycle and preferences mounting.
Implementation tutorialsCreate a trusted Django integration and server hooks
Complete Python app with authenticated routes, native mutations and after-commit signals.
Implementation tutorialsHow to create and activate an installation language package
Package six original interface strings, install globally, choose a personal locale and verify English fallback.
Implementation tutorialsHow to version, sign and distribute a module
Prepare immutable ZIP releases, verify Ed25519 catalog records and understand installation, activation and revocation.
Examples by kind 29
Complete examples by kind
Choose a contract and jump to complete code, downloadable files, expected behavior and validation.
Examples by kindBrowser module: a campaign summary
A complete package with a table action, authorized API read and native modal.
Examples by kindSystem package: an editable character sheet
A single original system package with actor types, a complete minimal sheet and revision-aware saving.
Examples by kindLanguage package: Portuguese and Spanish catalogs
A minimal installation-wide language package with valid catalogs, activation and English fallback.
Examples by kindDjango package: an owner-only server endpoint
A trusted server app with a valid manifest, AppConfig, URL and permission-checked read view.
Examples by kindactor.directory: Readable actor counter
Count actors whose sheets the current member may open, and update after actor changes.
Examples by kindactor.sheet: Actor sheet revision inspector
Read the real actor sheet and display its name, sheet revision and top-level data keys beneath the native sheet.
Examples by kindtoken.sheet: Linked or independent token inspector
Read the token’s own sheet context, so an independent snapshot is never replaced by actor data.
Examples by kinditem.directory: Item counts by type
Group readable items by their package-owned type, without assuming an RPG catalog.
Examples by kinditem.sheet: Item data inspector
Show the actual item name, type, version and system-owned data as safe JSON below its native editor.
Examples by kindscene.directory: Scene broadcast status
Distinguish the scene broadcast to players from the scene the GM is navigating.
Examples by kindscene.controls: Scene information control
Add a working button that reads the mounted scene and opens its dimensions and grid in the native modal.
Examples by kindscene.overlay: Scene center marker
Mark the scene center and keep its position correct under pan and zoom without capturing pointer input.
Examples by kindchat.log: Visible chat statistics
Count only the messages returned by the authorized history and report their visible authors.
Examples by kindcombat.tracker: Current turn summary
Show encounter activity, round and the current visible combatant, without implementing initiative rules.
Examples by kindjournal.sheet: Journal outline
Show the journal title, type and only the section titles in its authorized projection.
Examples by kindpreferences: Persistent personal density preference
Save a personal compact/comfortable preference with compare-and-swap revisions, and make a concurrent conflict visible.
Examples by kindtable.interface: Authorized document search
Search table documents from a workspace panel and render their names, kinds and snippets as text.
Examples by kindSearch: all 7 kinds and the empty filter
Eight concrete browser functions, quest versus journal categories, authorized recents and validation.
Examples by kindActor images: portrait and token
Two complete File-picker mount functions using the actual multipart host.call operation.
Examples by kindCompendium entries: all five kinds
Capture actor, item, journal, scene and deck resources with authorized reads and GM imports.
Examples by kindCompendium packs: 3 installed and 7 local types
Complete original JSON for every pack type, exact manifest restrictions and downloadable fixtures.
Examples by kindBlueprint examples for every object kind
Choose a complete recipe for door, lever, torch or region, then inspect execution/data connections and all 44 node types.
Examples by kindBlueprint kind door: open, close and preserve a lock
A complete v2 door graph that opens a closed door, closes an open door and leaves a locked door unchanged.
Examples by kindBlueprint kind lever: a two-state switch and an Empty Object
A complete off/on toggle, with the same kind reused by an image-free private controller.
Examples by kindBlueprint kind torch: turn the mechanism and set the flame
A composed torch example with independent state and flame actions in both toggle branches.
Examples by kindBlueprint kind region: a pressure plate with first/last occupancy
Complete enter/exit graphs that open a referenced door on first arrival and close it on last departure.
Examples by kindConnection kinds: execution and data, a complete graph
Trace a lever graph that reads a state through typed data edges and runs actions through ordered execution edges.
Examples by kindAll 44 Blueprint node types, with complete examples
Concrete configurations and downloadable validated graphs for every NODE_TYPES entry, from event to cooldown.
Project reference 19
Getting started
Installation, prerequisites, first launch and source checkout setup.
Project referenceArchitecture
Runtime boundaries, domain services, permissions and persistence.
Project referenceCode map
Find the files and domain responsible for each application workflow.
Project referenceDevelopment
Development workflow, migrations, generated contracts and release preparation.
Project referencePublic API reference
Python API, browser domain API, SDK operations, payloads and error contracts.
Project referenceSystems and modules
Installable packages, system declarations, browser lifecycle, signing and SDK contracts.
Project referenceFrontend architecture
Jinja2, Datastar, native JavaScript, PixiJS, styles and asset preparation.
Project referenceTesting
Django, node:test, Playwright and native validation with disposable data.
Project referenceConfiguration
Installation-local configuration, execution profiles and environment settings.
Project referenceDeployment
Hosting, security, reverse proxies, backups and operational recovery.
Project referenceWindows installer and Runner
Native Windows preparation, portable tools, startup and recovery.
Project referenceLinux installer and Runner
Native Linux preparation, portable tools, dependencies and platform limits.
Project referencemacOS installer and Runner
Native macOS preparation, portable tools, startup and platform support.
Project referenceMap Builder reference
Builder workflows, Smart Objects, automation, supported limits and developer contracts.
Project referenceUniversal VTT import and export
Import/export workflows, coordinates, limits and authorization.
Project referenceApplication workflow reference
Complete project guide to campaign preparation and tabletop tools.
Project referenceEthical module porting
Licenses, content rights and mapping an integration to the owning domains.
Project referenceContributing
Contribution conventions, licensing, review and validation requirements.
Project referenceLicensing
Project licensing, independent module permission and third-party obligations.
How to use AI 8
How to use AI to create an RPG system
Build sheets, item templates and automation as one installable package for the host version you actually use.
How to use AIHow to use AI to create a browser module
Add a useful interface feature using the scoped browser API, permissions and the module lifecycle.
How to use AIHow to use AI for a Python integration
Use the public Python facade from trusted server code while preserving campaign authorization and transactions.
How to use AIHow to use AI to plan a Smart Object
Turn an interaction idea into a verified Map Builder node plan, then simulate and playtest it.
How to use AIHow to use AI to investigate a bug
Give the assistant a reproducible case, trace it to the owning domain and verify the cause before changing code.
How to use AIHow to use AI to write useful tests
Turn a behavior change into focused Django, node:test or Playwright coverage with disposable data.
How to use AIHow to use AI to translate an extension
Prepare English, Portuguese and Spanish catalogs through the official translation mechanism.
How to use AIHow to use AI to contribute to the core
Prepare a focused change in the correct layer, with compatible contracts, aligned documentation and reviewable validation.