u/DataDemon

Cartulary: A free single-file worldbuilding tool for DMs

Cartulary: A free single-file worldbuilding tool for DMs

Link: https://drakhanas.itch.io/cartulary

!!UPDATED!!

Quick update for anyone who poked at this since the original post: v1.4 just shipped. The DM/worldbuilder-relevant pieces:

Multi-calendar support. Define additional calendars beyond the primary: one for the elves, one for the dwarves, one for the church that counts years differently from the empire that conquered it. Anchored to your primary via a single absolute-day reference, so the math stays honest when an entry's "Born 472 AY" also needs to render as "Born 1180 IC" from a different culture's frame. Date-bearing fields bind per-entry to whichever calendar fits the culture; cross-entry views carry per-view calendar selectors so you can switch frames at will.

HTML export. One self-contained .html file per world, for handing your players a navigable setting bible they can read in any browser without installing anything. Pre-rendered prose, working cross-references between entries, inlined images, current-moment-aware pin filtering on maps.

Version history. Snapshot-based undo for when you accidentally reset the wrong world. Auto-snapshots every five minutes, manual ones pin indefinitely, pre-import/reset/restore safety snapshots fire automatically. Lives in browser storage, so JSON export is still your canonical save. This is a session safety net, not a backup strategy.

Plus a calendar grid view with seasons and moon phases, the Maps view promoted to its own top-level surface (Cartographia), auto-age and obituary lines on character entries, and a visual design pass across the application. Still single-file, still MIT, still no subscription, still local-first.

   


==================
 
 
 

Cartulary is a worldbuilding tool that ships as one HTML file. You download it, open it in any modern browser, and you have a working app. Your data lives in IndexedDB scoped to that file path. Move worlds between machines by exporting JSON and importing on the other side.

It's free, MIT-licensed, no account required, no telemetry, no server, no internet connection needed after the initial download.

What's in it that matters for DM work

  • 22 pre-built templates covering Characters, Locations, Factions, Religions, Magic Systems, Creatures, Artifacts, Historical Events, Plot Threads, Cultures, Languages, and most things a campaign world contains. Every template is editable, you can delete the ones you don't want, and you can build your own.
  • Custom calendar with user-defined months and eras. Months can have any name and any day count. Era codes can be AD/BC, PR/AR, whatever your setting uses. Dates across the tool validate against your calendar.
  • Wiki-link syntax for cross-referencing entries. Type [[Faction Name]] in any description or note field and it becomes a clickable link. Autocomplete helps you find existing entries.
  • Five ways to look at the connections in your world:
    • A force-directed cross-reference graph that turns into a star map or planar diagram if you drag the nodes around.
    • A radial hierarchy view for any kind of branching structure (planar cosmologies, organizational charts, anything tree-shaped).
    • A family tree with lifespan dates and configurable depth limits.
    • A horizontal timeline with eras and parallel template lanes.
    • Interactive maps with time-aware pins (pins can appear and disappear based on which in-world year you're looking at).
  • Marriage reciprocity built in. Declare one character's spouse and the partner record updates automatically when you save.
  • Lock mode for read-only sharing. If you want to send a player a slice of your world without giving them edit access, the lock toggles all writes off.
  • Export options: Markdown (per entry, per family tree, or whole world), ZIP with embedded images, JSON canonical save format. HTML export is coming in v1.4.

On the architecture

Single file means no installer, no package manager, no version conflicts. If you find a USB stick with cartulary.html on it in twenty years you'll still be able to open your worlds. The whole React app, all dependencies, and all your fonts are inlined in the file. There's no network call after load.

Two builds ship in the zip. A precompiled version for daily use, around 1.8 MB. A JSX-preserved readable version, around 4.8 MB, which anyone can open in a text editor and read the source. That's the canonical source distribution. There's no separate repo, the readable build is the source.

AI disclosure (per Rule 8)

Cartulary is AI-assisted code. I directed the design, scope, schema, and QA. Claude wrote most of the implementation under my direction. The application itself doesn't use AI at runtime, it doesn't call any LLM or generate content for users, and it doesn't phone home. Once on disk it's a static deterministic app. The readable build ships the source so anyone can verify exactly what was built.

Honest limitations

  • Desktop only. The UI uses hover and right-click patterns that don't translate to phones. Mobile is not on the roadmap.
  • Hobby project. I work on it when I want to. No support contract, no release schedule. Bug fixes happen when bugs surface. Features happen when I decide to build them.
  • No multiplayer, no real-time collaboration. The lock mode is the sharing surface and it's read-only.

Current version is 1.3, released today.

u/DataDemon — 8 days ago