DEV3 Technologies home

DEV3 Dishloft – QR Menu, Table Ordering and Kitchen Display SaaS Laravel Script with Split Bills, Waitlist, Waiter Calls

A self-hosted QR menu and table-ordering SaaS for restaurants on Laravel 12 and Filament 4: guests scan the table code, order from their phone and split the bill; the kitchen display, floor map, waiter calls and waitlist run on staff screens. Web installer and demo data included. No mobile apps.
by DEV3 TechnologiesVerified Author(0) 0 sales 0 viewsUpdated 11 Nov 2026

Video tour. Pick a section below to browse 93 screenshots in 7 sections.

App & phone tours

Tap play to watch each app. Nothing downloads until you do.

  • Mobile web1:02

Dishloft is a QR menu and table-ordering platform that you run for restaurants, built by DEV3 Technologies on Laravel 12 and Filament 4. You are the operator: you sell plans to restaurants, and each restaurant gets venues, tables with printable QR cards, a photo-led guest menu, a kitchen display, a floor screen for servers and a host stand for the waitlist.

What it does

  • Guests order from their phone. Scan the code on the table and a fast, mobile-first menu opens with sticky section tabs, search, dietary and allergen filters, option groups with minimum and maximum choices, and up to six typed-in languages (right-to-left included). Everyone at the table shares one cart, each line tagged with the phone that added it. If a dish was marked sold out or changed while it sat in the cart, the guest is told before sending.
  • A kitchen display that fits a pass. Orders fan out into one ticket per station, with timers that turn amber at 80 percent of the target and red when late. Bump a dish or a whole ticket, recall the last ten, mark a dish sold out from the screen and print an 80 mm ticket from the browser.
  • Floor, calls and host. A floor map with tables coloured by state, waiter calls (call, water, help, bill) with a live badge, a ready-to-run list, counter payments, comps and voids within each role's limit, and a host stand with a waitlist whose quoted wait comes from recent table turns, a table-ready text and reservation requests to confirm or decline.
  • Split the bill and pay at the table. Request the bill, split it equally, by seat or by picking dishes, add a tip and pay each part on its own phone. The restaurant can also take payment at the counter. Receipts have their own link.
  • Menu builder and manager panel. Menus with opening windows, sections, items with photos, allergens (14 flags) and diets, modifier groups, a translations grid, an allergen matrix, bulk sold out and bulk percentage changes, table cards as a printable PDF with rotatable QR secrets, stations, reports and a Pass Clock that shows every open ticket by age.
  • Money you can reconcile. Guest payments go to your gateway as merchant of record. Each restaurant has a takings wallet that is paid out weekly after a hold, and failed refunds wait in a durable queue. A dishloft:check command proves orders, bills, payments and wallets agree.
  • Operator panel and API. Restaurants with live meters, plans, subscriptions, platform invoices, table payments, payouts, pending refunds, an outbox, an audit log and audited view-only support sessions. A scoped REST API with an OpenAPI document and signed webhooks.

Quality checks

The release passed seven gates on the final code: Larastan level 6 with 0 errors, 242 Pest tests (2,133 assertions), a build well inside the page budget, migrations and the full demo seed on MySQL 8 and SQLite, a headless smoke test of 109 pages with 33 happy-path checks and 10 race groups on MySQL (two phones sending at once, three phones scanning one table, parallel payments of one bill, a bump racing a recall, a cancel or a void, two hosts seating one party and more), the installer driven from the zip, and a secret scan. The home page scores 98 for performance and 100 for accessibility on mobile.

What you should know before buying

  • Guests order from their phone browser. There is no app to install, and there are no native apps for staff either: the kitchen display, floor and host screens are web pages for a tablet or phone.
  • Payments are simulated by default. You are the merchant of record and pay each restaurant out from its takings wallet; restaurants cannot connect their own Stripe account in this version. A restaurant can also choose pay at the counter, which needs no gateway.
  • Not a cash-till or stock system. It does not manage a cash drawer, stock levels or recipe costs, and it is not a delivery marketplace.
  • Kitchen printers: use the kitchen display, or print the 80 mm ticket layout from a browser-connected printer. There is no ESC/POS driver.
  • Reservations are a request form plus a waitlist, not a table-allocation engine: the host confirms or declines each request.
  • Translations are typed in for up to six languages per venue; nothing is translated automatically. Allergen and diet flags are entered by the restaurant, which is responsible for their accuracy.
  • Simulated drivers. Mail, SMS, payments and virus scan have working simulated drivers; real ones need your own accounts.
  • A cron entry every minute and a queue worker are required. Live updates use Reverb, or fall back to polling every 10 seconds. Web only; Node.js is not needed (assets are prebuilt).

How it is different

Dishloft is the guest side of the table: scan, browse, order, kitchen, pay and split, plus a waitlist, with a multi-tenant operator layer on top. It suits an operator who wants to sell QR ordering to many restaurants rather than run one restaurant's own system.

Included

Source code, the web installer, a buyer guide with the API contract and a list of the race checks, demo data with fictional restaurants (a two-venue bistro group, a tapas restaurant with three languages, a ramen counter with two stations, a counter-only cafe and more) with six months of history and a live service in progress, a cron entry for the scheduler, and six months of support.

How it's built

Architecture, stack, key decisions and the quality gates DEV3 Dishloft passed before release.

The engineering behind Dishloft: two phones sending at once without losing a dish, a kitchen display that stays consistent when a bump meets a cancel, split payments that settle once and refunds that never get lost.

The problem it solves

A table of four phones looks simple until two of them press send together, a server cancels an order while the kitchen bumps it, three payment pages are captured for one split, or a guest scans a code that was rotated yesterday. Each of those must end in consistent orders, bills and takings, and one restaurant must never see another restaurant's tables.

Architecture and approach

Dishloft is a Laravel 12 application with Filament 4 manager and operator panels, and hand-built guest and staff screens under a strict content security policy. Every change to a table takes row locks in one fixed order (restaurant, table, session, order, ticket, bill, wallet), and the order lines are snapshots, so a later price change never rewrites an old bill.

Payments are applied only when the gateway confirms them, under the bill lock. Late, duplicate and excess payments are refunded through a durable queue that retries until the card takes them. Tax is computed per line in integer minor units, with inclusive, exclusive and service-charge vectors. Outgoing webhooks go through a client that pins the resolved address on every hop. Race groups run against MySQL with parallel processes.

Quality gates and results

The release passed seven gates, including a headless smoke test of 109 pages and 10 race groups on MySQL. The reconciliation command passes on the demo data: ten restaurants, about 95,000 orders and 60,000 bills over six months, and a live Saturday service in progress.

Tech stack

Area Technologies
Application Laravel 12, Filament 4, Blade, REST API
Data MySQL 8, SQLite
Frontend Tailwind CSS 4, Vite
Quality Pest, Larastan level 6, Playwright

Inside the build

Scan. Order. Eat.: The home page puts the Casa Liora guest menu on a phone over a laid table, with kitchen tickets sliding down beside it. Scan. Order. Eat. — The home page puts the Casa Liora guest menu on a phone over a laid table, with kitchen tickets sliding down beside it.

Dark hero: The same first screen in the dark colour scheme, for evening visitors. Dark hero — The same first screen in the dark colour scheme, for evening visitors.

Guides & articles

Practical guides and engineering write-ups for DEV3 Dishloft.

QR menu ordering for restaurants: 6 things to check before you pick one

Last updated
QR menu ordering for restaurants: 6 things to check before you pick one: DEV3 Dishloft

Guests do not want another app, they want to order and leave. Here are six things to check before you pick table ordering software for restaurants, with DEV3 Dishloft as the worked example.

Dishloft home page: a guest menu on a phone over a laid table, with kitchen tickets sliding down beside it

1. Does the menu work with one hand?

A guest menu lives or dies on the first ten seconds: sticky section tabs, photos that load lazily, a search box, allergen and diet filters, and option groups that stop at the right number of choices. Dishloft opens from the table code with no install and keeps one shared cart for the whole table, tagged by phone.

The guest menu with section tabs, photos and dietary tags

An item sheet with its allergens and option groups

2. Can the kitchen keep up?

Orders should split by station, show a timer, and turn red when they are late. Dishloft fans an order into one ticket per station, bumps by dish or by ticket, recalls the last ten and lets the kitchen mark a dish sold out so every guest menu updates.

The kitchen display with a late ticket in red

3. What happens at the bill?

Splitting equally is the easy case. Check that the software can split by seat and by dish, that each part is paid on its own phone with a tip, and that a payment which arrives twice is refunded instead of counted twice. Dishloft settles each split once under a lock and queues refunds until the card takes them.

A bill split in two, with tip choices on each part

4. Who takes the payment?

In Dishloft the operator is the merchant of record: the guest pays through your gateway, each restaurant has a takings wallet and you pay it out weekly. A restaurant can also choose pay at the counter, which needs no gateway. Restaurants cannot connect their own Stripe account in this version, so say that plainly to your customers.

The takings wallet with the payout statements

5. Does the floor see what the guest asked for?

A call button is only useful if the right person sees it. Servers get a floor map with a badge per table, a ready-to-run list and counter payments, and the host runs a waitlist that quotes the wait from recent table turns.

The floor map with tables by state and waiter calls

6. What are the limits?

It is not a cash-till or stock system, there is no ESC/POS printer driver (use the kitchen display or print the 80 mm ticket from a browser), reservations are requests plus a waitlist, translations are typed in, drivers for mail, SMS and payments are simulated until you add accounts, and there are no mobile apps.

The Pass Clock showing open tickets by age for each station

Video: a tour of Dishloft from the home page to a kitchen bump, a split bill and the operator panel

Frequently asked questions

The complete source code (version 1.0.0) as a download from your account, with the setup and usage guides shown on this page. You can modify the code to suit your product.

Buying guides: Laravel scripts with Filament panels and a web installer · Next.js or Laravel for a SaaS script?

Questions about this product (0)

Answers from the DEV3 team and the community.

Ask a question

No questions yet.

Wondering about setup, licensing or customisation? Ask, and the DEV3 team will help.

More from this author

View all

Related in Web Scripts & Software

View all