An open-source restaurant management platform — POS, kitchen display (KDS), orders & tables, inventory with recipe-based auto-depletion, GST-aware billing/invoicing, staff management, a manager analytics dashboard, and a public QR self-ordering flow for guests.
Built with a strict layered architecture (UI → Server Actions → Services → Repositories → DB) and test-driven development.
- Next.js 16 (App Router, React Server Components, React Compiler) · React 19 · TypeScript 5 (strict)
- Tailwind CSS v4 · shadcn/ui +
@base-ui/react - Prisma 7 + PostgreSQL (
pgdriver adapter) - Zod validation · jose sessions · Twilio SMS OTP · Supabase Storage (S3) for media
- Vitest for tests · ESLint 9
- POS — photo menu grid with search + category sections, variants/modifiers, split/multi-tender settlement, discounts & comps.
- Orders & KDS — order lifecycle, kitchen ticket board with prep states, Hindi voice alerts, batch table settlement.
- Tables — floor setup with occupancy awareness + printable QR codes for self-ordering.
- Guest self-ordering — public
/order/[username]?table=…with phone OTP verification, cart persistence, live order status. - Menu — categories, items, variants, modifiers, images, "86" availability, per-item recipes.
- Inventory — typed stock movements, bulk receive/count, recipe-based auto-depletion, low-stock alerts.
- Billing — GST (CGST/SGST) handling, round-off, thermal-receipt invoices with a customizable footer.
- Dashboard — live day + month analytics (sales, AOV, payment mix, open orders, daily trend), auto-refresh.
- Staff — role-based staff with PIN login for waiter/kitchen; manager phone-OTP / PIN login.
# 1. Install dependencies
npm install
# 2. Configure environment
cp .env.example .env # then fill in your values
# 3. Set up the database
npm run db:migrate # apply migrations
npm run db:seed # optional: seed an admin user
# 4. Run the dev server
npm run devOpen http://localhost:3000.
Note: this uses Next.js 16, whose APIs differ from earlier versions (e.g.
middleware.tsis nowproxy.ts). SeeAGENTS.mdfor conventions.
| Script | Purpose |
|---|---|
npm run dev |
Start the dev server |
npm run build / npm start |
Production build / serve |
npm test |
Run the Vitest suite |
npm run db:migrate |
Apply Prisma migrations (dev) |
npm run db:deploy |
Apply migrations (production) |
npm run db:studio |
Open Prisma Studio |
npm run db:seed |
Seed initial data |
All configuration is via environment variables — see .env.example for the full list (database, auth secret, Twilio SMS, Supabase storage, etc.). Never commit your .env — it is gitignored.
Contributions are welcome. Please read AGENTS.md (the coding standards / architecture source of truth) before submitting changes, keep the layered architecture intact, and add co-located *.spec.ts tests for new services, repositories, actions, hooks, and utilities. Run npm test (zero failures) plus typecheck and lint before opening a PR.
GNU AGPLv3 © 2026 Dharmendra Shah
This project is licensed under the GNU Affero General Public License v3.0. In
short: you're free to use, modify, and self-host it, but if you run a modified
version as a network service, you must make your modified source available to
its users. See LICENSE for the full terms.