# Fiesta — LOCAL configuration (docker-compose.local.yml). # # This is the file you get by default: APP_ENV unset means `.env.local`. # Production values live in `.env.production` and are only loaded by asking: # APP_ENV=production ./nearle # # Keep every host here pointing at localhost. The whole point of the split is # that running the server locally cannot reach live data by accident. # # `.env`, `.env.local` and `.env.production` are all gitignored (`.env.example` # is the one exception) — and for a reason: this repository's history already # contains a committed `.env` from before 2026-08-03, so those credentials are # in the history and should be rotated. Do not add another. # # `loadEnv()` in main.go reads `.env.$APP_ENV` from the working directory, so # `go run .` from this folder picks this file up with no flags. # ── Where it listens ──────────────────────────────────────────────────────── # Production serves on 1009 (see .env.production). Change this locally to run # beside something else; the console then points at the same number. APP_PORT=1122 ENV=development # ── The main database (nearledb) ──────────────────────────────────────────── # # ⚠️ POINTING THIS AT PRODUCTION MAKES LOCAL TESTING WRITE TO PRODUCTION. # # There is no "local mode" that protects you: `go run .` against the live host # creates real tenants, real logins and real stock movements, and main.go runs # schema migrations on boot. If the point of running locally is to try a change # before it is deployed, a local Postgres with a dump restored into it is the # only version that actually does that. # These match docker-compose.local.yml, so `docker compose -f # docker-compose.local.yml up -d` and `go run .` work together with no edits. DB_HOST=localhost DB_PORT=5433 DB_NAME=nearledb DB_USER=nearle DB_PASSWORD=localdev # ── The catalogue database (pgvector) ─────────────────────────────────────── # # A separate connection on purpose, so catalogue work never touches nearledb. # Leave blank to start without it: catalogue endpoints then fail at query time # rather than at boot, which is fine for testing anything else. # 5434, not 5432: a developer machine usually has something on 5432 already, # and a silent connection to the wrong database is worse than a refused one. CATALOGUE_DB_HOST=localhost CATALOGUE_DB_PORT=5434 CATALOGUE_DB_NAME=cataloguedb CATALOGUE_DB_USER=nearle CATALOGUE_DB_PASSWORD=localdev # ── Redis — POS terminal presence, under a TTL ────────────────────────────── # # Optional. Losing the health board is an inconvenience; losing a sale is not, # so the API runs without it. # Set to enable POS terminal presence. The local compose publishes redis on # 6379, so localhost is all it needs; leave blank to run without it. REDIS_HOST=localhost REDIS_PORT=6379 REDIS_USER= REDIS_DB=0 # ── Auth ──────────────────────────────────────────────────────────────────── JWT_SECRET_KEY= USER_CONTEXT_KEY=