- CLAUDE.md: replace 32-line per-feature tech changelog with consolidated tech stack, add project structure and data/storage sections, remove stale Recent Changes - README.md: rewrite for current feature set, fix bestiary description (import-based, not bundled), remove placeholder license section - Constitution v2.2.0: remove unused Agent Boundary principle (MAJOR), add README and CLAUDE.md sync rules to Development Workflow (MINOR) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
56 lines
1.8 KiB
Markdown
56 lines
1.8 KiB
Markdown
# Encounter Console
|
|
|
|
A local-first initiative tracker and encounter manager for tabletop RPGs (D&D 5e / 2024). Runs entirely in the browser — no server, no account, no data leaves your machine.
|
|
|
|
## What it does
|
|
|
|
- **Initiative tracking** — add combatants, roll initiative (manual or d20), cycle turns and rounds
|
|
- **Encounter state** — HP, AC, conditions, concentration tracking with visual status indicators
|
|
- **Bestiary integration** — import bestiary JSON sources, search creatures, and view full stat blocks
|
|
- **Persistent** — encounters survive page reloads via localStorage; bestiary data cached in IndexedDB
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js 22+
|
|
- pnpm 10.6+
|
|
|
|
## Getting Started
|
|
|
|
```sh
|
|
pnpm install
|
|
pnpm --filter web dev
|
|
```
|
|
|
|
Open `http://localhost:5173`.
|
|
|
|
## Scripts
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `pnpm --filter web dev` | Start the dev server |
|
|
| `pnpm --filter web build` | Production build |
|
|
| `pnpm test` | Run all tests (Vitest) |
|
|
| `pnpm check` | Full merge gate (knip, biome, typecheck, test, jscpd) |
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
apps/web/ React 19 + Vite — UI components, hooks, adapters
|
|
packages/domain/ Pure functions — state transitions, types, validation
|
|
packages/app/ Use cases — orchestrates domain via port interfaces
|
|
data/bestiary/ Bestiary index for creature search
|
|
scripts/ Build tooling (layer boundary checks, index generation)
|
|
specs/ Feature specifications (spec → plan → tasks)
|
|
```
|
|
|
|
## Architecture
|
|
|
|
Strict layered architecture with enforced dependency direction:
|
|
|
|
```
|
|
apps/web (adapters) → packages/application (use cases) → packages/domain (pure logic)
|
|
```
|
|
|
|
Domain is pure — no I/O, no randomness, no framework imports. Layer boundaries are enforced by automated import checks that run as part of the test suite. See [CLAUDE.md](./CLAUDE.md) for full conventions.
|
|
|