WebRM is a web-based application for restaurant management that combines modern design principles, type-safe architecture, and real-time communication. It simplifies operations for restaurant owners by providing tools to manage tables, menus, waiters, and orders. Guests can place orders directly from table terminals.
- Role-Based Management: Separate functionalities for admins, waiters, area terminals (kitchen/bar), and table terminals
- Menu Management: Add and remove dishes or beverages with ease
- Real-Time Updates: Changes are propagated live to all connected clients without manual refreshes
- Scalable Architecture: Supports horizontal scaling with real-time communication powered by Valkey
- User-Friendly UI: Built with Vue, TailwindCSS, and accessible components from shadcn/ui
- Frontend: Vue, Pinia, VeeValidate, TailwindCSS
- Backend: Express, MongoDB, Valkey, Socket.IO
- Infrastructure: Docker, Bun
Copy the provided .env.example file and configure the environment variables:
cp .env.example .envSet the following variables in the .env file:
WEBRM_BACKEND_URL: URL of the backendWEBRM_FRONTEND_URL: URL of the frontendWEBRM_SESSION_SECRET: Secure session secret. Generate one using:
openssl rand -hex 32Run the following command to start WebRM:
docker compose up -dEnsure the following are installed on your system:
- Bun (v1.2.0): Install Instructions
- MongoDB (v8.0.4): Installation Guide
- Valkey (v8.0.2): Installation Guide
Copy .env.example files for the backend and frontend, then update their values:
cp packages/backend/.env.example packages/backend/.env
cp packages/frontend/.env.example packages/frontend/.envInstall all necessary dependencies:
bun installBuild the frontend application:
bun run --filter "webrm-frontend" buildRun the backend server:
bun run --filter "webrm-backend" startServe the frontend assets:
bunx serve packages/frontend/distWebRM can be deployed using Docker for consistent environments. The docker-compose.yaml file in the repository contains all necessary configurations for running the application.
- Add unit test and integration tests
- Implement automated end-to-end tests with Playwright