Clean up project documentation and constitution for post-MVP maturity
- 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>
This commit is contained in:
43
README.md
43
README.md
@@ -1,10 +1,17 @@
|
||||
# Initiative Tracker
|
||||
# Encounter Console
|
||||
|
||||
A turn-based initiative tracker for tabletop RPG encounters. Click "Next Turn" to cycle through combatants and advance rounds.
|
||||
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
|
||||
- Node.js 22+
|
||||
- pnpm 10.6+
|
||||
|
||||
## Getting Started
|
||||
@@ -14,9 +21,7 @@ pnpm install
|
||||
pnpm --filter web dev
|
||||
```
|
||||
|
||||
Open the URL printed in your terminal (typically `http://localhost:5173`).
|
||||
|
||||
The app starts with a 3-combatant demo encounter (Aria, Brak, Cael). Click **Next Turn** to advance through the initiative order. When the last combatant finishes their turn, the round number increments and the cycle restarts.
|
||||
Open `http://localhost:5173`.
|
||||
|
||||
## Scripts
|
||||
|
||||
@@ -24,5 +29,27 @@ The app starts with a 3-combatant demo encounter (Aria, Brak, Cael). Click **Nex
|
||||
|---------|-------------|
|
||||
| `pnpm --filter web dev` | Start the dev server |
|
||||
| `pnpm --filter web build` | Production build |
|
||||
| `pnpm test` | Run all tests |
|
||||
| `pnpm check` | Full merge gate (format, lint, typecheck, test) |
|
||||
| `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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user