RECORDGOD/app/main.py
type-two 8b48010b50 feat(virtual): lift the 3D store out of WordPress — scene API + raw Three.js renderer
- migrate_virtual.py: all 15 wp_rmp_disc_virtual_* tables → Postgres (~700 rows).
- app/virtual.py (public): GET /virtual/scene (geometry + slim front covers enriched
  from discogs_full), /virtual/crate/{id}/records (digging), /virtual/locate (locate-stock).
  Replaces payload.php — no WordPress bootstrap.
- webstore/index.html: walkable raw Three.js store (room/racks/crates from the data,
  pointer-lock FPS, click-to-dig hook), served same-origin at /store.
- Proven: 51 racks, 346 crates, 277 covers; locate release→crate works.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 17:59:52 +10:00

23 lines
742 B
Python

import pathlib
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from . import __version__
from .wowplatter_v1 import router as wowplatter_v1_router
from .virtual import router as virtual_router
app = FastAPI(title="RECORDGOD", version=__version__)
app.include_router(wowplatter_v1_router)
app.include_router(virtual_router)
# Serve the raw Three.js storefront same-origin (so /store can fetch /virtual/scene, no CORS).
WEBSTORE = pathlib.Path(__file__).resolve().parent.parent / "webstore"
if WEBSTORE.is_dir():
app.mount("/store", StaticFiles(directory=str(WEBSTORE), html=True), name="store")
@app.get("/healthz")
async def healthz():
return {"ok": True, "service": "recordgod", "version": __version__}