A comprehensive web application for restaurant operations management, including user management, menu administration, staff scheduling, and business analytics.
- Multi-Level User Management: Basic, Staff, Manager, and Admin roles
- Dynamic Menu Management: CRUD operations with image upload
- Staff Scheduling System: Availability management and conflict detection
- Analytics Dashboard: Business intelligence and reporting
- Frontend: React.js + Vite + Tailwind CSS
- Backend: Node.js + Express + TypeScript
- Database: SQLite
- Authentication: JWT tokens
- Containerization: Docker + Docker Compose
Before starting, ensure you have the following installed:
-
Docker Desktop
- Download from: https://www.docker.com/products/docker-desktop/
- Ensure Docker is running (Docker icon in system tray)
- Verify installation:
docker --versionanddocker-compose --version
-
Git (if not already installed)
- Download from: https://git-scm.com/downloads
- Verify installation:
git --version
-
Port Availability
- Ensure ports 3000 (frontend) and 5000 (backend) are not in use
- Check with:
netstat -an | findstr :3000andnetstat -an | findstr :5000 - If ports are occupied, stop those services or modify docker-compose.yml
- Clone the Repository
git clone https://github.com/wh98yap-hub/Restaurant-Management-Suite.git
cd Restaurant-Management-Suite- Start the Application
# Build and start all services (first time setup)
docker-compose up --build
# For subsequent starts (faster)
docker-compose up-
Verify Startup (Wait 2-3 minutes for full initialization)
- ✅ Backend logs show: "Server running on port 5000"
- ✅ Frontend logs show: "Local: http://localhost:3000"
- ✅ Database initialized with seed data
-
Access the Application
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000/api
- Health Check: http://localhost:5000/api/health
- Test Backend Connection
# Should return: {"message": "Restaurant API is running"}
curl http://localhost:5000/api/health-
Test Frontend Loading
- Navigate to http://localhost:3000
- Should see "House of Dumpling" login page
-
Test Database Connection
- Login with any test user (see below)
- Should successfully authenticate and redirect
If containers fail to start:
# Stop all services
docker-compose down
# Remove old containers and rebuild
docker-compose down --volumes
docker-compose up --buildIf ports are occupied:
- Stop other applications using ports 3000/5000
- Or modify ports in docker-compose.yml
If database issues occur:
# Reset database (will lose data)
docker-compose down --volumes
docker-compose up --buildPerformance Issues:
- Ensure Docker Desktop has sufficient resources (4GB+ RAM recommended)
- Close unnecessary applications during startup
- Admin: admin@houseofdumpling.com / Password123!
- Manager: manager@houseofdumpling.com / Password123!
- Staff: staff1@houseofdumpling.com / Password123!
- Customer: customer@houseofdumpling.com / Password123!
Restaurant-Management-Suite/
├── frontend/ # React + Vite application
├── backend/ # Express + TypeScript API
├── database/ # SQLite database files
└── docs/ # Documentation
For local development without Docker, see setup-instructions.md.
This project is for educational purposes as part of a capstone project.