Buffalo Eats Online
SaaS Platform
Project Overview
The Problem: A WNY restaurant owner was paying five different vendors — one for online ordering, one for reservations, one for POS, one for a website, and one for a kitchen display. None of them talked to each other. Orders placed online didn't appear in the kitchen. The menu on the website didn't match the POS. Every vendor charged monthly.
The Approach: Build one platform that replaces all five. Multi-tenant SaaS so each restaurant gets its own branded storefront, but shares the same codebase and infrastructure. Custom PHP MVC framework — no Laravel, no WordPress — because the real-time requirements (kitchen display, live order tracking) demanded SSE (Server-Sent Events) architecture that framework abstractions would have complicated.
What Was Hard: Tenant isolation was the core architectural challenge. Every database query, every file upload, every session has to be scoped to the correct restaurant. I built a TenantContext that resolves from subdomain, custom domain, or query parameter and threads through every layer. The AI Smart Order feature — parsing "two pepperoni pizzas, no onions, extra cheese" into structured cart items via Claude API — required careful prompt engineering and fallback handling when the AI misinterprets.
The Result: 272 database migrations. 14 menu display styles. SSE-powered real-time kitchen display. Full Playwright + PHPUnit test coverage running nightly via ARIA. The platform is live at buffaloeatsonline.com.
The Approach: Build one platform that replaces all five. Multi-tenant SaaS so each restaurant gets its own branded storefront, but shares the same codebase and infrastructure. Custom PHP MVC framework — no Laravel, no WordPress — because the real-time requirements (kitchen display, live order tracking) demanded SSE (Server-Sent Events) architecture that framework abstractions would have complicated.
What Was Hard: Tenant isolation was the core architectural challenge. Every database query, every file upload, every session has to be scoped to the correct restaurant. I built a TenantContext that resolves from subdomain, custom domain, or query parameter and threads through every layer. The AI Smart Order feature — parsing "two pepperoni pizzas, no onions, extra cheese" into structured cart items via Claude API — required careful prompt engineering and fallback handling when the AI misinterprets.
The Result: 272 database migrations. 14 menu display styles. SSE-powered real-time kitchen display. Full Playwright + PHPUnit test coverage running nightly via ARIA. The platform is live at buffaloeatsonline.com.
Project Details
Client
Buffalo Eats Online
Category
SaaS Platform
Year
2025
Technologies
View Live Site
Start a Similar Project
PHP 8.1
MySQL
Claude AI
SSE
PWA
Stripe
Playwright