diff --git a/Makefile b/Makefile index fe84387..8bfbc94 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ build: ## deps: install Node.js, pnpm and native-module build tools (Fedora) deps: require-root - dnf install -y nodejs gcc-c++ make python3 + dnf install -y nodejs gcc-c++ make python3 rsync corepack enable ## install: full production install on a fresh checkout (Fedora) @@ -41,9 +41,14 @@ service: require-root # Dedicated system user (no login, no home). id -u $(SERVICE_USER) >/dev/null 2>&1 || \ useradd --system --no-create-home --shell /usr/sbin/nologin $(SERVICE_USER) - # Copy the whole tree so pnpm's symlinked node_modules stay intact. + # Copy the tree (preserving pnpm's symlinked node_modules) but leave behind + # the repo metadata, local dev database, and editor/nix cruft. mkdir -p $(PREFIX) - cp -a . $(PREFIX)/ + rsync -a --delete \ + --exclude='.git' --exclude='.direnv' --exclude='.env' \ + --exclude='*.db' --exclude='*.db-wal' --exclude='*.db-shm' \ + --exclude='$(PREFIX)' \ + ./ $(PREFIX)/ # Config + secrets — never clobber an existing env file. mkdir -p $(CONFDIR) test -f $(CONFDIR)/wutzcalc.env || \ diff --git a/README.md b/README.md index a21460a..77a4d39 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ sudo useradd --system --no-create-home --shell /usr/sbin/nologin wutzcalc # 2. Install the built app (run `pnpm install && pnpm build` first) sudo mkdir -p /opt/wutzcalc -sudo cp -a . /opt/wutzcalc # or rsync/checkout into place +sudo rsync -a --exclude='.git' --exclude='*.db*' ./ /opt/wutzcalc/ sudo chown -R root:root /opt/wutzcalc # app dir stays read-only to the service # 3. Config + secrets (chmod 600 — holds ADMIN_PASSWORD) diff --git a/client/src/admin/Admin.tsx b/client/src/admin/Admin.tsx index 81884d3..40dc8b8 100644 --- a/client/src/admin/Admin.tsx +++ b/client/src/admin/Admin.tsx @@ -62,7 +62,7 @@ function Login({ onAuthed }: { onAuthed: () => void }) { value={pw} onInput={(e: any) => setPw(e.currentTarget.value)} /> - {err &&
{err}
} + {err &&
{err}
} @@ -107,7 +107,7 @@ function Stats() { <>

Umsatz nach Tagen

- +
@@ -227,7 +227,7 @@ function Drinks() { - + @@ -377,7 +377,7 @@ function Bars() { <>

Bars

{bars.map(b => ( -
+
- +
= {}; for (const p of fmt.formatToParts(d)) { @@ -49,7 +49,7 @@ function localParts(d: Date, tz: string = TZ): LocalParts { year: Number(parts.year), month: Number(parts.month), day: Number(parts.day), - hour: Number(parts.hour === '24' ? '0' : parts.hour), + hour: Number(parts.hour), minute: Number(parts.minute), second: Number(parts.second), };
TagTransaktionenBezahltCrew-TransaktionenPfand zurück