Restaurant software source code · Laravel 12 · REST API
The restaurant platform you build on.
Plain Laravel 12 on PHP 8.2: every file readable, nothing encoded, routes split by role.
Loved by 145+ clients · the full source with every licence
01 The code
Laravel 12.
Nothing hidden.
Plain PHP 8.2 and Blade, with routes split by role and services by domain. Two runtime packages: the framework and Tinker.
- No encoded files, and no licence server to call
- vendor/ ships built, so the server needs no Composer
- Node only to rebuild the CSS and JavaScript you change
- Pint and PHPUnit 11 in the dev tools
"require": {
"php": "^8.2",
"laravel/framework": "^12.0",
"laravel/tinker": "^2.10.1"
},
"require-dev": {
"fakerphp/faker": "^1.23",
"laravel/pail": "^1.2.2",
"laravel/pint": "^1.24",
"laravel/sail": "^1.41",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpunit/phpunit": "^11.5.50"
}
routes/
├─ public.php// the storefront
├─ auth.php// sign-in, sign-up, two-factor
├─ account.php// every signed-in role
├─ customer.php// the guest’s account
├─ vendor.php// each restaurant’s dashboard
├─ admin.php// the platform admin
├─ driver.php// the rider app
├─ api.php// REST API v1
├─ console.php// the scheduler
└─ web.php// one file per area, each with its gate
tests/
├─ Feature/9 files// providers faked
├─ Flows/11 files// real routes, real database
├─ Unit/1 file
└─ phpunit.mysql.xml
$ php artisan test
// 209 tests, PHPUnit 11
PHP 8.2Laravel 12UTF-8
02 API and webhooks
One API.
Twelve webhooks.
Each branch gets its own keys, with read and write scopes. Events are pushed the moment they happen and retried when the other end is down.
curl https://your-domain.com/api/v1/orders?status=confirmed \
-H "Authorization: Bearer qm_••••••••"
200 OKapplication/json
{ "data": [{
"id": 4182,
"number": "QM-209788",
"status": "confirmed",
"service": "delivery",
"source": "website",
"kind": "standard",
"customer": {
"name": "Maya Ross",
"phone": "+1 555 0142",
"email": "maya@example.com"
},
"subtotal": 31.0, "tax": 2.48, "tip": 0.0,
"delivery_fee": 2.99, "discount": 0.0,
"total": 36.47,
"payment": { "method": "stripe", "status": "paid" },
"placed_at": "2026-10-03 23:44:44"
}] }
curl https://your-domain.com/api/v1/reservations \
-H "Authorization: Bearer qm_••••••••"
200 OKapplication/json
{ "data": [{
"id": 911,
"guest": "Leo Park",
"phone": "+1 555 0187",
"email": "leo@example.com",
"party_size": 4,
"at": "2026-10-09 19:30:00",
"status": "confirmed"
}] }
curl -X POST https://your-domain.com/api/v1/coupons \
-H "Authorization: Bearer qm_••••••••" \
-d code=LUNCH15 -d type=percent -d value=15 \
-d starts_at=2026-10-12 -d ends_at=2026-10-31
201 Createdneeds the write scope
{ "data": {
"id": 37,
"code": "LUNCH15",
"type": "percent",
"value": 15.0
} }
curl -X POST https://your-domain.com/api/v1/hooks \
-H "Authorization: Bearer qm_••••••••" \
-d event=order.placed \
-d target_url=https://your-app.example.com/quickmunch
201 Createdevery new order is now posted there
{ "id": 12 }
The twelve events
- order.placed
- order.accepted
- order.ready
- order.delivered
- order.cancelled
- order.refunded
- reservation.created
- reservation.cancelled
- reservation.no_show
- review.created
- dish.off_sale
- stock.low
- A key reads only its own branch, never another
- 120 requests a minute per key, with Retry-After when it is spent
- Retried after 1, 5, 15, 60 and 180 minutes, then parked where you can see it
- HTTPS to public addresses only; a 410 from the target ends the subscription
- The Zapier app’s source is in integrations/zapier, to publish under your own account
03 Extending it
Add what
your client needs.
The parts clients ask to change are registries. Add a row and a class, and the settings screens follow.
-
A payment gateway
A row in the gateway registry, a driver class and its language keys. The settings card is drawn from the row: the switch, the keys, the webhook address.
// app/Services/Payment.php 'mollie' => [ 'label' => 'Mollie', 'driver' => MollieDriver::class, 'mode' => false, 'refund' => true, 'webhook' => true, 'webhook_secret' => null, 'fields' => [ ['key' => 'mollie_api_key', 'secret' => true, 'required' => true], ], ], -
A language
A file in /lang and a row in the language list, then switch it on under Settings. Right to left comes with the row, for every screen.
// app/Support/helpers/i18n.php 'ur' => ['name' => 'اردو', 'rtl' => true, 'flag' => 'pk', 'pdf' => true], 'ar' => ['name' => 'العربية', 'rtl' => true, 'flag' => 'arab', 'pdf' => true], // lang/ar.php: 10,389 strings -
A scheduled job
A row in the job catalogue and a line in the dispatch table. It joins Scheduled tasks with its run history, under the same one cron line.
// app/Services/Cron.php 'weekly_report' => [ 'label' => t_raw('cron.job_weekly_report'), 'desc' => t_raw('cron.job_weekly_report_desc'), 'every' => t_raw('cron.every_weekly'), ], // app/Services/CronJobs.php case 'weekly_report': return \App\Services\WeeklyReport::run();
04 Client work
One per client,
or one for all.
A Regular licence covers one project, yours or a client’s. The Extended licence covers every project you build.
client projects
6 Regular licences$353.94
One Extended licence$177
The Extended licence saves you $176.94
See the Extended licenceLaravel edition, at the autumn sale prices.
- One zip uploaded to the client’s hosting
- Four installer screens, about ten minutes
- One cron line runs every scheduled job
- Updates only add: replace the files, run one command
05 Integrations
Built to plug into
what clients already use.
Payments, accounting, team chat, messaging, maps, marketing and the A.I provider of your choice — connected from settings, with Zapier and a REST API for everything else, and no per-connection fee.
Stripe
PayPal
Square
Mollie
WooCommerce
Twilio
Mailchimp
Slack
Google Drive
Google Sheets
Google Calendar
QuickBooks
Xero
Zapier
- REST API
TripadvisorBusiness Profile
Sign in with Google
- reCAPTCHA
Google Maps
- Mapbox
- OpenStreetMap
OpenAI
Claude
Gemini
OpenRouter
WPBakery
Elementor
06 Languages
Fluent in
any language.
Switch the language and the whole interface turns around — rail, tables, charts and buttons, not only the words. Try it on the panel.
- Storefront, dashboard and login all carry the direction
- The till and the kiosk mirror too, not just the website
- Properly mirrored, not bolted on afterwards
- Add a language with one file and one row
07 What you deliver
One install.
Four applications.
Not a storefront with a dashboard bolted on. Four complete products, one codebase, one database, one licence.
-
01
Customer storefront
Seven homepage layouts, three menu styles, guest or account checkout.
-
02
Restaurant
Menu, orders, tables, devices, staff, loyalty — and its own reporting.
-
03
Staff
Role-limited, PIN-locked screens for the line, the floor and the till.
-
04
Platform admin
Approvals, plans, payouts, campaigns, CMS, white-label branding.
What you offer
Ten services — one platform.
08 White label
Sell all of it,
or some of it.
How the money moves and what the install offers are separate settings. Switch off anything this business does not sell — including the marketplace front end, which leaves a services install: the dashboard plus the per-venue guest surfaces.
- Ten services, each with its own switch
- Enforced on the server, not just hidden from view
- The nav follows — a switched-off surface leaves the sidebar
- A storefront master above them — a marketplace can run without one
09 Four codebases
Same product.
Your stack.
Buy the codebase your team ships with. Each one comes with its full source.
Rated five stars
Loved by
more than 145 clients.
Excellent product and outstanding support! Great product with excellent features! Quickmunch works very well, and the support team is super fast, helpful and responsive. Highly recommended! 👏
Very clean, easy to customize, excellent communication with the seller! Highly recommended!
Best template, clean code and fast support.
Very nice and clean template.
Thank you for helping me; the issue is fixed. If you want one system for everything, choose Quickmunch. Thanks again to the author, I can see the hard work. We love you!
Most popular item for more than 7 weeks
Build it once.
Install it for every client.
One Extended licence covers every client project, with free updates for all of them.
Straight answers.
What developers want settled before they buy.
- 01
The code
What it is built on and what it needs.
- 02
Clients & licence
What one licence covers, and when you need Extended.
- 03
Updates & support
New versions, the docs and the team.
Regular or Extended→
Every file is readable.
No encoded or obfuscated files and no licence server: PHP, Blade, CSS and JavaScript as written, with the build scripts for the CSS and JavaScript.
It needs PHP 8.2 and MySQL.
PHP 8.2 or newer, MySQL 5.7+ or MariaDB 10.4+, on Apache or Nginx. No Composer, Node, queue worker or extra service on the server.
209 tests ship with it.
PHPUnit 11 feature tests, end-to-end flows on the real routes and database, and unit tests, in tests/ with their own configuration.
The API covers each branch.
Orders, customers, reservations and reviews to read; dish availability, coupons and webhook subscriptions to write. Twelve events can be pushed to any public HTTPS address.
One Regular licence per client project.
A project is one website or app, with its development, staging and live copies. A second client is a second project.
The Extended licence covers every client.
Build as many client projects as you like from one purchase, and ship the source inside a larger product you sell or distribute.
Your client’s brand on every screen.
Logo, favicon, brand colour, site name, pages, header and footer, all from settings, and ten services each with its own switch.
Quickmunch itself is not for resale.
Neither licence allows selling Quickmunch on its own, as it is, or sharing its source files outside a project.
Updates only add.
Replace the files and run php artisan migrate, or open the installer again. Each step checks before it changes anything, so running it twice is harmless.
140 pages of documentation.
Every screen, installing, updating, scheduled tasks and the REST API, plus video tutorials on our YouTube channel.
A team answers you every day.
The people who wrote the code answer through Codester, 10 am to 10 pm Eastern.
We can install it for you.
Installation is $59. Buy it, then send us a message on Codester with the hosting details.
Your next client project,
already built.
The full source, a REST API, nine languages and 209 tests, for one payment of $58.99.













