GitHunt
MI

mighty840/kitchenasty

A self-hosted restaurant online ordering, table reservation, and management system. KitchenAsty enables restaurants, cafes, and takeaways to accept online orders for delivery and pickup, manage menus, handle table reservations, and run operations from a single admin panel

KitchenAsty Logo

KitchenAsty

Self-hosted restaurant ordering, reservations, and management — all in one platform.

CI Docs TypeScript React Node.js PostgreSQL Docker

Express Prisma Socket.IO Tailwind CSS Playwright Vite License: MIT

KitchenAsty - Open-source, self-hosted restaurant ordering and management | Product Hunt

Live Demo · Quick Start · Docs · Report Bug · Request Feature · Discussions


Try it now: demo.kitchenasty.com (storefront) | demo.kitchenasty.com/admin (admin — admin@kitchenasty.com / admin123)

The demo resets every 2 hours and is rate-limited. See the docs for details.


KitchenAsty enables restaurants, cafes, and takeaways to accept online orders for delivery and pickup, manage menus, handle table reservations, and run day-to-day operations from a single admin panel. Built as a modern TypeScript monorepo with separate admin and storefront frontends, a REST API with real-time WebSocket updates, and a full test suite with 350+ tests.


Features

Ordering & Payments

  • Online ordering with delivery/pickup, scheduling, and guest checkout
  • Stripe payment integration with webhooks, plus cash-on-delivery
  • Real-time order tracking with visual progress and Socket.IO updates
  • Kitchen display — live Kanban board with one-click status progression
  • Coupon system with percentage, fixed, and free-delivery discount types
  • Category management with nesting and menu item CRUD
  • Options, allergens, and mealtime tagging per item
  • Image uploads (JPEG/PNG/WebP/GIF, 5 MB max) with preview
  • Stock tracking with automatic availability updates

Reservations & Reviews

  • Customer booking with time-slot availability checking
  • Admin reservation workflow: pending, confirmed, seated, completed
  • Table assignment with capacity tracking and reservation protection
  • Customer reviews (1-5 stars) with admin moderation (approve/reject)

Staff Management

  • Three-tier role system: Super Admin, Manager, Staff
  • Email-based staff invitation with secure single-use tokens (7-day expiry)
  • Role-based admin navigation — each role sees only their permitted pages
  • Staff CRUD: list, search, filter by role, edit, activate/deactivate

Settings & Configuration

  • Centralized admin settings dashboard with clickable card grid
  • 7 settings groups: General, Orders, Reservations, Mail, Payments, Reviews, Advanced
  • DB-first config resolution for email, Stripe, and PayPal with env var fallback
  • Secret masking for sensitive fields (API keys, passwords) in the UI and API
  • Role-based settings access (MANAGER vs SUPER_ADMIN)
  • Test email functionality to verify SMTP configuration

Storefront Templates

  • 10 pre-designed templates (Classic, Modern, Rustic, Elegant, Minimal, Bold, Coastal, Garden, Urban, Artisan)
  • One-click template switching from admin settings with live preview
  • Each template includes header, hero, features section, and footer
  • Templates respect restaurant branding (colors, logo, name)

Analytics & Automation

  • Dashboard with real-time metrics: orders, revenue, reservations, customers
  • Interactive charts: revenue trends, daily orders, hourly patterns, category breakdown
  • Branded HTML email notifications for order and reservation confirmations
  • API docs via Swagger UI at /api/docs

Internationalization

  • i18n with react-i18next and language switcher
  • English, Spanish, French, German, Italian, and Portuguese translations

Observability & Developer Tools

  • Structured logging with Pino (JSON in production, pretty-printed in dev)
  • Request tracing with unique x-request-id per request
  • API metrics dashboard with response time charts and endpoint performance
  • Audit logging for all admin mutations (SUPER_ADMIN only)

Developer Experience

  • TypeScript strict mode across the entire monorepo
  • Vitest unit/integration + Playwright E2E (350+ tests)
  • GitHub Actions CI: lint, test, audit, build, and artifact packaging
  • Docker Compose for local PostgreSQL, npm workspaces for monorepo

Tech Stack

Layer Technology
Backend Node.js + Express
Frontend (Admin) React 18 + Vite
Frontend (Storefront) React 18 + Vite
Database PostgreSQL + Prisma ORM
Auth JWT (jsonwebtoken) + bcrypt
Validation Zod
Real-time Socket.IO
Charts Recharts
File Upload Multer
Styling Tailwind CSS
Logging Pino
Testing Vitest + Supertest + Playwright
CI/CD GitHub Actions
Language TypeScript (strict mode)

Quick Start

Prerequisites

  • Node.js 22+  |  Docker (for PostgreSQL)  |  npm 10+

1. Clone & install

git clone git@github.com:mighty840/kitchenasty.git
cd kitchenasty
npm install

2. Start the database

docker compose up -d

3. Set up environment & migrate

cp packages/server/.env.example packages/server/.env
npx -w packages/server prisma migrate dev --schema ../../prisma/schema.prisma
npx -w packages/server prisma db seed

4. Start development servers

npm run dev:server      # API server → http://localhost:3000
npm run dev:admin       # Admin panel → http://localhost:5173
npm run dev:storefront  # Storefront  → http://localhost:5174

Project Structure

kitchenasty/
├── .github/workflows/     # CI pipeline
├── assets/                # Logo and brand assets
├── e2e/                   # Playwright E2E tests
│   ├── admin/             #   Admin panel tests
│   └── storefront/        #   Customer storefront tests
├── packages/
│   ├── admin/             # React admin panel (Vite, port 5173)
│   ├── docs/              # VitePress documentation site
│   ├── server/            # Express API server (port 3000)
│   ├── shared/            # Shared types and constants
│   └── storefront/        # React customer storefront (Vite, port 5174)
├── prisma/
│   ├── schema.prisma      # Database schema (22 models)
│   └── seed.ts            # Sample data seeder
├── docker-compose.yml     # PostgreSQL for local dev
├── playwright.config.ts   # E2E test configuration
└── PLAN.md                # Full feature roadmap

Documentation

Full documentation is available at mighty840.github.io/kitchenasty, including:

Interactive Swagger UI is served at /api/docs when the server is running.


Contributing

We welcome contributions of all kinds! Please read our Contributing Guide to get started.

  1. Fork the repository and create a feature branch from main
  2. Make changes and add tests
  3. Ensure all tests pass: npm test && npm run test:e2e
  4. Push and open a pull request

Looking for a good starting point? Check out issues labeled good first issue.

See PLAN.md for the full roadmap and feature ideas.


Community


License

This project is licensed under the MIT License.