# 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 . ## 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`.