dune-tools/character-builder/README.md
Vantz Stockwell 39d6e7ac33 Use external port 9002 instead of 8080
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 07:30:55 -04:00

56 lines
1.4 KiB
Markdown

# 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/*.html` into `./data/*.json` via `scripts/extract.py`
Two containers: `app` (NestJS serving the SPA + API) and `valkey`. Wire-up in
`docker-compose.yml`.
## Run
```sh
docker compose up --build
```
Then open <http://localhost:9002>.
## Update data
If you save new HTML snapshots into `../sample-data/`, re-run the extractor:
```sh
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:
```sh
# 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`.