Case study · Our own product
pickup.kitchen: an ordering and meal-plan platform we built and run for food businesses
pickup.kitchen is our own live product. Restaurants, cafes, bakeries, caterers and meal-prep companies, of any cuisine, each get a storefront of their own, take card payments, run the day from one kitchen screen and, for meal-plan stores, send drivers out on planned routes. It is also the clearest evidence we have of how we build: one codebase, real payments and a product we run ourselves.
- Type
- Multi-tenant ordering and meal-plan platform
- Built for
- Food businesses of any cuisine
- Payments
- Stripe, with a Shopify link for in-person sales
- Stack
- Next.js, TypeScript, PostgreSQL
- Hosting
- Vercel
- Status
- Live, built and run by us
The problem food businesses had
Most kitchens we looked at ran on whatever was nearest to hand. Orders arrived as texts and direct messages, the menu lived in a PDF or a photo, and a dish that had sold out was still being ordered. Meal-plan customers asked to skip a day or pause a week by message, and someone redrew the delivery list by hand, in a spreadsheet and a maps app, the night before.
A kitchen needs more than a payment form. It needs slots that close when they are full, a day that can be marked sold out, and a plan that survives a skipped Thursday.
- Orders by text and direct message, retyped onto a kitchen ticket
- Sold-out dishes still being ordered
- Meal-plan skips and pauses handled by message
- Delivery routes drawn by hand the night before
What we built
pickup.kitchen gives each food business its own storefront, a screen to run the kitchen from and, for meal-plan businesses, the tools to deliver. These are the parts that are live.
- Its own storefront. Each kitchen gets a site on a pickup.kitchen subdomain or on its own domain, with its own menu, prices, logo and colors.
- Menus, stock and sold-out handling. Dishes with photos and prices, stock counts, a whole-day sold-out switch, and pickup or delivery slots that close when they are full.
- Card payments through Stripe. Each kitchen connects its own Stripe account, and payments and refunds are handled inside the platform.
- A Shopify link for in-person sales. Kitchens that ring up walk-in orders on Shopify POS keep that link, and those orders land alongside the online ones.
- Live order tracking. After checkout the customer gets a link that shows the order moving from preparing to ready, or on its way.
- A kitchen screen with alerts. Tickets appear as orders arrive, the cook marks them started and ready, the kitchen gets alerts on a phone and customers get text updates.
- Meal plans. A plan has a start date, an end date and delivery days. Subscribers can skip a day, pause a stretch or add extra days, and the end date moves so they still receive what they paid for.
- Delivery routes and a driver app. For meal-plan stores, the kitchen plans a delivery day from saved addresses, orders the stops by driving time and sends the route to a driver, who works through it in a phone-friendly app.
How it's built
One Next.js app serves every kitchen. The host name decides which kitchen a request belongs to, so a kitchen on its own domain and one on a pickup.kitchen subdomain run the same code, and one kitchen's data never mixes with another's. Cart cookies are tied to the host, so a cart on one kitchen's site never shows up on another's.
- Next.js and React with TypeScript, so screens and server logic share one language and one set of types.
- PostgreSQL with versioned migrations, applied as part of every deploy.
- Stripe for payments, with connected accounts for each kitchen and webhooks that confirm what was paid.
- Shopify's Admin API and webhooks for kitchens that keep Shopify for in-person sales.
- Web push for kitchen alerts, and text messages for customers.
- Maps for delivery routes, with stops ordered by driving time.
- Hosted on Vercel, with automated unit and component tests guarding the rules that matter, such as slot limits and plan dates.
What it shows about how we would build yours
Everything above is the kind of work we do for clients: take a messy, real-world process, model it properly, connect it to the tools people already use, and ship something that works on a phone in a busy kitchen.
- We handle money and rules, not only screens. Slot limits, refunds, cut-off times and plan dates are tested rules in the code, not a spreadsheet someone remembers to update.
- We connect to what you already run. Stripe and Shopify were wired in because kitchens already used them, not because we wanted a clean slate.
- We build for the person doing the work. The kitchen screen and the driver app are designed for a cook mid-service and a driver at a doorstep, the standard we would hold your staff tool to.
- We stay accountable after launch. We run pickup.kitchen ourselves, so hosting, monitoring and fixes are things we do every week, which is why a care plan from $500 a month is not an afterthought.
- You can see it work. The product is live, so you can open it and judge the work yourself instead of taking our word for it.
Related services
Want something like this built for your business?
No call needed. You get the approach, a price range and a timeline in writing, free.