# RecordGod

**The records back-office engine — the best of WowPlatter, reborn on Postgres, outside WordPress.**

RecordGod ingests WowPlatter's *job* (inventory, import, enrichment, labels, copy, queries)
but not WowPlatter's *code*. It runs as its own service on the VPS, calls DealGod for market
value, and feeds WordPress the tidy data it likes for the storefront.

WowPlatter is the **ancestral founder** — still running the live shop floor, and the reference
spec RecordGod matches before it retires anything. Honour the founder: don't redesign what
already works, copy it.

## Start here
- **[RECORDGOD_PLAN.md](RECORDGOD_PLAN.md)** — the plan, the map, the keep/drop triage, build
  order, and the open decisions. Read this first.

## The family (sibling repos on this machine)
| Repo | What it is | Talks to RecordGod via |
|---|---|---|
| `../dealgod` | The **market** brain — cross-store value, arbitrage. Its own product. | RecordGod *calls* it (`X-API-Key`) for value |
| `../PRICEGOD` | The seller **extension** (Discogs cockpit). Successor to pliceclogs. | Calls RecordGod's `wowplatter/v1` contract |
| `../wowplatter` | The founder — WP/WooCommerce plugin running the live store. | RecordGod publishes tidy data to it |

Briefs that define the contracts already live in `../PRICEGOD/DEALGOD_BRIEF.md` and
`../PRICEGOD/WOWPLATTER_BRIEF.md`. All three still hold; RecordGod is who fulfils the
WowPlatter side of them.

## Run it (dev)
```bash
python3 -m venv .venv && ./.venv/bin/pip install -r requirements.txt
RECORDGOD_TOKEN=dev-tok ./.venv/bin/uvicorn app.main:app --reload --port 8010
./.venv/bin/python test_smoke.py    # self-check — no DB/infra needed
```
Postgres schema: `psql recordgod < schema.sql`.

Live now: `GET /wowplatter/v1/ping`, `GET /wowplatter/v1/inventory/lookup?release_id=`.
Routes 3–5 (price / labels / intake) are intentionally **404** — PRICEGOD reads that as
"pending" and degrades gracefully, so an undefined route is the correct "not built yet" signal.

## Layout
```
app/
  main.py          FastAPI app + /healthz
  db.py            async SQLAlchemy over asyncpg (twin of DealGod's db.py)
  auth.py          require_token — Bearer; the one place the auth scheme lives
  wowplatter_v1.py the contract router (ping + lookup live)
schema.sql         minimal inventory table, release_id-keyed, store_id seam
test_smoke.py      infra-free self-check
```

_Status: founding — scaffold runs, smoke test green. 2026-06-19._
