Latitude RPG campaign platform (Class MVP)
  • TypeScript 92.6%
  • JavaScript 4.4%
  • CSS 3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-14 18:46:16 -04:00
apps/campaign-platform docs: explain safe updates for persistent instance data 2026-09-14 18:46:16 -04:00
docs chore: separate private campaign material from platform source 2026-09-14 18:39:13 -04:00
fixtures chore: ship generic samples and drop instance-specific extras 2026-08-30 19:32:29 -04:00
packages chore: initial commit of Latitude Class MVP 2026-08-30 16:35:20 -04:00
scripts chore: standardize on Node 24 LTS 2026-09-02 16:28:32 -04:00
tests chore: separate private campaign material from platform source 2026-09-14 18:39:13 -04:00
tools chore: separate private campaign material from platform source 2026-09-14 18:39:13 -04:00
.gitignore chore: separate private campaign material from platform source 2026-09-14 18:39:13 -04:00
.npmrc chore: standardize on Node 24 LTS 2026-09-02 16:28:32 -04:00
.nvmrc chore: standardize on Node 24 LTS 2026-09-02 16:28:32 -04:00
AGENTS.md chore: separate private campaign material from platform source 2026-09-14 18:39:13 -04:00
package-lock.json fix: harden SIWD verification and browser sessions 2026-09-05 10:32:01 -04:00
package.json feat: expand campaign tools, card editing, and print layouts 2026-09-10 20:19:19 -04:00
README.md chore: separate private campaign material from platform source 2026-09-14 18:39:13 -04:00
tsconfig.build.json chore: initial commit of Latitude Class MVP 2026-08-30 16:35:20 -04:00
tsconfig.json chore: initial commit of Latitude Class MVP 2026-08-30 16:35:20 -04:00
vitest.config.ts chore: initial commit of Latitude Class MVP 2026-08-30 16:35:20 -04:00

RPG Campaign Platform

Self-hostable web software for managing tabletop RPG campaigns, characters, NPCs, monsters, game systems, versioned campaign settings, persistent campaign history, themes, and playable character sheets. Clone the repo, run an instance, and fill it with your campaigns and characters.

The current app lives in apps/campaign-platform/. latitude.ronhelwig.com is one operator's instance (a classroom MVP), not the canonical dataset. Runtime data stays on the host (apps/campaign-platform/data/ locally) and is not part of this repository.

The project is intended to be comparable in scope to tools like D&D Beyond, while remaining system-neutral. Game masters should be able to create campaigns, choose a game system and visual theme, create invite links for players, manage characters and campaign actors, and keep multiple campaign character views open during play. Players should be able to join campaigns from invites, create and edit characters, use those characters live at the table, and roll from character sheets or cards. Campaign assignment of characters is GM-controlled (players do not reassign campaigns themselves).

The platform is explicitly not a social network. It can publish read-only characters, campaigns, histories, and cloneable settings at links users share elsewhere, but it will not provide followers, feeds, likes, comments, direct messages, or a public social graph. Characters are externally visible only with both player consent and public-campaign consent.

This is a new project rather than a refactor of rpg-character-cards. The older project may provide content, import/export formats, rendering lessons, and printable card/PDF generation ideas, but this platform should be designed as a hosted multi-user web application from the beginning.

Current Status

Each install is a single instance (Node/TypeScript, SQLite + files; IPFS optional later): invite-only access, passkeys and/or username+password plus Sign-in with Dash, GM-created campaigns, and print packages from the site. Federation is not required to run an instance, but the design should stay federation-capable.

Longer-term design still lives in docs/SPECS.md, docs/ARCHITECTURE-DIRECTION.md (privacy-minimal, self-hostable, federated later), and the disposable federation lab in docs/SECOND-PROTOTYPE.md. Federation and multi-home sync can wait until a single-host instance is solid.

Also: docs/BUSINESS_PLAN.md, docs/SUSTAINABILITY-MODEL.md (including an optional later idea: hosted convenience subscriptions before federation, then moving accounts/campaigns between competing hosts), docs/DASH-INTEGRATION.md, docs/FEDERATION-AUTH-SYNC-RESEARCH-2026-08-07.md.

Run an instance

npm run dev:lan
# The launcher prints the LAN URL on port 8766. First visit creates the owner
# account; campaigns start empty unless you opt into example seeds.
# Use npm run dev only for loopback-only testing.

Implementation lives in apps/campaign-platform/. Production notes are in apps/campaign-platform/deploy/. Set CAMPAIGN_PLATFORM_PUBLIC_BASE_URL (and related env) to your hostname. After the owner exists, npm run seed:system-labs adds generic SRD sample characters for the bundled D&D rules profiles.

Checklist: docs/TASKS.md.

Campaign data

Keep campaign plans, player records, portraits, and operator deployment notes in a private data repository. This checkout contains reusable software and generic examples. See data discipline and migration guidance.

Goals

  • Hosted campaign and character management.
  • Game-master and player accounts.
  • Campaign membership and permissions.
  • Invite-link based campaign joining.
  • System-neutral character data and rules.
  • Live character editing and play views.
  • Click-to-roll support from sheets and cards, contributing to a persistent campaign history.
  • GM dashboard with multiple character tabs.
  • Campaign-level game system and theme selection.
  • Characters active in at most one campaign at a time; GM-only assignment/reassignment.
  • First-version import from rpg-character-cards and char_vault character data.
  • Operator-configured image imports and campaign-specific image styles.
  • MyRPG canon rules support from myrpg.ronhelwig.com.
  • Open-license game system variants and GM-authored homebrew derivatives.
  • Wiki-like campaign settings with structured rules, lore, versioning, cloning, attribution, public links, and an approval-based AI editing assistant.
  • Privacy-safe public campaigns that substitute anonymous placeholders for non-public player characters.
  • Future book, play, and screenplay drafts derived from canonical campaign histories without rewriting the history itself.
  • Import/export support for portable data.
  • Future printable cards, sheets, and PDFs.

Relationship To rpg-character-cards

rpg-character-cards is a local Python PDF/card generator. This project is a hosted web platform.

Possible future integrations:

  • Import existing .rpgdata characters.
  • Import .rpgcard card definitions.
  • Reuse or translate card/theme content.
  • Reuse character sheet, backstory page, and card display patterns.
  • Export printable PDFs or cards using a newer renderer.
  • Preserve local file portability where practical.