AZ
All writing
1 min read

Inventory that expires: modelling cutoff times

nextjsprismapaystackmarketplace
Part of the projectPrechopA campus food pre-order marketplace — "order before they cook" — with dated listings, cutoff times, and Paystack prepay.View project

Prechop's tagline is "order before they cook," and that preposition is the entire product. A vendor posts a dated listing with a cutoff time; students pre-order and prepay; the kitchen cooks to demand it can actually see.

A catalog with a clock

Most marketplaces sell from standing inventory. Prechop sells from inventory that doesn't exist yet and expires. A listing is orderable only until its cutoff, after which it locks for the kitchen. That single constraint reframes the whole thing: it isn't a store, it's a scheduling problem where each listing is a window that opens and closes.

Prepayment is the commitment device

Cutoffs only mean something if the demand behind them is real. Paystack prepayment is what makes a pre-order binding — a vendor can commit to cooking a known quantity because the orders are already paid, not just intended. The money turns "maybe" into a number the kitchen can trust.

The build

A Next.js / TypeScript frontend (tested with Vitest + Playwright) over a Node/ TypeScript API on Prisma. The relational model earns its place here: listings, their cutoffs, and paid orders have clear, enforced relationships, and "is this still orderable?" is a query, not a guess.

Back to the projectPrechopSee the full case study and related write-ups.View project