Players can pick up intel from points of interest on the map beyond what levelling grants. Add a "Bonus Intel" card alongside the Character XP card with an editable input. The character totals strip now shows the combined intel (levels + bonus) with a small "+N" badge when a bonus is present. Existing builds without the field migrate cleanly via the existing defaults-merge in store.ts. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| backend | ||
| data | ||
| frontend | ||
| scripts | ||
| .dockerignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| README.md | ||
Dune Awakening — Character Builder
Plan your character across House, Class, Character XP, Specializations, Faction Standing, and Skill Trees. Shareable via short link.
Stack
- Frontend: Vue 3 + Vite + TypeScript
- Backend: NestJS (Node 22, TypeScript)
- Storage: Valkey (Redis-compatible) for build sharing
- Data: extracted from
../sample-data/*.htmlinto./data/*.jsonviascripts/extract.py
Two containers: app (NestJS serving the SPA + API) and valkey. Wire-up in
docker-compose.yml.
Run
docker compose up --build
Then open http://localhost:9002.
Update data
If you save new HTML snapshots into ../sample-data/, re-run the extractor:
uv run python3 scripts/extract.py
This regenerates ./data/*.json, which the container picks up on next build.
API
POST /api/builds— body is a build payload (any JSON ≤16 KB). Returns{ code }(8-char URL-safe id).GET /api/builds/:code— returns{ code, build }.GET /api/data/:file— serves the static JSON tables (allow-listed).
Builds are stored in Valkey with a rolling 1-year TTL (refreshed on each fetch), so popular shared builds don't expire.
Dev (without Docker)
In two terminals:
# backend
cd backend && npm install && VALKEY_URL=redis://localhost:6379 npm run start:dev
# frontend
cd frontend && npm install && npm run dev
The Vite dev server proxies /api/* to localhost:3000.