An open API service indexing awesome lists of open source software.

https://github.com/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
https://github.com/mighty840/kitchenasty

delivery-app kitchen order-management restaurant self-hosted

Last synced: 4 months ago
JSON representation

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

Awesome Lists containing this project

README

          



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


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

---

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 330+ 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

### 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

### Developer Experience

- TypeScript strict mode across the entire monorepo
- Vitest unit/integration + Playwright E2E (330+ 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](https://nodejs.org/) + [Express](https://expressjs.com/) |
| **Frontend (Admin)** | [React 18](https://react.dev/) + [Vite](https://vite.dev/) |
| **Frontend (Storefront)** | [React 18](https://react.dev/) + [Vite](https://vite.dev/) |
| **Database** | [PostgreSQL](https://www.postgresql.org/) + [Prisma ORM](https://www.prisma.io/) |
| **Auth** | JWT ([jsonwebtoken](https://github.com/auth0/node-jsonwebtoken)) + [bcrypt](https://github.com/dcodeIO/bcrypt.js) |
| **Validation** | [Zod](https://zod.dev/) |
| **Real-time** | [Socket.IO](https://socket.io/) |
| **Charts** | [Recharts](https://recharts.org/) |
| **File Upload** | [Multer](https://github.com/expressjs/multer) |
| **Styling** | [Tailwind CSS](https://tailwindcss.com/) |
| **Testing** | [Vitest](https://vitest.dev/) + [Supertest](https://github.com/ladjs/supertest) + [Playwright](https://playwright.dev/) |
| **CI/CD** | [GitHub Actions](https://github.com/features/actions) |
| **Language** | [TypeScript](https://www.typescriptlang.org/) (strict mode) |

---

## Quick Start

### Prerequisites

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

### 1. Clone & install

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

### 2. Start the database

```bash
docker compose up -d
```

### 3. Set up environment & migrate

```bash
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

```bash
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 (20 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](https://mighty840.github.io/kitchenasty/)**, including:

- [Getting Started Guide](https://mighty840.github.io/kitchenasty/guide/introduction.html)
- [Self-Hosting Guide](https://mighty840.github.io/kitchenasty/self-hosting/overview.html) — server setup, Docker, reverse proxy, SSL, backups
- [Mobile App Publishing](https://mighty840.github.io/kitchenasty/mobile-app/overview.html) — developer accounts, building, app store submission
- [API Reference](https://mighty840.github.io/kitchenasty/api/overview.html) — all endpoints with request/response schemas
- [Configuration](https://mighty840.github.io/kitchenasty/configuration/environment-variables.html) — environment variables, payments, email, social login

Interactive Swagger UI is served at [`/api/docs`](http://localhost:3000/api/docs) when the server is running.

---

## Contributing

We welcome contributions of all kinds! Please read our **[Contributing Guide](CONTRIBUTING.md)** 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`](https://github.com/mighty840/kitchenasty/labels/good%20first%20issue).

See [`PLAN.md`](PLAN.md) for the full roadmap and feature ideas.

---

## Community

- [GitHub Discussions](https://github.com/mighty840/kitchenasty/discussions) — Ask questions, share ideas, get help
- [Issue Tracker](https://github.com/mighty840/kitchenasty/issues) — Report bugs and request features
- [Security Policy](SECURITY.md) — Report vulnerabilities responsibly
- [Code of Conduct](CODE_OF_CONDUCT.md) — Our community standards

---

## License

This project is licensed under the [MIT License](LICENSE).