Commitd24a155
docs(claude): correct prod DB — it's Neon, not the local postgres container
docs(claude): correct prod DB — it's Neon, not the local postgres container Verified 2026-07-13: the app's DATABASE_URL points at Neon (ep-solitary-fog-...aws.neon.tech). All reads/writes + migrations go to Neon (confirmed: migration 0111 applied there, owner_id nullable). The compose's local postgres container is unused leftover (the app ignores it) — do NOT back it up or query it as production. Earlier commits in this session wrongly claimed the local container was prod. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 file changed+10−5d24a155260bb05e65795346ba8034974043c9683
1 changed file+10−5
ModifiedCLAUDE.md+10−5View fileUnifiedSplit
@@ -54,8 +54,13 @@ SSH server port (2222) is not exposed; always go via Tailscale.
5454**Runtime layout on the box (verified 2026-07-12):**
5555- App runs via `docker compose -f docker-compose.standalone.yml` in
5656 `/opt/gluecron` (services: `gluecron`, `postgres`, `autoheal`).
57- **Database is the local `postgres` container (pgvector/pg16)** — NOT Neon.
58 Any doc claiming Neon in production is stale.
57- **Database is Neon** (managed Postgres, `ep-solitary-fog-...aws.neon.tech`).
58 The app's `DATABASE_URL` (in `/opt/gluecron/.env`) points at Neon, so ALL
59 reads/writes and migrations go there — Neon provides PITR. NOTE: the compose
60 also starts a local `postgres` (pgvector/pg16) container, but the app IGNORES
61 it (it's leftover/unused dead weight, like the caddy service). Do NOT back up
62 or query the local container thinking it's production — target Neon via the
63 app's `DATABASE_URL`. (Verified 2026-07-13.)
5964- Bare repos live in the docker volume `gluecron_git-repos`
6065 (host path `/var/lib/docker/volumes/gluecron_git-repos/_data`), mounted
6166 into the container at `/data/repos`. The host-side `/data/repos` dir is
@@ -105,7 +110,7 @@ Do not skip it. Do not refactor locked files. Do not stop mid-block.
105110
106111- **Runtime:** Bun
107112- **Framework:** Hono (with JSX for server-rendered views)
108- **Database:** Drizzle ORM + PostgreSQL (local pgvector/pg16 container in prod; Neon works for dev)
113- **Database:** Drizzle ORM + Neon (managed Postgres) in prod
109114- **Git:** Smart HTTP protocol via git CLI subprocesses
110115
111116## Development
@@ -190,7 +195,7 @@ src/
190195## Environment Variables
191196
192197See `.env.example` for required variables. Key ones:
193- `DATABASE_URL` — PostgreSQL connection string (prod: local postgres container)
198- `DATABASE_URL` — PostgreSQL connection string (prod: Neon; set in `/opt/gluecron/.env`)
194199- `GIT_REPOS_PATH` — directory for bare git repos (default: `./repos`)
195200- `PORT` — HTTP port (default: 3000)
196201
@@ -200,7 +205,7 @@ See `.env.example` for required variables. Key ones:
200205- **Deploy trigger:** `git push gluecron main` → `post-receive.ts` → `scripts/self-deploy.sh` → systemd reload.
201206- **Fly.io:** decommissioned (fly.toml kept for reference, not active).
202207- **Vercel:** disconnected — do not reconnect.
203- **Database:** PostgreSQL via `DATABASE_URL` (prod: pgvector/pg16 container on the box).
208- **Database:** Neon (managed Postgres) via `DATABASE_URL`; has built-in PITR.
204209- **Logs:** `/var/log/gluecron-self-deploy.log` on the server; live stream at `/admin/deploys`.
205210
206211## Skills available for this project
207212