Skip to content

Configuration

All configuration lives in a .env file at the project root.

VariableDefaultDescription
JWT_SECRETrequiredMin 32-character secret for signing auth tokens.
CORS_ORIGINhttp://localhostComma-separated allow-list of client origins. Use * to allow any (the API is Bearer-token based, no cookies).
PORT80Host port for the web interface.
BACKEND_ORIGINbackend:3000Docker service name:port the frontend proxies /api to — not a host IP. Only change the port, to match a custom backend PORT.

BACKEND_ORIGIN is resolved over the internal Docker network, so it must use the backend’s service name (backend), not your server’s host or LAN IP.

The default compose only exposes the backend on the Docker network — it isn’t published to the host — so pointing BACKEND_ORIGIN at something like 192.168.1.10:3000 produces:

502 Bad Gateway
connect() failed (111: Connection refused)

If you run the backend on a custom PORT, change only the port (e.g. backend:3008).

Go to Settings → Exercise Library to see the current exercise count and a seeding progress indicator. Hit Re-sync to pull the latest exercises — it’s a safe upsert, so existing workout data is untouched.