Update OKF docs bundle, README, and CLAUDE.md for today's features

Documents the shift planning and closure/payroll modules (new tables,
routes, stores), the dark redesign, and the docker-compose-broken-host
workaround. Adds CLAUDE.md pointing agents at docs/. Translates README to
English and keeps host-specific infrastructure details out of the repo.
This commit is contained in:
Michal Pemcak
2026-08-16 18:35:56 +02:00
parent f917ed06a8
commit 94933cac5c
19 changed files with 728 additions and 106 deletions

View File

@@ -3,7 +3,7 @@ type: Architecture Overview
title: Build & deployment
description: esbuild backend bundle, Vite frontend build, the multi-stage Docker image, and how it ships to a host.
tags: [architecture, deployment, docker]
timestamp: 2026-08-12T12:00:00Z
timestamp: 2026-08-16T00:00:00Z
---
# Build & deployment
@@ -83,6 +83,28 @@ scp compose.yaml <host>:~/eatme/compose.yaml
ssh <host> "cd ~/eatme && docker compose up -d"
```
**Known issue on some hosts**: an outdated `docker compose` plugin can fail
outright on `up` with an API-version-negotiation error
(`client version 1.43 is too old`), with no sudo available to upgrade it.
Until that's fixed on the affected host, redeploy there with plain
`docker` commands instead, replicating `compose.yaml` by hand:
```bash
ssh <host> 'cd ~/eatme && docker stop eatme && docker rm eatme && \
set -a && source ./.env && set +a && docker run -d \
--name eatme --restart unless-stopped -p 8092:4000 \
-e GOOGLE_CLIENT_ID="$GOOGLE_CLIENT_ID" -e ADMIN_EMAILS="$ADMIN_EMAILS" \
-e JWT_SECRET="$JWT_SECRET" -e CORS_ORIGIN="$CORS_ORIGIN" \
-e COOKIE_SECURE="$COOKIE_SECURE" \
-v eatme_eatme_data:/app/data eatme:latest'
```
The volume name matters — it must match what `docker compose` would have
named it (`<project-dir>_<volume-key>`, i.e. `eatme_eatme_data` for this
repo) or the container starts with a fresh empty database instead of the
existing one. Check the running container first if unsure:
`docker inspect eatme --format '{{json .Mounts}}'`.
TLS termination is handled by an nginx reverse proxy in front of the
container (not part of this repo) — a template server block lives at
`deploy/<domain>` for whichever host runs nginx, proxying