DineFlow is a Spring Boot backend application that allows customers to view a restaurant menu, place orders using a table QR code, and enables kitchen staff to manage orders in real time.
- Features
- Tech Stack
- Getting Started
- Database Setup
- API Endpoints
- Docker Setup
- Future Enhancements
- View restaurant menu
- Place an order linked to a table
- Order items with quantity and price
- Kitchen can view pending orders (
PLACED
,IN_PROGRESS
) - Update order status (
IN_PROGRESS
,COMPLETED
) - Maintains relationships between
User
,Orders
,OrderItem
, andRestaurantTable
Note: User login and JWT-based authentication are not yet implemented. All APIs are currently unsecured.
- Java 21
- Spring Boot 3
- Spring Data JPA
- Hibernate
- MySQL 8
- Docker & Docker Compose
- Lombok
- Maven
- Clone the repository
git clone https://github.com/shubhamgulati11/dine-flow.git
cd dine-flow
- Build the project using Maven
mvn clean install
- Run the application using Docker Compose
docker-compose up --build
The project uses MySQL. Tables are auto-created using JPA.
- User – Stores customers’ information (no login implemented yet).
- RestaurantTable – Represents tables in the restaurant with unique codes.
- Orders – Stores order details, linked to
User
andRestaurantTable
. - OrderItem – Line items of an order (menu item, quantity, price).
INSERT INTO users (id, name, phone_number, password) VALUES (1, 'Test User', '1234567890', 'password');
INSERT INTO restaurant_tables (id, table_code) VALUES (1, 'T1');
GET /menu
– Returns the list of menu items.
POST /orders/create
– Create a new order (JSON body required).GET /orders/all?customerId={id}
– Fetch all orders for a customer.
GET /kitchen/orders
– Fetch pending orders (PLACED
andIN_PROGRESS
).PUT /kitchen/orders/{orderId}/status?status={status}
– Update order status.
All APIs are currently unsecured.
- Run:
docker-compose up --build
- Implement user login with phone number
- Add JWT-based authentication for secure API access
- Move menu items to a separate
MenuItem
table - Add payment processing APIs