Skip to content

RV Catalog

Repo: savvydealer-adam/rv-catalog · Path: C:/Users/adam/rv-catalog · Owner: Adam Status: Active dev · % Done: 35 · Last commit: 2026-04-15 Deployed: Cloud Run rv-catalog (savvydealer-website project) — dashboard URL TBD

What it is

Central RV knowledge base and API for SavvyDealer's RV vertical. Owns manufacturer / model / floorplan data. Dealer websites call this instead of maintaining their own RV data.

Why it exists

RV dealers need consistent specs, floorplans, and images across every site we build. Fragmented data = broken VDPs and stale specs. One service, many sites.

How it works

FastAPI backend + React/Vite admin dashboard + SQLite (will upgrade to Cloud SQL if it outgrows) on Cloud Run. - REST API: /api/manufacturers, /api/models, /api/floorplans, /api/lookup, /api/images, /api/health/* - Per-manufacturer scraper modules in backend/scrapers/ - Admin dashboard monitors coverage across 60+ manufacturers - MCP server wrapper for Claude Code access - Markdown snapshot backup script (initial snapshot 2026-04-15)

What's done

  • FastAPI backend + routers scaffolded
  • React admin coverage dashboard
  • 65 manufacturers seeded
  • SQLite schema + MCP wrapper
  • Cloud Run deploy pipeline

What's next

  • Wave 1 scrapers: Thor, Berkshire Hathaway, Winnebago flagships (pending)
  • Full coverage across 65+ manufacturers
  • Production subdomain (rv-catalog.savvydealer.com)
  • Upgrade to Cloud SQL when SQLite becomes the bottleneck

Where the code lives

  • backend/ — FastAPI app + routers + per-manufacturer scrapers
  • dashboard/ — React/Vite coverage dashboard
  • mcp/ — MCP server wrapper
  • scripts/ — seed + migration scripts
  • PLAN.md — architecture + API contract

Integrations

  • Consumed by stl-rv-website (first RV dealer site) and future RV dealer sites
  • Feeds inventory enrichment for rv-inventory API
  • Paired with rv-research (market research + schema design)

Don't rebuild this — extend it

Need a new manufacturer? Add a scraper module in backend/scrapers/ and register it — the API + dashboard auto-pick it up.