1.7 KiB
1.7 KiB
Quickstart: Add Combatant
Feature: 002-add-combatant
Prerequisites
pnpm install
Development
pnpm test:watch # Watch all tests
pnpm vitest run packages/domain/src/__tests__/add-combatant.test.ts # Run feature tests
pnpm --filter web dev # Dev server at localhost:5173
Merge Gate
pnpm check # Must pass before commit (format + lint + typecheck + test)
Implementation Order
- Domain event — Add
CombatantAddedtoevents.tsand theDomainEventunion - Domain function — Create
add-combatant.tswith the pureaddCombatantfunction - Domain exports — Update
index.tsto re-export new items - Domain tests — Create
add-combatant.test.tswith all 6 acceptance scenarios + invariant checks - Application use case — Create
add-combatant-use-case.ts - Application exports — Update
index.tsto re-export - Web hook — Update
use-encounter.tsto exposeaddCombatantcallback - Web UI — Update
App.tsxwith name input and add button
Key Files
| File | Action | Purpose |
|---|---|---|
packages/domain/src/events.ts |
Edit | Add CombatantAdded event type |
packages/domain/src/add-combatant.ts |
Create | Pure addCombatant function |
packages/domain/src/index.ts |
Edit | Export new items |
packages/domain/src/__tests__/add-combatant.test.ts |
Create | Acceptance + invariant tests |
packages/application/src/add-combatant-use-case.ts |
Create | Use case orchestration |
packages/application/src/index.ts |
Edit | Export new use case |
apps/web/src/hooks/use-encounter.ts |
Edit | Add combatant hook callback |
apps/web/src/App.tsx |
Edit | Name input + add button UI |