wutzcalc/README.md

1.8 KiB

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 (default 3000)
  • HOST (default 0.0.0.0)
  • DB_PATH (default ./wutz.db)
  • ADMIN_PASSWORD (required for backoffice login)