Building this took me down a rabbit hole I genuinely didn't expect.
Sharing because the problem turned out to be way more nuanced than
"search a database of boxes."
**The pitch:** niceboxfinder.com — enter item L × W × H + weight,
get real shipping box listings ranked by true landed cost.
**Why I built it:** I flip on eBay. Every time I shipped something
I either grabbed a too-big box (and got hammered by USPS DIM weight)
or bought a 50-pack and used 4 of them. Existing box-finder sites
just match dimensions — none of them factor in what the carrier
actually charges.
**Where the math got interesting:**
- **DIM weight ranking.** Every result has to factor what UPS, FedEx,
and USPS will actually bill you on. A 2-lb item in a 16x12x12 box
gets billed as 14lbs by UPS (volumetric > actual). So the cheapest
box on paper isn't the cheapest landed cost.
- **Pack-size math.** A $0.50/each pack of 100 looks cheap until
you realize you only need 5 boxes — that's $10/useful-box, not
$0.50. Had to write a "useful-box-cost" formula that respects how
often you actually ship at that size.
- **Easy Reshape.** A reseller showed me a technique where you cut
slits in two opposing walls and fold an oversized box down to a
smaller one, zero waste. The math: `newW = shortSide / 2`,
`newL = longSide + shortSide / 2`, `H unchanged`. Now baked in —
if you already own a box that's close, the tool suggests the
reshape with step-by-step.
- **Pre-warming the cache.** eBay Browse API has a 5K per day quota (got
it bumped to 50K via support ticket last week). To make popular
box sizes feel instant, I pre-warm Redis for the top 30 standard
sizes every 6 hours via a Vercel cron. ~120 calls per day baseline;
first-search latency dropped from ~800ms to ~80ms.
**Stack:** Next.js 16 App Router on Vercel · Upstash Redis for cache
· Supabase Postgres for price history (captured day 1 — turns into a
RapidAPI product later) · eBay Browse API for listings · Cloudflare
for DNS · EPN-approved so the Buy buttons are tracked affiliate links
(that's what funds the project; no ads above fold, no email signup).
**What's broken / what I'd do differently:**
• eBay-only sourcing for now — Amazon, Walmart, Home Depot, Staples
on the roadmap but each scraper is its own swamp
• Snugness scoring is rough at edge cases (asks: how to fairly rank
a box that's tight on L but loose on W?)
• Price history is captured but no UI for it yet — chart was deprio'd
for launch
• ResultCard component has more logic than it should — needs a
refactor before I add Amazon
**What I'd love feedback on:**
• If you're a builder: what's the jankiest part of the flow you can
spot? Where does it feel like a side-project and not a product?
• If you ship physical things: try a real search and tell me if the
result feels honest. The Easy Reshape feature is the one I'm least
sure I got right.
Link: niceboxfinder.com
Happy to answer build/stack/launch/EPN questions in comments — first
real launch post for me, lots to learn.