Offline Electron app seeds 10 system presets, supports create-from-scratch designer with palette/drag/resize/bricks, and exports .ttrpg-system.json for the player. Co-authored-by: Cursor <cursoragent@cursor.com>
1.1 KiB
ADR-001: Stack and storage
Decision
Electron + React + TypeScript + Vite; SQLite with JSON documents for systems/characters; portable app/shared contract for future TTRPG Player + mobile.
Rationale
Matches TTRPG Player packaging targets; offline-first; no Postgres.
ADR-002: Formula DSL
Decision
Custom minimal expression language (floor, ceil, round, min, max, clamp, arithmetic, attr.* / skill.* / resource.* / derived.*).
Rationale
Same evaluator can be copied into the player; explicit rounding; no heavy CEL/JSONata dependency.
ADR-003: Schema freeze via snapshotHash
Decision
Player binds store snapshotHash (content-addressed) rather than inline full schema per character.
Rationale
Implements freeze-on-bind without bloating players.json.
ADR-004: Spells from dnd.su
Decision
Provide an import pipeline for PHB-labelled spells from dnd.su at product owner request, with README/IP disclaimer. Prefer SRD stubs in default presets.
Rationale
Owner requested PHB coverage; redistribution risk acknowledged.