No description
| client | ||
| server | ||
| shared | ||
| .gitignore | ||
| flake.lock | ||
| flake.nix | ||
| NOTES.md | ||
| package.json | ||
| PLAN.md | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| TODO.md | ||
| tsconfig.base.json | ||
wutzcalc
Festival drink-sale tracker. See PLAN.md for architecture, NOTES.md for the original requirements, and TODO.md for deferred work.
Toolchain setup
Requires Node.js 20+ and pnpm 9+. Native SQLite bindings install from prebuilt binaries on x86_64 / arm64 — no compiler needed for most setups.
Nix (Linux / macOS)
nix develop # node 20, pnpm, sqlite, build deps
Debian / Ubuntu
# Node 20 from NodeSource
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
sudo corepack enable # provides pnpm
# Only needed if a prebuilt better-sqlite3 binary is unavailable for your arch
sudo apt install -y build-essential python3
Windows
Install Node.js 20 LTS via the official MSI from https://nodejs.org (this also installs the optional "Tools for Native Modules"). Then in PowerShell:
corepack enable # provides pnpm
Use PowerShell to set env vars on the same line, e.g.
$env:ADMIN_PASSWORD="changeme"; pnpm dev:server.
Dev
pnpm install
ADMIN_PASSWORD=changeme pnpm dev:server # http://localhost:3000
pnpm dev:client # http://localhost:5173 (proxies /api, /admin)
Open http://localhost:5173/ for the tablet UI and
http://localhost:5173/admin.html for the backoffice.
Production build
pnpm install
pnpm build
ADMIN_PASSWORD=... DB_PATH=/var/lib/wutzcalc/wutz.db node server/dist/index.js
Single Node process serves the API, both client entries (/ tablet,
/admin backoffice), and writes to one SQLite file.
Env vars
PORT(default3000)HOST(default0.0.0.0)DB_PATH(default./wutz.db)ADMIN_PASSWORD(required for backoffice login)