A DnD character builder built on top of Iroh for peer to peer connections! sheets.renatillas.dev
lustre dnd gleam
Gleam 69%
CSS 23%
JavaScript 8%
Rust <1%

README.md

Sheets #

A browser-based D&D 2024 character builder written in Gleam and Lustre. It loads rules data from a URL supplied by the user and keeps a local, versioned character library in the browser.

Features #

  • D&D 2024 classes, subclasses, species, backgrounds, feats, spells, and equipment
  • Level-by-level class features and choices
  • Final ability scores and modifiers, including background and feat bonuses, plus skills, armor class, hit points, initiative, passive Perception, spell preparation, and spell save calculations
  • Gold, inventory quantities, equipped items, and tool proficiencies
  • Play-state tracking for spell slots, limited-use class resources, short and long rests, Hit Dice, death saves, Inspiration, Concentration, Exhaustion, and conditions
  • Consumable quantities, tracked item charges, attunement, and configurable custom resources
  • Printable character sheet
  • Versioned JSON character import and export
  • End-to-end encrypted Iroh table sessions: players share their sheets and can inspect the other connected characters; the Game Master gets a complete read-only sheet for each player including current hit points, spell slots, Hit Dice, class resources, conditions, and other play-state counters

Rules data is supplied at runtime and is not configured in the application build.

Development #

Requirements: Gleam 1.17 or newer and Bun.

Start the Lustre development server:

gleam run -m lustre/dev start

Open http://localhost:1234, select Data in the header, and enter the base URL for a compatible rules data directory. The directory must contain races.json, backgrounds.json, feats.json, items-base.json, class/, generated/, and spells/. The URL is normalized with a trailing slash and stored only in the current browser.

Create a production build with:

gleam run -m lustre/dev build

Verification #

gleam format --check src test
gleam check
gleam test