
FoodEase is a comprehensive, Laravel-based application designed to streamline all aspects of restaurant management. From table and order processing to a real-time kitchen display, FoodEase provides a complete solution for modern restaurants.
- POS System: A simple and intuitive Point of Sale interface for placing orders, managing customer details, and processing payments.
- Table Management: Visually track table status (available, running, bill printed) and manage orders efficiently.
- Real-time KOT: A live Kitchen Order Ticket (KOT) view for chefs to track incoming orders and manage their workflow.
- Waiter & Biller Roles: Dedicated, permission-based dashboards for waiters and billers, including a mobile-friendly view for waiters to place orders remotely.
- Admin Dashboard: Centralized control panel to manage menus, categories, tables, users, and overall restaurant configuration.
- Flexible Setup: Supports both MySQL and SQLite databases and includes options for demo or production-ready data seeding.
- One-Click Server Start: Includes helper scripts for Windows users to create a desktop shortcut and launch the server with a single click, automatically detecting the correct network IP.
- Backend: Laravel, PHP
- Frontend: Blade, Tailwind CSS, Alpine.js
- Real-time: Pusher
Here's a breakdown of the core modules and how they function.
The central hub for managing the entire restaurant. Admins can create and manage menus, categories, tables, and users. This is also where you configure restaurant details like name, address, and sync settings.
They can configure the printer of kitchen and billing sections.

They can enable or disbles modules according to their business needs.

The primary interface for billers and admins to place orders. It features a clean UI, menu search (including by shortcode), customer details, custom notes, and various payment options. The screen is split between categories and the current order for quick entry.
A visual, color-coded screen to select tables for dine-in orders or to initiate a pickup order. It provides quick access to print bills or view orders for a specific table.
A real-time display for the kitchen staff, powered by Pusher. New orders appear instantly, categorized by order type. Chefs can see item counts across all live orders and update an order's status as it's prepared.
A mobile-first interface designed for waiters to take orders directly at the table using any phone or tablet. This streamlines the ordering process and reduces errors.

A dynamic Kitchen Display System (KDS) where new orders appear instantly. Chefs can manage their workflow by moving tickets from 'Pending' to 'In Progress', and see a live count of all items needed across active orders.

Users with the "Biller" role have a restricted version of the dashboard. They can place and update orders but cannot perform sensitive admin actions. Admins have full access to view, print, and manage all historical bills.
Follow these instructions to get the project up and running on your local machine.
This is the easiest way to get the server running.
- Complete the Manual Installation first: Follow all the steps in the "Manual Installation" section below to set up your project dependencies and
.env
file. - Create Desktop Shortcut (One-time only): Find the
create-shortcut.bat
file in the project folder and double-click it. This will create a "Start FoodEase" shortcut on your desktop with the app logo. - Start the Server: Double-click the new "Start FoodEase" shortcut on your desktop anytime you want to run the application. It will automatically find your IP address and start the server.
Follow these steps for a complete manual setup.
git clone [https://github.com/pavanvattikala/FoodEase.git](https://github.com/pavanvattikala/FoodEase.git)
cd FoodEase
composer install
npm install
# Create your environment file
cp .env.example .env
# Generate an application key
php artisan key:generate
Open the .env
file and configure your database. You can use either MySQL or SQLite.
For MySQL:
Make sure you have a MySQL server running and update the following lines in your .env
file:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=foodease
DB_USERNAME=root
DB_PASSWORD=
For SQLite:
Change the DB_CONNECTION
and create an empty database file.
- Update your
.env
file:DB_CONNECTION=sqlite
- Create the database file:
touch database/database.sqlite
For real-time order transmission to the kitchen, you need Pusher credentials.
- Sign up for a free account at pusher.com.
- Create a new "Channels" app.
- Copy your keys into the
.env
file:PUSHER_APP_ID=... PUSHER_APP_KEY=... PUSHER_APP_SECRET=... PUSHER_HOST=... PUSHER_PORT=... PUSHER_SCHEME=... PUSHER_APP_CLUSTER=...
- Rebuild the frontend assets
npm run dev
You have two options for setting up the database.
Option A: For a Full Demo This option will create all tables and fill them with example data (users, menus, categories) so you can use the app right away.
php artisan migrate:fresh --seed
migrate:fresh
will drop all existing tables and re-run migrations. Use with caution if you have existing data.
Option B: For Production / Minimal Setup This option creates the tables and seeds only the essential data (default admin user and restaurant settings).
- Run the migrations:
php artisan migrate
- Run the basic seeder:
php artisan db:seed --class=BasicSeeder
# Build frontend assets
npm run dev
# Start the local development server
php artisan serve
Your application is now running at http://localhost:8000.
FoodEase supports two login methods:
-
Admin Login (Email & Password):
- Email:
admin@gmail.com
- Password: The default password is set in your
.env
file with theDEFAULT_PASSWORD
key (it defaults tofoodease2024
). You can change it there.
- Email:
-
Staff Login (PIN):
- Other roles (Biller, Waiter) can log in using a 4-digit PIN.
- You can find or set the PINs for each user in the
users
table after seeding the database.
Contributions are welcome! If you have a suggestion or find a bug, please feel free to open an issue or submit a pull request.
This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).
This means you are free to:
- Share β copy and redistribute the material in any medium or format.
- Adapt β remix, transform, and build upon the material.
Under the following terms:
- Attribution β You must give appropriate credit.
- NonCommercial β You may not use the material for commercial purposes.
- ShareAlike β If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
See the LICENSE file for the full legal text.