- 🚀 Overview
- ✨ Features
- 🛠 Technologies & Tools Used
- 🏁 Getting Started
- 📚 API Documentation
- 💾 Database Schema (ERD)
A comprehensive Food Delivery Service application built with Spring Boot and MySQL, designed to connect customers, restaurants, and couriers. The system offers a rich set of features including:
- User authentication and authorization for customers, admins, and couriers
- Restaurant browsing, searching, and filtering
- Dynamic menu management
- Order placement and tracking
- Flexible promotion system
- Region-based delivery fee calculation
- Post-delivery rating and feedback
The application utilizes JWT for secure authentication, implements complex business logic for order management and promotions, and employs scheduled jobs for performance optimization. This robust backend architecture is designed to handle the intricate workflows and data relationships of a modern food delivery service, ensuring scalability and maintainability.
Head to Features to see the full features of the system.
- Java 21
- Spring Boot 3.3.1
- Spring Data JPA (Hibernate ORM)
- Spring Security
- MySQL (8.0.3+)
- Flyway for database migrations
- JWT for authentication and authorization
- Lombok for reducing boilerplate code
- MapStruct for object mapping
- OpenAPI (Swagger) for API documentation
- Maven for dependency management and build - automation
- Validation
- Spring Boot Actuator for application monitoring and management
- Spring Boot DevTools for development
- JUnit and Spring Boot Test for testing
- Jira for managing the project tasks
- Clone the repository
- Navigate to the project directory via
cd ./food-delivery-system
- Build the project
\.mvnw.cmd clean install
- Run the application
.\mvnw.cmd spring-boot:run
- Access the application at
http://localhost:8080
API documentation is available via Swagger UI. After running the application, visit http://localhost:8080/swagger-ui.html
to explore the API endpoints.
Also a Postman collection can be accessed from here here. All you need to do is to import the collection.
Entity Relationship Diagram can be seen from here as an image or view it on Lucidchart if you have an account.