A production-realistic, industrial-grade management system designed for mid-sized hotels. This project integrates Hotel Operations and Restaurant Management into a unified platform with a shared billing and identity backbone.
- Unified Billing Engine: Centralized handling of charges for both Hotel Guests (Folios) and Walk-in Customers (Bills).
- Operational Correctness: Strict state machines for Stays, Orders, and Room Status to prevent revenue leakage and operational errors.
- "Command Center" UI: A premium, industrial-style interface designed for high-efficiency operations in fast-paced environments.
- Role-Based Access Control (RBAC): Specialized distinct views and permissions for Receptionists, Managers, Waiters, Housekeeping, and Kitchen Staff.
- Integrated Modules:
- Hotel Operations: Room inventory tracking, check-in/out flows, and housekeeping management.
- Restaurant Operations: Table management, POS (Point of Sale), and live KDS (Kitchen Display System).
- Inventory: Real-time tracking of consumables across the entire property.
- Framework: NestJS
- Database: PostgreSQL
- ORM: Prisma
- Authentication: JWT & Passport
- Framework: Next.js (App Router)
- Styling: Tailwind CSS
- State Management: React Query & Zustand
- UI Components: Radix UI & Lucide Icons
Follow these steps to set up the project locally.
- Node.js (v18 or higher)
- Docker & Docker Compose
-
Clone the Repository
git clone <repository-url> cd HRMS
-
Start Infrastructure Spin up the PostgreSQL database and pgAdmin using Docker.
docker-compose up -d
-
Backend Setup Navigate to the backend directory to install dependencies and initialize the database.
cd backend npm install # Run database migrations and seed default data npx prisma migrate dev # Start the backend server npm run start:dev
The API will be available at
http://localhost:3000 -
Frontend Setup In a new terminal, navigate to the frontend directory to launch the web client.
cd frontend npm install # Start the development server npm run dev
The application will be available at
http://localhost:3001(or next available port)
Use these credentials to test different roles within the system:
| Role | Password | |
|---|---|---|
| Admin | admin1@hrms.com |
Pass@123 |
| Manager | manager1@hrms.com |
Pass@123 |
| Receptionist | receptionist1@hrms.com |
Pass@123 |
| Waiter | waiter1@hrms.com |
Pass@123 |
| Cashier | cashier1@hrms.com |
Pass@123 |
| Kitchen Staff | kitchen1@hrms.com |
Pass@123 |
Follow this sequence to test the system's core flows:
Login as a receptionist to start the guest check-in process.

View the status of all rooms (Vacant, Occupied, Dirty).

Review the list of currently active stays.

View details of a specific active stay.

Login as a waiter to manage dining orders.

View the restaurant table layout and status.

Record and send an order to the kitchen.

Track the status of orders sent to the kitchen.

Login as kitchen staff to view incoming orders.

View new orders arriving in the kitchen.

Mark orders as "Ready" for pickup.

Waiter marks the ready order as "Served" to the customer.

Login as a cashier to handle billing.

Generate bills for served restaurant orders.

Receptionist views the guest's folio (combined hotel and restaurant charges).

Initiate the billing process for a guest.

View detailed history for a specific guest.

Check the status of recently used rooms.

Configure general system settings.

Manage floors and room categories.

Manage individual room settings.

Manage staff accounts and roles.

HRMS/
βββ backend/ # NestJS API Application
β βββ src/
β β βββ restaurant/ # Restaurant domain logic
β β βββ hotel/ # Hotel domain logic
β β βββ ...
β βββ prisma/ # Database schema and seeds
β
βββ frontend/ # Next.js Web Application
β βββ src/
β β βββ app/ # App Router pages
β β βββ components/ # Reusable UI components
β β βββ services/ # API client services
β
βββ docker-compose.yml # Infrastructure configuration
βββ ...
We welcome contributions! Please follow these steps:
- Fork the repository.
- Create a feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
The project is optimized for deployment on Vercel. Since this is a monorepo, you will need to deploy the Frontend and Backend as two separate projects linked together.
The backend is configured to run as a Serverless Function on Vercel.
- Push your code to GitHub/GitLab/Bitbucket.
- Import the repository into Vercel.
- Project Name:
hrms-backend(example). - Root Directory: Edit and select
backend. - Environment Variables:
DATABASE_URL: Connection string to your PostgreSQL database (e.g., from Neon, Supabase, or Railway).JWT_SECRET: A secure random string.
- Deploy. Vercel will automatically detect the NestJS app and use the
api/index.tsentry point.
Note: Your backend URL will look like
https://hrms-backend.vercel.app.
- Import the same repository into Vercel again (create a new project).
- Project Name:
hrms-frontend(example). - Root Directory: Edit and select
frontend. - Framework Preset: Next.js (should be auto-detected).
- Environment Variables:
NEXT_PUBLIC_API_URL: The URL of your deployed backend (e.g.,https://hrms-backend.vercel.app).
- Deploy.
Since Vercel is serverless, you need an external PostgreSQL provider. Recommended options:
Ensure your DATABASE_URL is accessible from the public internet (or Vercel's IP range).
- Tsinat Kibru - GitHub
This project is currently private and unlicensed.







