42 lines
1.3 KiB
Markdown
42 lines
1.3 KiB
Markdown
# Quickstart: Edit Combatant
|
|
|
|
**Feature**: 004-edit-combatant
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
pnpm install # Install dependencies (if needed)
|
|
pnpm check # Verify everything passes before starting
|
|
```
|
|
|
|
## Development
|
|
|
|
```bash
|
|
pnpm --filter web dev # Start dev server at localhost:5173
|
|
pnpm test:watch # Run tests in watch mode
|
|
```
|
|
|
|
## Implementation Order
|
|
|
|
1. **Domain event** — Add `CombatantUpdated` to `events.ts`
|
|
2. **Domain function** — Create `edit-combatant.ts` with pure `editCombatant` function
|
|
3. **Domain tests** — Create `edit-combatant.test.ts` with acceptance scenarios + invariants
|
|
4. **Domain exports** — Re-export from `index.ts`
|
|
5. **Application use case** — Create `edit-combatant-use-case.ts`
|
|
6. **Application exports** — Re-export from `index.ts`
|
|
7. **Hook** — Add `editCombatant` action to `useEncounter` hook
|
|
8. **UI** — Add inline name editing to `App.tsx`
|
|
|
|
## Verification
|
|
|
|
```bash
|
|
pnpm check # Must pass — format + lint + typecheck + test
|
|
```
|
|
|
|
## Key Files to Reference
|
|
|
|
- `packages/domain/src/add-combatant.ts` — Pattern to follow for domain function
|
|
- `packages/domain/src/remove-combatant.ts` — Pattern for "not found" error handling
|
|
- `packages/application/src/add-combatant-use-case.ts` — Pattern for use case
|
|
- `apps/web/src/hooks/use-encounter.ts` — Pattern for hook wiring
|