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:
@@ -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
|
||||
|
||||
@@ -3,7 +3,7 @@ type: Architecture Overview
|
||||
title: System overview
|
||||
description: How the EatMe frontend, backend, and database fit together.
|
||||
tags: [architecture, backend, frontend]
|
||||
timestamp: 2026-08-12T00:00:00Z
|
||||
timestamp: 2026-08-16T00:00:00Z
|
||||
---
|
||||
|
||||
# System overview
|
||||
@@ -13,7 +13,9 @@ one Docker image in production.
|
||||
|
||||
- **`backend/`** — Express + TypeScript API, SQLite via `better-sqlite3`
|
||||
(entry point `backend/src/index.ts`). Owns all state: employee whitelist,
|
||||
attendance events, sessions.
|
||||
attendance events, shift planning, pay rates, month closures, and
|
||||
payroll. Jest tests (`backend/src/services/*.test.ts`) cover the
|
||||
service-layer workflows.
|
||||
- **`frontend/`** — Vite + React + TypeScript PWA (entry point
|
||||
`frontend/src/App.tsx`). Talks to the backend only over `/api/*`; in dev,
|
||||
Vite proxies that path to `http://localhost:4000` (see
|
||||
@@ -37,11 +39,12 @@ one Docker image in production.
|
||||
|
||||
## Design language
|
||||
|
||||
The UI follows the "light monochrome TUI" style defined at
|
||||
`~/doc/concepts/ui/light-mono-tui.md`: grey page background, black type and
|
||||
1px borders, mono font, inverted fills for active/hover state, no accent
|
||||
colors, no border-radius. Implemented as plain CSS tokens in
|
||||
`frontend/src/styles/tui.css`.
|
||||
Dark, sharp-edged (no border-radius) UI with a single warm amber accent
|
||||
used sparingly (active tab, "this is mine" states) — not the colored
|
||||
left/right accent-border pattern common in AI-generated designs. Started
|
||||
as a light monochrome TUI style and was deliberately redesigned dark on
|
||||
2026-08-16; see [Design system](/docs/frontend/design-system.md). All
|
||||
tokens/component classes live in `frontend/src/styles/theme.css`.
|
||||
|
||||
## Related
|
||||
|
||||
|
||||
Reference in New Issue
Block a user