RECORDGOD
Go to file
type-two 5551963ef4 feat(3d): procedural cyclorama / infinity cove (new — not in WowPlatter)
The hip-hop room's north section is a real cyclorama (white curved infinity wall). Added a data-driven cove:
virtual_space gains cyclorama (comma list of north/south/east/west) + cyclorama_radius + cyclorama_color.
buildCyclorama() sweeps a profile per wall — [flat wall down to R] → [quarter-circle fillet radius R] →
[white floor lead-in] — so the floor curves up into the wall with no hard seam (the seamless studio look).
Cyclorama walls skip their flat wall (the cove replaces it). Set on hiphop-room (space 3): cyclorama=north,
R=0.9. v1 = single-wall cove (back curve); 3-sided + rounded vertical corners + partial-wall extent for the
L-shape = next iteration, all tunable via the columns.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 12:47:11 +10:00
.claude feat(builder): storefront customizer 2026-06-21 21:29:55 +10:00
app feat(3d): procedural cyclorama / infinity cove (new — not in WowPlatter) 2026-06-27 12:47:11 +10:00
site feat(buylist): wishlist scarcity ranking via DealGod /api/supply 2026-06-27 12:07:48 +10:00
webstore feat(3d): procedural cyclorama / infinity cove (new — not in WowPlatter) 2026-06-27 12:47:11 +10:00
wp-bridge feat(bridge): RecordGod WP bridge plugin (WowPlatter successor) + thumb on browse/release 2026-06-24 01:43:30 +10:00
.dockerignore fix(deploy): stop excluding webstore/ from the image — it broke the /store 3D mount 2026-06-26 17:10:05 +10:00
.gitignore feat: RecordGod founding — service scaffold + MariaDB→Postgres migration 2026-06-19 17:18:50 +10:00
audio_sync.py feat(shop): per-track Apple previews (lazy iTunes) + jog mini-player + dead-YouTube check 2026-06-23 23:44:17 +10:00
build_disc_cache.py feat: self-contained enrichment — disc_cache (own catalog copy), no external DB dependency 2026-06-21 13:16:56 +10:00
customer_woo_sync.py feat: Woo customer sync (non-destructive, in refresh.sh) + AusPost rates mirror & quote calc 2026-06-24 00:55:56 +10:00
disc_images_backfill.py feat(inventory): CRUD backend (add/edit/delete/bulk) — first cream from the WowPlatter audit; + migration audit doc 2026-06-22 22:39:17 +10:00
disc_sync.py feat(shop): per-track Apple previews (lazy iTunes) + jog mini-player + dead-YouTube check 2026-06-23 23:44:17 +10:00
Dockerfile feat: deploy-ready — env-aware Discogs enrichment + Dockerfile 2026-06-21 13:08:49 +10:00
Inertia Warner Stock List - 26062026.xlsx feat(distro): Inertia xlsx ingest + cost/new-used/margin in inventory editor 2026-06-27 11:39:39 +10:00
inertia.txt feat(distro): Inertia xlsx ingest + cost/new-used/margin in inventory editor 2026-06-27 11:39:39 +10:00
migrate_virtual.py feat(virtual): lift the 3D store out of WordPress — scene API + raw Three.js renderer 2026-06-19 17:59:52 +10:00
migrate.py feat(pos): full Sales console + migrate customers/discounts/settings 2026-06-22 02:40:35 +10:00
RAREWAVES_INGEST_PLAN.md feat(inventory): cost_price + cost_source + new/used split (distro-ingest foundations) 2026-06-27 10:49:51 +10:00
rarwacct.txt feat(distro): RareWaves order ingest → cost-tracked NEW stock + approval landing 2026-06-27 11:13:48 +10:00
rarworder2.txt feat(distro): RareWaves order ingest → cost-tracked NEW stock + approval landing 2026-06-27 11:13:48 +10:00
rarworder.txt feat(distro): RareWaves order ingest → cost-tracked NEW stock + approval landing 2026-06-27 11:13:48 +10:00
rarwwish1.txt feat(distro): RareWaves order ingest → cost-tracked NEW stock + approval landing 2026-06-27 11:13:48 +10:00
rarwwish2.txt feat(distro): RareWaves order ingest → cost-tracked NEW stock + approval landing 2026-06-27 11:13:48 +10:00
README.md feat: RecordGod founding — service scaffold + MariaDB→Postgres migration 2026-06-19 17:18:50 +10:00
RECORDGOD_AI_AGENT_BUILD.md docs(ai): detailed build plan for the RecordGod AI assistant (for review) 2026-06-24 16:22:04 +10:00
RECORDGOD_AI_AGENT_PLAN.md feat(connect): OpenRouter key + test in vault; AI agent integration plan 2026-06-24 16:12:19 +10:00
RECORDGOD_NAVIGATOR_PLAN.md feat(collections): Collections CRUD + fallback locator + Reorganize scan/apply/compress API + Collections UI 2026-06-22 20:56:34 +10:00
RECORDGOD_PLAN.md feat: RecordGod founding — service scaffold + MariaDB→Postgres migration 2026-06-19 17:18:50 +10:00
RECORDGOD_STOREFRONT_PLAN.md feat(storefront): P0 — public Browse (faceted release catalog) + Release detail pages + /shop/{browse,facets,release} API; Woo-transacted 2026-06-23 00:37:04 +10:00
refresh.sh feat: Woo customer sync (non-destructive, in refresh.sh) + AusPost rates mirror & quote calc 2026-06-24 00:55:56 +10:00
requirements-migrate.txt feat: RecordGod founding — service scaffold + MariaDB→Postgres migration 2026-06-19 17:18:50 +10:00
requirements.txt feat(distro): Inertia xlsx ingest + cost/new-used/margin in inventory editor 2026-06-27 11:39:39 +10:00
SCANGOD_BRIDGE_BRIEF.md feat(intake): ScanGod bridge — POST /admin/intake/scan (photo→staged product) + reply 2026-06-24 17:16:18 +10:00
SCANGOD_BRIDGE_REPLY.md docs(scangod): connection details for the DealGod bridge (network + auth, no secret) 2026-06-24 17:48:44 +10:00
SCANGOD_SPINE_MATCH_HANDOVER.md feat(auth): staff email+password login + password reset (login stays token-based under the hood) 2026-06-26 16:24:34 +10:00
schema.sql feat(pos): full Sales console + migrate customers/discounts/settings 2026-06-22 02:40:35 +10:00
shipping_sync.py feat(shipping): use current AusPost own-packaging rates (RecordGod not live pre-1-Jul, no dating needed) 2026-06-24 01:05:12 +10:00
test_smoke.py feat: RecordGod founding — service scaffold + MariaDB→Postgres migration 2026-06-19 17:18:50 +10:00
WAXMUSEUM_DEEPDIVE.md docs: Wax Museum report — three-layer model + feature matrix 2026-06-21 20:39:40 +10:00
WISHLIST_SCARCITY_DEALGOD_REPLY.md feat(buylist): wishlist scarcity ranking via DealGod /api/supply 2026-06-27 12:07:48 +10:00
WISHLIST_SCARCITY_DEALGOD_REQUEST.md docs(wishlist): scarcity needs a DealGod per-release supply endpoint (request brief) 2026-06-27 11:42:31 +10:00
WOWPLATTER_DEEPDIVE.md docs(audit): WowPlatter mega deep-dive + reorganise 2026-06-24 11:07:38 +10:00
WOWPLATTER_MIGRATION_AUDIT.md feat(inventory): CRUD backend (add/edit/delete/bulk) — first cream from the WowPlatter audit; + migration audit doc 2026-06-22 22:39:17 +10:00

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 — 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)

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 35 (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.