Skip to content

Latest commit

 

History

History
257 lines (190 loc) · 11.8 KB

File metadata and controls

257 lines (190 loc) · 11.8 KB

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

Menu & Kitchen

  • 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.