Personal · Desktop / TypeScript / Worldbuilding Tools
Lore-Forge
A local-first desktop app for writing the worlds, lore and characters of games, with a consistency checker that notices when the canon contradicts itself.
- Status
- Early prototype · v0.4
- Source
- Private source
- Period
- Started October 2026
- Role
- Owner: product, world format and rules
- TypeScript
- Node.js
- Electron
- Desktop Application Development
- Software Architecture & System Design
- Preact
- React Flow
- pdfkit
- docx
- node:test
01Interactive exhibit
Canon timeline
Mira Vell1752–1800
Tobin Ash1781–1849
Edda Marr1795–?
- 1790 · Opening of the Greyhaven Library: Edda Marr
- 1820 · Treaty of Ashford: Mira Vell, Tobin Ash
Check report
2 errors · 0 intended
- Errorbefore-birth· Acts before birth
Edda Marr can't open the Greyhaven Library in 1790: Edda Marr was born in 1795 (source: Characters/Edda Marr).
- Errorafter-death· Acts after death
Mira Vell can't sign the Treaty of Ashford in 1820: Mira Vell died in 1800 (source: Characters/Mira Vell).
02
Context & challenge
Game worlds grow across many documents: characters, places, factions, items and events, each with its own dates and relations. As the canon grows, contradictions creep in: a character takes part in an event after their recorded death, or a place is visited after it was destroyed.
Writers need to catch these early, without a database, a cloud service or a tool that rewrites their prose.
03
Approach
A world is a plain folder: world.json plus one Markdown file per entry, in a fixed key order so git and other tools can read it. Nothing leaves the machine.
A pure TypeScript core parses the folder, indexes names and aliases, works out who did what, when and where, and runs the rules on every change. The desktop app, the lore command-line tool and outside tools all share that core.
Dates are ranges, not points: a year covers the whole year, '~' widens a date by five years by default and '?' marks it unknown. A rule fires only when two ranges certainly do not overlap, so vague dates never raise false alarms.
04
My role
Personal project. I defined the product, the world format and the rules, and directed AI coding agents through the implementation, reviewing and shipping each change.
05
What was delivered
World format and calendars
Six entry types, custom calendars and approximate dates. Characters, places, factions, items, events and notes carry statuses, aliases and relations; calendars have eras and months; dates can be exact, approximate or unknown.
Consistency engine
16 rules over lifespans, dates, places, statuses and relations. Each warning shows the broken fact next to the canon fact and its source; severity can be tuned per world, and a deliberate contradiction can be marked intended.
Story chapters
Chapters are checked against the canon as they are written. A deterministic, offline extractor proposes new or updated entries, and nothing is written until the author accepts a proposal.
Views and publishing
Timeline, family tree and relationship web. A World Codex and a Story Book come from one document model and export as PDF, Word and Markdown.
06
Engineering decisions
Plain-text canon
Worlds are folders of git-diffable text files with a fixed key order, so diffs stay small and other tools can read them.
Ranges, not points
Every date is a range, and a rule fires only when two ranges certainly do not overlap.
Warnings inform, never block
Each warning has a stable id and can be marked intended; nothing stops the author from writing.
Proposals, not rewrites
Changes found in a story are proposals the author accepts or ignores, and the Story Book assembles what was written without rewriting prose.
07
Roadmap: not yet completed
- Documented but not built: an AI-based extractor that plugs into the same proposal pipeline, and tools such as AI-HQ reading worlds through the JSON export, the JSON check report and their versioned schemas.
- Published installers and a licence. Windows and Linux builds are configured but not released.
08
Status & outcome
An early working prototype (v0.4) that runs from source: worlds on disk, live consistency warnings, story proposals and print-ready books. The app itself contains no AI model.
09
Attribution & publication notes
- The timeline on this page is an original, simplified illustration with invented names. It is not a screenshot of the app and does not use the app's sample world.
- Repository is private.
Next project
CamelBot
