Modern · Mobile‑First · Static · Café‑Ready
A lightweight QR Menu & WhatsApp Ordering System built with HTML,
Tailwind CSS, and JavaScript.
Designed for cafés and small restaurants that want a fast, hygienic,
and modern menu experience without servers or databases.
Customers simply scan a QR code → open the menu → place an order.
One evening I visited a café and picked up their menu.
It looked old, faded, and unhygienic.
At that moment I thought:
"Menus should be digital. Why not build a QR-based experience?"
So this project was created.
Scan → Menu opens instantly
• No mobile app
• No backend server
• Works on any smartphone
• Simple and fast
Responsive layout built using Tailwind CSS.
Menu items loaded from menu.json for easy updates.
- Category filters
- Menu search
- Specials section
Works on:
- Netlify
- GitHub Pages
- Vercel
- Any static host
No backend required.
When ordering is enabled, the system becomes a full QR ordering interface.
Features:
• Item popup ordering modal
• Quantity selector
• Special instructions
• Table auto detection
• Lightweight cart system
• Live cart counter
• WhatsApp checkout
Customers can add multiple items to cart and send a single order.
The project supports two modes using a feature flag.
WHATSAPP_ORDER_ENABLED = falseMenu browsing only.
WHATSAPP_ORDER_ENABLED = trueCart + WhatsApp ordering enabled.
Each QR code contains a table parameter.
Example:
https://domain.com/menu?table=5
The system:
- Detects the table number
- Saves it in localStorage
- Includes it in the order message
Example order:
🧾 New Order
Table: 5
☕ Chai x2
🍪 Biscuit x1
Notes: Less sugar
Cart stored in localStorage.
Example structure:
[
{ "name": "Chai", "qty": 2 },
{ "name": "Coffee", "qty": 1 }
]Features:
• Quantity controls
• Live cart counter
• Remove items
• Scrollable cart modal
At checkout the system generates a message and opens:
https://wa.me/restaurantNumber?text=orderDetails
After sending the order the cart is cleared.
Location:
/routes/qr-generator/
Features:
• Generate table QR codes
• Embed café logo
• High resolution PNG export
• Mobile responsive preview
• Bulk QR generation
• ZIP download
Example QR URL:
/menu?table=5
Frontend only:
• HTML5
• Tailwind CSS
• JavaScript
• SweetAlert2
• qr-code-styling
Optional:
• Service Worker for offline caching
Bytes-And-Spicy/
│
├── index.html
├── menu.json
│
├── js/
│ └── script.js
│
├── src/
│ └── style.css
│
├── images/
│
├── video/
│
├── routes/
│ └── qr-generator/
│
└── service-worker.js
• Lazy loaded images
• Service worker caching
• Cached menu price lookups
• Shared SweetAlert helper functions
Possible upgrades:
• Printable table QR cards
• Admin configuration panel
• Order dashboard
• Multi‑restaurant support
https://qr-menu-card.netlify.app/
Developer Portfolio:
https://codecraftbysyed-portfolio.vercel.app/
MIT License
Created by CodeCraft by Syed
A small café idea turned into a real QR menu system.