MVP ForSale Promo Storefront
About this MVP
MVP ForSale (mvp.forsale) is a server-rendered promotional listing storefront for an MVP Hub-style marketplace, built on Next.js 16 (App Router) and React 19 with plain JavaScript and zero UI-framework dependencies. It is a read-only catalog frontend: every page fetches the marketplace catalog server-side from MVP Hub's public API, so crawlers and link previews receive full HTML, and every buy action deep-links back to the marketplace with UTM attribution. SEO is the core feature set — per-listing metadata and Open Graph tags, schema.org Product JSON-LD with offer price and aggregate rating, canonical URLs, a live sitemap.xml generated from the catalog, robots.txt, and noindexed search results. The catalog UX covers category landing pages with data-derived subcategory chips, faceted search (category, tech stack, capability, price slider), client-side sort, listing detail pages with gallery, seller-provided markdown body (rendered with raw HTML stripped), readiness badges, verified-review counts, and multi-variant "from" price ranges. Data-integrity guards are built in: reviews are never fabricated, unpriced listings never show $0, demo buttons only render for real demo links, and sold-out or coming-soon sale statuses are respected. The visual theme is a distinctive hand-drawn wireframe aesthetic (Kalam handwriting font, sketch-style browser chrome) that is deliberately easy to re-skin: one CSS file, design tokens at the top. Easy to set up — clone, set three env vars (API origin, public marketplace origin, canonical site origin), pnpm install, pnpm dev; ships with a BuildKit-secret Dockerfile producing a Next.js standalone image with a liveness health route for blue/green deploys. Pluggable against any backend exposing the /api/mvps list + detail contract. Ideal for marketplace operators who want a second themed storefront or SEO promo surface for the same catalog, agencies white-labelling listing sites, and developers who want a clean reference for server-rendered catalog SEO on the App Router.
Seeded as a rebrandable storefront template sold as one bundle: the server-rendered catalog app, the full SEO layer, data-integrity guards, and a Docker standalone image with a liveness route for blue/green deploys. Configuration is three env vars; no database of its own. Listed without seeded reviews or ratings by design.
Tech stack
Features
What's included
Details, reviews & discussion
Fit and launch readiness
Review the product stage, ownership terms and launch evidence before choosing your build.
- Type
- MVP Kit
- MVP level
- Functional MVP
- Ownership
- Non-exclusive license
Who it's for
Marketplace operators wanting a second themed storefront for the same catalog, agencies white-labelling listing sites, and developers needing a clean server-rendered catalog SEO reference.
Problem solved
Gives a marketplace a crawlable, SEO-first promo surface on its own domain — server-rendered pages, per-listing structured data, live sitemap, and honest data fallbacks — without touching the core platform, so discovery work ships independently of checkout and seller tooling.
Readiness evidence
Seeded as a rebrandable storefront template sold as one bundle: the server-rendered catalog app, the full SEO layer, data-integrity guards, and a Docker standalone image with a liveness route for blue/green deploys. Configuration is three env vars; no database of its own. Listed without seeded reviews or ratings by design.
MVP ForSale — a Server-Rendered Promo Storefront for Your Marketplace Catalog
A themed, read-only listing storefront built on Next.js 16 (App Router) and React 19. Point it at an MVP Hub-style public API and it becomes a second, fully crawlable surface for the same catalog — with its own domain, its own look, and every buy action deep-linking back to your marketplace with UTM attribution.
Why you need this MVP
A marketplace lives or dies on discovery. Your main product handles accounts, checkout, and seller tooling — but a promo storefront is a different job: a lightweight, SEO-first catalog surface you can put on a memorable domain, re-skin per audience, and iterate on without touching the core platform.
The hard part of that job is invisible: server rendering so crawlers see real HTML, per-listing structured data so Google shows price and stars, a sitemap that tracks the live catalog, canonical URLs, honest fallbacks when data is missing, and an image pipeline that doesn't break when a CDN host changes. This storefront ships all of it as a finished baseline.
Key benefits
- Server-rendered catalog. Every page fetches the catalog server-side — full HTML for crawlers and link previews, no loading-spinner shell. API responses are cached for 60 seconds, including the POST detail endpoint.
- The SEO layer is done. Per-listing metadata + Open Graph, schema.org
ProductJSON-LD (offer price, aggregate rating — emitted only when real data exists), canonical URLs, catalog-drivensitemap.xml,robots.txt, noindexed search results. - Honest by construction. No fabricated reviews, no $0 prices for unpriced listings, demo buttons only when a real demo link exists, sold-out and coming-soon statuses respected. Trust is the product; the storefront never lies about the catalog.
- Real catalog UX. Faceted search (category, tech stack, capability, price slider), category landing pages with subcategory chips derived from live data, sortable browse grid, listing detail with gallery, seller markdown body (raw HTML stripped), readiness badges, and multi-variant "from" pricing.
- Re-skinnable theme. The hand-drawn wireframe aesthetic (Kalam handwriting font, sketch browser chrome) lives in one CSS file with design tokens at the top. Swap the tokens, keep the machinery.
- Ops baseline included.
Dockerfile.deploybuilds a Next.js standalonenode:24-alpineimage (non-root) with a/api/healthliveness route for blue/green swaps; build-time env arrives as a BuildKit secret so nothing lands in a layer. The image-optimizer allowlist is derived from env, with a safe per-image unoptimized fallback for unknown hosts. - Fails loudly, degrades gracefully. Production refuses to run with an unset API origin; if the API goes down at runtime, cached pages keep serving and cold requests show a clear source-connection error instead of a blank page.
How you can use it
- Marketplace operators — run a promo domain for the same catalog your main product serves
- Agencies — white-label a listing storefront per client or per niche
- Founders — validate a vertical (e.g. "booking apps only") with a themed slice of an existing catalog
- Developers — a clean, dependency-light reference for App Router catalog SEO done right
What is included
- Next.js 16 App Router + React 19, plain JavaScript, zero UI-framework dependencies
- Home, browse, faceted search, category landing pages, listing detail
- Per-listing metadata, OG tags, Product JSON-LD, canonicals, sitemap, robots
- Sanitised seller-markdown rendering (react-markdown, raw HTML stripped)
- Env-driven config: API origin, public marketplace origin, canonical site origin, optional image CDN allowlist
Dockerfile.deploy(standalone output, BuildKit env secret, non-root, health route)- Hand-drawn wireframe theme in a single tokenised CSS file
Tech stack at a glance
- Frontend: Next.js 16 (App Router) + React 19, JavaScript
- Rendering: dynamic server rendering with 60s API response caching
- SEO: schema.org Product JSON-LD, OG, sitemap, robots, canonicals
- Markdown: react-markdown (raw HTML stripped)
- Ops: Docker standalone image, BuildKit secret env, liveness probe
Pluggable against any backend exposing the /api/mvps list + detail contract — MVP Hub out of the box.