I built an open-source alternative to Toast and Square for restaurant management
Source: Dev.to

The Problem
If you run a small restaurant, your options for online ordering and management are:
- SaaS platforms like Toast, Square, or ChowNow — $100‑300+/month with vendor lock‑in
- Old open‑source projects — mostly PHP/Laravel, hard to extend, dated UIs
- Build it yourself — months of work before you can take a single order
I wanted a fourth option: a modern, self‑hosted, open‑source platform that a developer could deploy in an afternoon.
Introducing KitchenAsty
KitchenAsty is an MIT‑licensed restaurant ordering, reservation, and management system built as a TypeScript monorepo.
What it covers
For customers
- Browse the menu, add to cart, and place orders for delivery or pickup
- Schedule orders for later or order ASAP
- Pay with Stripe or cash on delivery
- Track orders in real‑time
- Book table reservations
- Leave reviews
- React Native mobile app
For restaurant staff
- Manage menus with categories, options, allergens, and images
- Kitchen display — a live Kanban board showing incoming orders
- Process orders with one‑click status progression
- Manage reservations with table assignment
- Create and track coupons
- Moderate customer reviews
- Staff management with role‑based access
For the owner
- Dashboard with revenue trends, order analytics, and top‑selling items
- Multi‑language support (6 languages)
- Full settings panel for payments, email, orders, and more
Tech Stack
| Layer | Tech |
|---|---|
| API | Node.js + Express |
| Admin & Storefront | React 18 + Vite |
| Mobile | React Native + Expo |
| Database | PostgreSQL + Prisma |
| Real‑time | Socket.IO |
| Payments | Stripe |
| Styling | Tailwind CSS |
| Testing | Vitest + Playwright (330+ tests) |
| Language | TypeScript (strict mode everywhere) |
Architecture Decisions
- Monorepo with npm workspaces — Admin, storefront, server, and shared types all live in one repo. Changes to shared types are immediately visible everywhere. No publishing packages, no version mismatches.
- Prisma over raw SQL — Type‑safe database queries that catch errors at build time. The schema is self‑documenting with 30 models and clear relationships.
- Socket.IO for real‑time — The kitchen display and order tracking need instant updates. Socket.IO made this straightforward with room‑based broadcasting.
- Separate admin and storefront apps — Different audiences, different concerns. The admin is a dense data‑management tool. The storefront is a consumer‑facing ordering experience. Sharing a single React app would have meant too many compromises.
Self‑Hosting
The project is designed to be self‑hosted with Docker. The docs site has a complete guide covering:
- Server setup (Ubuntu/Debian)
- Docker Compose deployment
- Domain and DNS configuration
- Reverse proxy with SSL (Nginx or Caddy)
- Backups and maintenance
For local development:
docker compose up -d # PostgreSQL
npm run dev:server
npm run dev:admin
npm run dev:storefront
By the Numbers
- 27,000 lines of TypeScript
- 30 database models
- 118 API endpoints
- 330+ tests (unit, integration, E2E)
- 6 supported languages
- Full CI/CD with GitHub Actions
Contributing
The project is set up for contributors:
- Contributing guide
- Good first issues — small, well‑scoped tasks with clear instructions
- Help wanted issues — bigger features where input is welcome
- Discussions — feature ideas, RFCs, and community chat
Areas where help is most needed: accessibility, i18n coverage, test coverage, and structured logging.
Links
- GitHub:
- Docs:
- License: MIT
If you’ve ever worked on restaurant tech, run a food business, or just want to contribute to a well‑documented TypeScript project, I’d love to hear from you.