Back to all the work

A restaurant website with online ordering, built for a friend before he asked for one.

An old roommate of mine runs a bakery and pizzeria. Two locations, twenty four years in business. His website was built in WordPress and his online ordering was spread across four separate platforms that do not talk to each other.

I had an idea about what it could be instead, so I built the whole thing first and showed it to him afterward. There is no slide deck. The site is the pitch.

The online ordering page, with the whole menu in one sidebar and photographed category tiles.
The ordering page. The entire menu on one page, the case up top, made to order underneath.
What is in it
01

A site built to sell

The home page is built around each revenue line, a section apiece for the bakery, the pizzeria, custom cakes and wholesale, with the last two big enough to get their own pages.

Underneath sit customer reviews, seasonal merchandising that turns over with whatever is coming out of the oven, and email capture for the people who are not buying today.

Screenshot: Revenue-Line Homepage Showcase Homepage layout featuring dedicated sections for bakery cases, pizzeria menu, wholesale, and seasonal specials.
Engineered for revenue lines. Each part of the business gets dedicated real estate rather than getting buried in a generic food list.
02

A complete online store

A customer browses, customizes, pays, gets a receipt, and tracks the delivery without ever leaving the site or picking up a phone.

It is built for a phone first, which is where nearly all restaurant ordering actually happens. The ordering page is designed for a thumb: categories collapse, one open at a time, so nobody scrolls past four hundred items to find a sandwich. Multiple locations are handled throughout, and switching shops does not lose your place.

Screenshot: Mobile-First Ordering Drawer & Item Modifiers Phone-view ordering interface with collapsible categories, crust/topping modifiers, and frictionless checkout drawer.
Built for thumbs. Designed specifically for mobile ordering with fast category switching and zero multi-page reload friction.
03

Integrated with the point of sale

Orders from the website go into the same system the registers use, so the kitchen works one queue instead of watching a counter and a website separately.

The menu, the prices and the modifiers come from that same system. There is nothing to keep in sync by hand and no second place to update when something changes.

Screenshot: Square POS Catalog & Unified Kitchen Ticket Square Point of Sale showing a web order sitting in the same queue as the register's own tickets.
Single queue operations. Orders land in the same system the registers use.
04

Delivery without hiring drivers

Delivery is dispatched through Uber, so there are no drivers to hire and no vans to insure. The real cost for that specific address comes back before the customer commits, and an address outside the delivery range is caught while they can still do something about it.

DoorDash delivery is built and tested too. It went first, and it sits dormant because DoorDash closed production access partway through the build.

Screenshot: Courier Delivery Dispatch & Geofenced Pricing Checkout delivery screen with live address radius verification and automated Uber Direct courier dispatching.
Third-party delivery without third-party commissions. Dispatches drivers on demand with exact distance-based pricing.
05

Custom intake forms for what gets quoted instead of bought

Custom cakes and wholesale do not get a cart, because neither one is sold that way. Both get a custom intake form built for how that part of the business actually works.

The cake form asks how many people it has to feed, takes as many inspiration links as somebody wants to paste in, and collects the venue and the contact. Wholesale has its own partner inquiry.

Screenshot: Custom Cake & Wholesale Catering Intake Interactive intake form capturing event date, headcount, flavor tiers, and photo inspiration uploads.
Quoting made painless. Custom cakes and wholesale inquiries capture full requirements up front instead of over phone tag.
06

The owner runs it himself

He edits his own menu: reorder it, hide what sold out, rewrite a description, swap a photo.

And every piece of copy on every page, down to button labels and form placeholders. Nothing on the site needs a developer to change it.

Screenshot: Client Content Admin & Menu Editor Owner back-office view showing quick item toggles, photo and description editing, and site text editing.
Zero developer dependency. The owner can 86 sold-out pastries or change the hours line without calling me.
Under the hood

Point of Sale Integration

Orders are built as Square orders and paid through Square, so they land on the register like any other ticket. His processor, his rates, nothing new to reconcile. It runs end to end against Square's test environment, and pointing it at the owner's real account is the last step.

On-Demand Courier Dispatch

The delivery price comes live from Uber Direct for the customer's actual address before they commit, and an address outside the radius gets caught right there. Placing the order creates the delivery and hands back Uber's own tracking link. The demo runs in Uber's test mode, so no driver is sent.

Hosting

A Laravel app on my own Linux server, with plain JavaScript on the ordering page.

Where it actually stands

This is not his live website. It is a finished demo sitting at its own address, waiting on a conversation. Orders do not reach the register yet, the intake forms confirm without submitting anywhere, and the gift card page stops at a screen that says so out loud rather than pretending.

I built it to the point where it feels real on purpose. A slide deck was never going to explain any of this, and the entire argument is what it would be like to use.