A full-featured Restaurant Management System (RMS) built for cafe and restaurant operations. Manages orders, menu, staff, and daily sales reporting with a built-in POS terminal.
- Take dine-in and takeaway orders
- Assign table numbers (1–unlimited) for dine-in orders
- Hold orders and resume them later
- Merge new items into existing on-hold orders by table number
- Charge orders via Cash or Online payment
- Print 88mm thermal receipts after payment
- Dashboard — daily order count, revenue, on-hold orders, menu item count, recent orders
- Menu Management — add, edit, delete menu items with dynamic categories
- Category Management — create and delete categories that instantly reflect on the POS
- Order History — filter by status and date (Today / This Week / This Month) with pagination
- Sales Report — daily summary with PDF export
- Staff Management — create and deactivate staff accounts
- Firebase Email/Password authentication
- Two roles: Admin and Staff/Cashier
- Admins access the full admin panel and POS
- Staff access the POS only
- Inactive accounts are blocked from login
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router) |
| Database | Firebase Firestore |
| Authentication | Firebase Auth |
| Styling | Tailwind CSS + shadcn/ui |
| Animations | Framer Motion |
| Icons | Lucide React |
| Notifications | React Hot Toast |
| PDF Export | jsPDF + jspdf-autotable |
git clone https://github.com/ItsUgesh/Order-Flow.git
cd Order-Flownpm installCreate a .env.local file in the root directory:
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_idnpm run devEmail: admin@orderflow.com
Password: admin123
users/{uid}
name, email, role ("admin" | "staff"), createdAt, inactive (bool)
menuItems/{id}
name, category, price, available (bool), createdAt
categories/{id}
name, createdAt
orders/{id}
orderNumber, type ("dine_in" | "takeaway"),
tableNumber, items[], subtotal, total,
status ("on_hold" | "paid"),
paymentMethod ("cash" | "online" | null),
createdBy, createdAt, paidAt
Deployed on Vercel with Firebase as the backend.
Private project — all rights reserved.yeah