Niche Collector — Collection Tracker + Price Intelligence
Description and use
Niche Collector uses Sanity and Next.js to track collectible values, computing portfolio metrics with GROQ and filtering outlier listings.
Problem
Hobbyists need a way to track the value of niche collectibles (Hot Wheels, Gunpla, keyboards) and compare purchase prices to current market values, while filtering out outlier listings that distort valuations.
Outcome
The Niche Collector app demonstrates how structured content and GROQ enable accurate, outlier‑aware portfolio tracking for niche collectibles, outperforming keyword search and generic CMS solutions.
Workflow
- 1. Define structured schemas for hobbyCategory, collectibleItem, collection, priceHistory, and wishlist in Sanity.
- 2. Embed Sanity Studio in Next.js using NextStudio at /studio with basePath and CORS configured.
- 3. Populate the dataset with seed items and price history records, marking outliers with isOutlier=true.
- 4. Write GROQ queries to compute portfolio totals, item gains, and filtered price histories.
- 5. Render portfolio stats on /collection using server‑side data fetching.
- 6. Provide Vision queries for debugging and data inspection.
- 7. Deploy to Vercel with vercel.json outputDirectory set to .next.
- 8. Add SEO assets (opengraph-image, sitemap, robots, JSON‑LD).
Evidence
Portfolio tracker for niche hobbies (Hot Wheels, Gunpla, Mechanical Keyboards) that proves why structured content beats keyword search.
The trick: a scam Rp 5,000,000 listing is flagged isOutlier=true and excluded from the median — so your portfolio stays honest.
Try answering “total market vs total purchase for owned grails” with full‑text search. You can’t. You need math::sum(*[_type=="collectibleItem" && status=="owned"].currentValue) and a filtered priceHistory join on item._ref.
- Record date: 2026-09-22T16:30:48.905Z