Wealthior Marketplace is the public face for the Wealthior Claude Code plugin ecosystem. One Next.js app indexes both the public marketplace and the org-private marketplace, lets users search across plugins, skills and agents, and renders rich detail pages from raw repo metadata.
The challenge
Claude Code reads plugins directly from GitHub, which means the source of truth lives in marketplace.json files across multiple repos. Useful for the client. Useless for discovery, sharing, and SEO. We needed a destination URL that humans actually land on, with search, categorisation and per-plugin detail pages, without duplicating the metadata.
Approach
- Turborepo monorepo:
apps/webNext.js 16 App Router site,packages/marketplace-schemashared Zod types formarketplace.jsonandplugin.json,packages/configshared TS config. - Supabase Postgres as read-optimised index, populated by a GitHub webhook on each plugin repo push. Schema and RLS live in
supabase/migrationsso the whole DB is reproducible. - RSC plus ISR for index and detail pages, so the heavy lifting is build-time and edge cache hits dominate steady state.
- Vercel OG generates per-plugin OpenGraph cards on demand.
- Mock data fallback in
lib/data.tskeeps local development fast without Supabase credentials.
Outcome
market.wealthior-group.ch ships as the canonical discovery URL for Wealthior plugins. New plugin merged into a marketplace repo: webhook fires, Supabase row upserts, ISR revalidates, plugin is searchable inside a minute. No CMS, no manual editorial step, no drift between repo and site.

