No description
Find a file
2026-05-19 18:29:31 +02:00
client admin: drag-and-drop drink reordering per bar 2026-05-19 18:22:49 +02:00
server admin: add and rename bars 2026-05-19 18:18:10 +02:00
shared scaffold festival drink tracker (pnpm workspace, Fastify + SQLite, Preact tablet UI, admin) 2026-05-19 18:12:01 +02:00
.gitignore gitignore: drop local claude settings 2026-05-19 18:23:03 +02:00
flake.lock tablet: fit grid and cart on screen, no scrolling 2026-05-19 18:14:14 +02:00
flake.nix scaffold festival drink tracker (pnpm workspace, Fastify + SQLite, Preact tablet UI, admin) 2026-05-19 18:12:01 +02:00
NOTES.md initial reqs 2026-05-19 17:37:51 +02:00
package.json scaffold festival drink tracker (pnpm workspace, Fastify + SQLite, Preact tablet UI, admin) 2026-05-19 18:12:01 +02:00
PLAN.md scaffold festival drink tracker (pnpm workspace, Fastify + SQLite, Preact tablet UI, admin) 2026-05-19 18:12:01 +02:00
pnpm-lock.yaml scaffold festival drink tracker (pnpm workspace, Fastify + SQLite, Preact tablet UI, admin) 2026-05-19 18:12:01 +02:00
pnpm-workspace.yaml scaffold festival drink tracker (pnpm workspace, Fastify + SQLite, Preact tablet UI, admin) 2026-05-19 18:12:01 +02:00
README.md readme: warn that all code is AI-generated 2026-05-19 18:29:31 +02:00
TODO.md todo: note many-drinks tablet layout case 2026-05-19 18:23:49 +02:00
tsconfig.base.json scaffold festival drink tracker (pnpm workspace, Fastify + SQLite, Preact tablet UI, admin) 2026-05-19 18:12:01 +02:00

wutzcalc

⚠️ AI-generated code

Every file in this repository was written by an AI coding assistant. It has not been independently audited or reviewed line-by-line by a human. Before running this in any setting where correctness matters (real money, real events), read the code yourself, test the edge cases that matter to you, and assume there are bugs. Use at your own risk.

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)