76 lines
2.2 KiB
Markdown
76 lines
2.2 KiB
Markdown
# 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](PLAN.md) for architecture, [NOTES.md](NOTES.md)
|
|
for the original requirements, and [TODO.md](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)
|
|
|
|
```sh
|
|
nix develop # node 20, pnpm, sqlite, build deps
|
|
```
|
|
|
|
### Debian / Ubuntu
|
|
|
|
```sh
|
|
# 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:
|
|
|
|
```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
|
|
|
|
```sh
|
|
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
|
|
|
|
```sh
|
|
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)
|