-
-
Same cooler board on a phone: compost clock, kitchen chips, and crate photos.
-
Pickup run sheet: urgent first, then a short drive from Elk River. Print it for the cooler.
-
Farmer inbox: mark picked up, or release a no-show so the lot returns to the board.
-
The compost clock: unclaimed pounds and hours until these crates are trash — not a marketplace.
-
English and Spanish in the header so pantry and farm crews can share one board.
-
Claim a full lot or a split. Load-out gear and the kitchen name go to the farmer.
-
Crate photos, kitchen fit, and a compost-in overlay so Elk River can skip lots that will not last.
Inspiration
Elk River Food Pantry told us the Friday they cannot process tree-ripe peaches, the flats go in the compost. SurplusLink is the cooler board after that conversation.
The Earth Forward brief is about keeping food in kitchens instead of landfills. We did not want another marketplace with accounts and prices. We wanted the hours-before-compost view a pantry coordinator can actually use: what is on the farm, what still fits this kitchen, and which stop to hit first.
What it does
Farmers list leftover harvest with a condition tag, crate photo, load-out gear, and a compost clock. Kitchens (pantry, hot-meals, school, community fridge) claim a full lot or a split, then print a cooler run sheet — urgent first, then a nearest-neighbor drive from Elk River.
The board also shows kitchen fit vs condition (tree-ripe peaches are a poor fit for a pantry that cannot process them today, and a good fit for a soup line). Farmers get a pickup inbox: mark picked up, or release a no-show so the lot goes back on the board. English and Spanish toggle in the header. Reset demo restores this morning's seed harvest.
Impact numbers are briefing math, labeled as such: about 1.2 lb per meal and 2.5 kg CO₂e per kg vs landfill — not a lab measurement.
How we built it
Next.js 16, TypeScript, Tailwind v4, and shadcn/ui. All state lives in the browser (localStorage) so a judge can reset, claim, and print without signing in. The live demo is a Node web service on Render. Crate photos ship with the repo so the board looks like a cooler, not a spreadsheet.
Challenges we ran into
Keeping the carbon strip honest instead of a fake-precision calculator. Making partial claims and no-show releases feel like a real cooler, not a shopping cart. Hosting: this is a Next.js app, so a static-site host does not work — it has to be a Node web service. Fitting kitchen chips, filters, and crate photos on a phone without turning the board into a form.
Accomplishments that we're proud of
A single usable slice: post → claim (including a split) → run sheet → farmer inbox, with EN/ES, on a public URL. The compost clock and kitchen-fit tags make the Earth Forward point without a lecture.
What we learned
Food rescue fails on timing and fit, not on “more listings.” A pantry that cannot process tree-ripe fruit should see that as a poor match, not as a green claim button. Shipping a demo that judges can click in one minute beat adding accounts.
What's next for SurplusLink
A shared board (not just each browser), SMS or a printed slip for the farmer, and a real Friday with Elk River instead of seed data.
Built With
- localstorage
- nextjs
- react
- render
- shadcn-ui
- tailwindcss
- typescript
Log in or sign up for Devpost to join the conversation.