IIITEats is a full-stack web application designed to digitize university canteen operations. It bridges the gap between students and the kitchen staff, offering a seamless ordering experience and a real-time Kitchen Display System (KDS).
Built with performance and UI/UX in mind, it features a modern Glassmorphism design, Lazy Loading for image optimization, and a robust MySQL backend.
- Dynamic Carousel: Featured "Trending Now" items with synchronized text/image animations.
- Smart Menu: Filter by Category, Veg/Non-Veg, Spicy Level, and more.
- Real-time Search: Instantly find items like "Chowmein" or "Pizza" with debounced search logic.
- Digital Wallet: Simulated wallet system for seamless checkout.
- Interactive UI: Glassmorphism cards, modal popups for item details, and toast notifications.
- Kitchen Display System (KDS): A Kanban-style board to track orders.
- Live Status Updates: Move orders from
NewβCookingβReadyβCompleted. - Inventory Logic: Items automatically hide from the menu if stock hits zero (SQL Logic).
- Frontend: HTML5, Tailwind CSS, Vanilla JavaScript (ES6+).
- Backend: Node.js, Express.js.
- Database: MySQL (Relational DB with Complex Joins).
- Assets: FontAwesome (Icons), Google Fonts (Nunito).
Follow these steps to run the project locally.
- Node.js installed.
- MySQL Server (XAMPP or Workbench) running.
git clone [https://github.com/ItsMat78/CampuEats.git](https://github.com/ItsMat78/CampuEats.git)
cd IIITEatsnpm install- Open MySQL Workbench or phpMyAdmin.
- Create a database named
canteen_db. - Import the
database_schema.sqlfile located in the root folder.- This will create all tables (users, menu_items, orders, inventory) and seed the real menu data.
Create a .env file in the root directory and add your MySQL credentials:
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=YOUR_MYSQL_PASSWORD
DB_NAME=canteen_db
PORT=3000node server.jsVisit http://localhost:3000 in your browser.
IIITEats/
βββ public/
β βββ images/ # High-res menu images
βββ database_schema.sql # SQL Import file
βββ index.html # Single Page Application structure
βββ script.js # Frontend Logic (Fetch API, DOM Manipulation)
βββ server.js # Backend API & Static File Server
βββ style.css # Custom animations & Glassmorphism styles
βββ README.md # Documentation
- SQL Complexity: The app uses
LEFT JOINqueries to fetch Menu Items + Category Names + Inventory Stock in a single request. - Performance: Implemented
loading="lazy"attributes on images to ensure 60FPS scrolling performance despite high-res assets. - Security: Uses
.envvariables to prevent exposing database credentials andexpress.staticfor secure file serving. - UI/UX: Custom CSS animations for the carousel (
slideUpFade) and modal interactions (modalPop).
Made with β€οΈ by Shreyash and Sameer.