A full-stack restaurant management system with table reservations, pre-ordering, menu management, and admin dashboard.
├── backend/ # Spring Boot REST API
├── frontend/ # React + Vite frontend
└── README.md
- Framework: Spring Boot 3.5.7
- Language: Java 21
- Database: PostgreSQL
- ORM: Spring Data JPA
- Migration: Flyway
- Security: Spring Security + JWT
- Build Tool: Maven
- Framework: React 18
- Build Tool: Vite 7
- Router: React Router v7
- Styling: Tailwind CSS 4
- UI Components: Radix UI, Custom Components
- State Management: Context API
- HTTP Client: Axios
- 🔐 Authentication & Authorization - JWT-based auth with role-based access control (Admin/Customer)
- 🪑 Table Reservation System - Interactive seating map with real-time availability
- 🍕 Menu Management - Browse menu items, add reviews, and manage cart
- 🛒 Pre-Order System - Order food in advance for pickup/dine-in
- 👤 User Profiles - Manage personal information and view order history
- 📊 Admin Dashboard - Manage users, tables, menu items, and reservations
- 🌙 Dark Mode - System-wide dark mode support
- Java: JDK 21+
- Node.js: v18+
- PostgreSQL: 14+
- Maven: 3.8+
- Navigate to backend directory:
cd backend- Configure database in
src/main/resources/application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/restaurant_db
spring.datasource.username=your_username
spring.datasource.password=your_password- Run the application:
./mvnw spring-boot:runBackend will start on http://localhost:8080
- Navigate to frontend directory:
cd frontend- Install dependencies:
npm install- Start development server:
npm run devFrontend will start on http://localhost:5173
frontend/src/
├── assets/ # Images and static assets
├── components/ # Reusable components
│ ├── common/ # Shared utilities (LoadingSpinner, etc.)
│ ├── ui/ # UI component library
│ ├── admin/ # Admin-specific components
│ ├── menu/ # Menu-related components
│ ├── seating2d/ # Seating map components
│ └── preorder-ui/ # Pre-order components
├── context/ # React Context providers
├── hooks/ # Custom React hooks
├── lib/ # Utilities and API client
├── pages/ # Page components
│ ├── homePage/ # Home page with components
│ ├── loginPage/ # Authentication pages
│ ├── menuPage/ # Menu browsing
│ ├── cartPage/ # Shopping cart
│ ├── preOrderPage/ # Pre-order system
│ ├── seatingMap/ # Table reservation
│ ├── profilePage/ # User profile
│ └── adminPage/ # Admin dashboard
├── services/ # API service layer
├── styles/ # Global styles
└── types/ # TypeScript type definitions
backend/src/main/java/com/restaurantmanager/
├── backend/
│ ├── config/ # Security & app configuration
│ ├── controller/ # REST API endpoints
│ ├── dto/ # Data Transfer Objects
│ ├── model/ # JPA entities
│ ├── repository/ # Data access layer
│ ├── security/ # JWT & authentication
│ └── service/ # Business logic
└── resources/
├── application.properties
└── db/migration/ # Flyway migrations
POST /api/auth/login- User loginPOST /api/auth/register- User registrationPOST /api/auth/refresh- Refresh JWT token
GET /api/user/me- Get current userPUT /api/user/profile- Update profileGET /api/admin/users- List all users (Admin)
GET /api/menu- Get menu itemsPOST /api/menu- Create menu item (Admin)PUT /api/menu/{id}- Update menu item (Admin)DELETE /api/menu/{id}- Delete menu item (Admin)
GET /api/reservations- Get user reservationsPOST /api/reservations- Create reservationGET /api/tables- Get available tables
GET /api/cart- Get cart itemsPOST /api/cart- Add to cartPOST /api/orders- Place order
cd backend
./mvnw testcd frontend
npm testcd backend
./mvnw clean package
java -jar target/backend-0.0.1-SNAPSHOT.jarcd frontend
npm run build
# Deploy dist/ folder to your hosting serviceSLIIT Year 2 Semester 2 - Software Engineering Project
This project is for educational purposes.
Built with ❤️ by Team GustoMare