Featured Work · Founder Venture · Pre-AI build
LIVESNKRGarage.
A scraping pipeline plus an ISR-rendered release calendar that turns the sneaker market into glanceable, structured data. Live at snkrgarage.com.
Context
Sneaker reselling has real margin if you can move volume. The market is segmented by brand, model, condition, and timing. A pair of Jordans at retail can double on the right platform. Or break even if you bought wrong.
The hard part isn't picking. It's having current data when you decide. Most resellers find out about drops 30 minutes late. They refresh whatever sneaker blog they saw last week. That's how money gets left on the table.
I wanted to build the data layer first.
Approach
SNKRGarage aggregates upcoming drops from Nike SNKRS, Adidas, and New Balance into a single filterable release calendar. Brand, price, and date filters. Sneaker reselling and affiliate revenue layer on top.
Built before I started shipping AI work. The architecture, scrapers, image pipeline, and observability were assembled by hand. No LLM-assisted code generation. The Pierce Brand Agency that built this site is the AI-era counterpart.
Two services. Clean separation. MongoDB Atlas in the middle.
Frontend (snkrgarage)
- · Next.js 13 Pages Router · React 18 · TypeScript
- · MUI v5 · FullCalendar · Emotion · Sass
- · MongoDB Node driver in
getStaticPropsfor SSG/ISR - ·
/api/revalidateendpoint (API-key gated) for on-demand ISR - · Sentry + Vercel Analytics
- · Deployed on Vercel
Worker (snkrgarage-worker)
- · Node 19 · TypeScript · Express 4
- · tsoa for decorator-driven controllers and auto-generated OpenAPI spec
- · Nike SNKRS via JSON API (the easy path)
- · Adidas and New Balance via Puppeteer + puppeteer-extra (the hard path)
- · Browserless.io for hosted headless Chrome with rotating proxies
- ·
@imgly/background-removal-nodestrips backgrounds from new SNKRS images before storage - · Cheerio for HTML parsing, robots-parser for compliance
- · Winston + Morgan logs, Sentry exception capture
- · Task lifecycle persisted in Mongo: pending, in progress, image removal, completed, failed
- · Migrated AWS Elastic Beanstalk to Render.com, auto-deploy from main
Data layer
MongoDB Atlas as the single source of truth. Schema: Brand → Product (styleColor, name, brand, price, releaseDate, imageUrl, link, modifiedDate).
End-to-end flow
- Cron or manual trigger hits the worker with an API key.
- Worker scrapes the source, runs image background removal on new SNKRS products, upserts to Mongo with task-status updates.
- Worker calls Next.js
/api/revalidateto invalidate the ISR cache. - Next.js re-renders pages from fresh Mongo data. Users see the updated calendar.
Outcome
Three sources running daily. Drops appear in the calendar minutes after the source sites publish them. Filtering across brands and dates takes seconds instead of opening 12 tabs.
The infrastructure is the moat. Anyone can resell sneakers. Few have a current, structured view of three major drop sources in one place. SNKRGarage is the operating system on top of that view.
Reflection
The business taught me what brokerage owners feel like every day. You're juggling inventory, customer expectations, platform fees, returns, photography, and pricing. Any one of those failing kills the week.
The system maps onto PREP. Different inventory, same operational shape: ingest data, normalize it, make it actionable, save the human's time.
A few specific lessons that carried over:
- Mix the cheap path with the hard path. Nike has a JSON API. Adidas and New Balance need Puppeteer. Use whichever the source allows. Don't enforce architectural symmetry where the world isn't symmetric.
- OpenAPI-first via tsoa. Controllers double as the spec. Worth it on any backend exposed to multiple clients.
- ISR plus a revalidate hook. Static generation when you can, with explicit stale-cache invalidation when freshness matters. Better than fully dynamic for this shape of data.
- Build the data layer first. Everything else gets easier if the source of truth is clean.
Stack
TypeScript · Next.js 13 · React 18 · MUI · MongoDB Atlas · Node.js · Express · Puppeteer · tsoa / OpenAPI · Winston · Sentry · Vercel · Render · Browserless. Solo-built end to end: LLC formation, branding, content strategy, scraper, frontend, deployment, affiliate integrations. All shipped before I started shipping AI work.
Live at snkrgarage.com.
If your operation is hitting a similar multi-axis problem, the audit ($500) is the cheapest way to find which axis breaks first.