Digital menus and permanent QR codes, free forever β then live table ordering, a kitchen display and a native POS when you're ready.
Why MenuMinute Β· Features Β· Screenshots Β· Plans Β· Quick start Β· Architecture Β· Docs Β· Contributing
Most restaurant software makes you pay before you see any value. MenuMinute flips that.
| π Free forever | π± Mobile-first | π§± One platform |
|---|---|---|
| Build a full menu and print a permanent QR code. Diners scan with zero sign-up. Free menus stay live even after paid access ends. | Designed around the phone in a diner's hand and the tablet in the kitchen. Light, dark and system themes everywhere. | Menu, QR, orders, kitchen and billing share one tenant-scoped domain β no stitching tools together. |
|
Categories, dishes, variants, add-ons, dietary indicators and reviewed media, with real-time updates. Dish limits depend on the plan: 20 on Free, 200 on Ordering, 2,000 on Kitchen Pro. |
Permanent service-point QR codes with print-ready tabletop layouts and high-density SVG / PNG output. |
Turn an existing PDF or photo of a menu into a reviewed, editable digital one. |
|
Dine-in, table and pickup orders with a mobile cart and staff acceptance. Immutable order snapshots. |
A tablet-first Kitchen Display System with preparation stages and audible alerts. |
Table and floor view with live service signals so the front of house sees what needs attention. |
|
An in-product AI helper for menus and operations with grounded answers and budgeted usage. |
A working cashier POS with shifts, guest lookup, receipt printing and register closing. Certified statutory invoicing remains separately controlled. |
Multi-outlet scope, independent country, currency, locale and timezone. Platform billing in INR / USD. |
Note
Free QR publishing, guest ordering, standard POS and multi-station Kitchen Pro are delivered; the product owner lifted the general Phase 4/5 release blockers on 9 November 2026. Plan entitlement and safe operational checks still apply. AI, legal fiscal issuance, push and Google Play have separate readiness controls. See current release status, roadmap and feature activation.
Want to click around? The public demo is a 236-dish sample restaurant with one-click entry that resets every 30 minutes.
| Plan | Price | Limits (per outlet unless noted) | Available to buy |
|---|---|---|---|
| Free | βΉ0 forever | 1 outlet, 20 dishes, 2 QR codes, 2 tables, up to 100 guest orders a month | Yes. Permanent QR menu, no diner sign-up |
| Ordering | βΉ119 / month (also $5) | 1 outlet, 200 dishes, 25 QR codes, 10 tables, no order cap | Self-service checkout, when the payment switches are on |
| Kitchen Pro | βΉ499 / month flat (also $20) | Up to 10 outlets, 2,000 dishes, 200 QR codes, kitchen display and stations | Self-service with configured provider and entitlement; otherwise by request |
| Dedicated | βΉ30,000 / month, or $3,000 on-premise | Virtually unlimited; own domain and branding set up with the team | By contract (contact) |
Free permanent QR menus stay live even after paid access ends, and printed QR links survive every downgrade.
Free guest-order intake is subject to the configured owner entitlement and the 100-order monthly cap.
Prices and limits are read from src/modules/billing/catalog.ts and src/modules/plans/catalog.ts by the
pricing page, billing page and checkout alike.
Whether a plan can be bought is decided at runtime, not in copy. Razorpay checkout is off by default in the
code (and for self-hosters), needs verified provider configuration, and Kitchen Pro also needs
RAZORPAY_KITCHEN_ENABLED plus the database commercial authority. The general historical Phase 5 issue gate is superseded by the owner; provider-specific authorization is not. The pricing page reads those switches, so it shows
"Get Ordering" / "Get Kitchen Pro" only when checkout can complete and otherwise offers "Start free for now" /
"Request early access". USD prices are for enquiries only; there is no USD checkout. See
commercial availability and plans and limits.
You'll need: Node.js 24 LTS (pinned in .nvmrc), pnpm 11 (pinned via packageManager), and Docker (for the isolated PostgreSQL + Redis test stack).
git clone https://github.com/baba-dev/menuminute.git
cd menuminute
pnpm install --frozen-lockfile
cp .env.example .env.localStart the dependencies, load your environment and apply the reviewed migrations:
pnpm infra:test:up
set -a && source .env.local && set +a
NODE_ENV=test pnpm exec tsx scripts/test-bootstrap.ts
pnpm db:migrateOptionally seed a non-production sample restaurant, then run the app:
ALLOW_DEMO_SEED=true DEMO_PASSWORD="choose-a-unique-12+-char-password" pnpm db:seed
pnpm devOpen http://localhost:3000.
π Local demo access
The seed creates one sample restaurant for local use only. Never run it against production.
| Login | http://localhost:3000/login |
demo@menuminute.com |
|
| Password | the DEMO_PASSWORD you passed to the seed |
| Sample restaurant | Spice Route Kitchen (one dish) |
| Public menu | http://localhost:3000/m/demo-spice-route-kitchen-v1 |
π§ͺ Testing and quality checks
pnpm test # unit + integration (Vitest)
pnpm typecheck # strict TypeScript
pnpm lint # ESLint, zero warnings
pnpm test:e2e # Playwright browser testsStrategy and conventions: testing strategy Β· development workflow Β· environment variables.
| Layer | Technology |
|---|---|
| Framework | Next.js App Router, React 19 |
| Language | TypeScript (strict) |
| Styling | Tailwind CSS v4 with custom design tokens |
| Database | PostgreSQL via pg, tenant-scoped transactions |
| ORM / migrations | Drizzle ORM, versioned append-only SQL |
| Queues / cache | Redis + BullMQ durable jobs |
| Auth | Better Auth database sessions |
| Validation | Zod v4 |
| QR | qrcode β SVG and PNG output |
| Images | Sharp |
| Testing | Vitest, React Testing Library, Playwright |
| Delivery | Native ARM64 CI, immutable releases, Nginx + systemd |
src/
βββ app/ # App Router pages and route handlers
β βββ (dashboard)/ # Restaurant management portal
β βββ (public-menu)/ # Mobile-first diner menu
β βββ api/ # Menu, auth and ordering endpoints
βββ components/ # UI and marketing components
βββ db/ # Schema, migrations, scoped transactions
βββ lib/ # Config, errors, utilities
βββ modules/ # Business services: menus, orders, qr, media, billing, ai β¦
Go deeper: architecture guide Β· database Β· decisions (ADRs) Β· security.
π¨ Design language: Ink & Ember
Vivid colour on white, gold and orange on charcoal, expressive restaurant typography and selective chef's-note details. Light, dark and system modes apply across marketing, auth, guest, owner and kitchen surfaces.
Design system Β· Buttons Β· Feedback and motion Β· Brand assets
π’ Deployment and release safety
Merges to main flow through native ARM64 CI (quality, TypeScript, isolated PostgreSQL/Redis integration, production build and browser checks), a single aggregate gate on the same SHA, an immutable published release and a gated production activation that verifies the public SHA. Releases that change the schema first create and verify an encrypted off-host backup. Runtime media is private local storage; backups go to object storage.
Start with the production runbook, then deployment, CI/CD 2.0 and automatic migrations. Don't follow first-install examples on an already-live host.
|
π§ Start here |
π οΈ Build |
π¨ Design |
|
π½οΈ Product |
π Security and trust |
π’ Operations |
ποΈ Delivery phases
| Phase | Focus | Reference |
|---|---|---|
| 1 | PostgreSQL, Better Auth, scoped tenancy | Foundation |
| 2 | Organizations, outlets, roles, durable jobs, billing entitlements | Core domains Β· Operations |
| 3 | Menu Studio, reviewed media, permanent QR, public menu | Contracts Β· Operations |
| 4 | Merchant readiness | Plan Β· Acceptance Β· Ops evidence |
| 5 | Kitchen and ordering | Plan Β· Acceptance |
Contributions are welcome.
- Read
AGENTS.mdand the development workflow. - Open or pick up an issue.
- Branch from
main, keep changes focused, and runpnpm lint,pnpm typecheckandpnpm testbefore opening a PR. - Fill in the pull request template.
Found a security issue? Please report it privately rather than in a public issue β see security.
Released under the MIT License.
Built for restaurants that want to start small and grow without replatforming.
π food.bababuilds.com Β· β Star this repo Β· π Report a bug









