- TypeScript 49.2%
- Svelte 43.6%
- CSS 4.5%
- Dockerfile 2.1%
- HTML 0.6%
crypto.randomUUID() wymaga bezpiecznego kontekstu (HTTPS/localhost) i nie istnieje pod http://dnd-eq (LAN, zwykłe HTTP) — addItem rzucał wyjątkiem i klik "dodaj" nic nie robił. Fallback przez crypto.getRandomValues. Literówka w garodhalf.ts: "Oszczep" ucięte do "`p" we właściwości mistrzowskiej broni. Przy okazji: auto-format Zeda przeformatował app.css i garodhalf.ts (taby -> spacje, cudzysłowy). |
||
|---|---|---|
| data | ||
| docs | ||
| src | ||
| static | ||
| .dockerignore | ||
| .gitignore | ||
| .npmrc | ||
| _OceanofPDF.com_Dungeons_and_Dragons_Players_Handbook_2024_-_Wizards_of_the_Coast.pdf | ||
| bun.lock | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
dnd-eq
Webowa karta postaci do D&D 5e (zasady 2024) — na sesje rozgrywane na żywo. Zamiast papierowej karty: auto-liczone modyfikatory i DC, śledzenie HP / zasobów / slotów czarów, odpoczynki, stany i wyczerpanie. Mobile-first, ciemny motyw, czytelna przy stole.
Apka nie rzuca kośćmi — gracze rzucają fizycznie. Karta tylko liczy i śledzi.
Stack
- SvelteKit + Svelte 5 (runes) + TypeScript
- Bun — package manager i runtime
- SQLite (better-sqlite3 / bun:sqlite) — persystencja stanu sesji
Uruchomienie
bun install
bun run dev # http://localhost:5173
Skrypty
| Komenda | Opis |
|---|---|
bun run dev |
serwer deweloperski |
bun run build |
build produkcyjny |
bun run check |
typecheck (svelte-check) |
Architektura
Postać dzieli się na dwie warstwy: definicję (statyczne dane — staty, klasa, atuty) i stan sesji (zmienne — HP, zużyte sloty, stany), resetowany na długim odpoczynku. Zasoby są generyczne (pula vs ładunki + reguła odnawiania), więc karta jest niezależna od klasy. Wartości pochodne są zawsze liczone, nigdy przechowywane.
Status
Wczesny etap: pełna interaktywna karta z lokalną persystencją SQLite. W planach: tryb offline-first, edytor postaci w UI, multi-user, deploy.