Self-hosted restaurant ordering, reservations, and management — all in one platform.
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.
- 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
- 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)
- 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
- 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
- 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)
- 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
- i18n with react-i18next and language switcher
- English, Spanish, French, German, Italian, and Portuguese translations
- Structured logging with Pino (JSON in production, pretty-printed in dev)
- Request tracing with unique
x-request-idper request - API metrics dashboard with response time charts and endpoint performance
- Audit logging for all admin mutations (SUPER_ADMIN only)
- 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
| 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) |
- Node.js 22+ | Docker (for PostgreSQL) | npm 10+
git clone git@github.com:mighty840/kitchenasty.git
cd kitchenasty
npm installdocker compose up -dcp packages/server/.env.example packages/server/.env
npx -w packages/server prisma migrate dev --schema ../../prisma/schema.prisma
npx -w packages/server prisma db seednpm run dev:server # API server → http://localhost:3000
npm run dev:admin # Admin panel → http://localhost:5173
npm run dev:storefront # Storefront → http://localhost:5174kitchenasty/
├── .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
Full documentation is available at mighty840.github.io/kitchenasty, including:
- Getting Started Guide
- Self-Hosting Guide — server setup, Docker, reverse proxy, SSL, backups
- Mobile App Publishing — developer accounts, building, app store submission
- API Reference — all endpoints with request/response schemas
- Configuration — environment variables, payments, email, social login
Interactive Swagger UI is served at /api/docs when the server is running.
We welcome contributions of all kinds! Please read our Contributing Guide to get started.
- Fork the repository and create a feature branch from
main - Make changes and add tests
- Ensure all tests pass:
npm test && npm run test:e2e - 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.
- GitHub Discussions — Ask questions, share ideas, get help
- Issue Tracker — Report bugs and request features
- Security Policy — Report vulnerabilities responsibly
- Code of Conduct — Our community standards
This project is licensed under the MIT License.