This full-stack project is an imitation of an online pizza shop, providing various filtering options and order placement functionality. The backend is developed using Spring Boot, while the frontend is built with React. The project aims to simulate a seamless pizza ordering experience with extensive filtering capabilities.
- Project Overview
- Features
- Technologies Used
- Project Roadmap and Issues
- Getting Started
- API Documentation
- User Interface Overview
- Pizza Selection
- Filtering Options
- Order Placement
- Query-DSL Integration
- Redux-Toolkit State Management
- List the technologies and tools used in your project. For example:
- Backend:
- Spring-boot
- Query-DSL (with Blazebit)
- Hibernate
- liquibase migration
- H2 (for tests)
- Frontend:
- React (TypeScript)
- Redux-Toolkit
- Debounce
- Backend:
Currently, the project covers the basic features of an online pizza shop. However, there are several potential areas of improvement and expansion, such as:
- User Authentication: Implementing user authentication and accounts to handle personalized order history and preferences.
- Cart Page: Improvement
OrderPopUp
element after payment processing
Follow these steps to get the project up and running on your local machine.
- Clone the repository:
https://github.com/borumv/pizza-project.git
-
Backend Configuration:
- Navigate to the backend directory:
cd backend
- Configure the database connection in
application.properties
. - Customize any other required configurations.
- Navigate to the backend directory:
-
Backend:
- Build and run the Spring Boot application.
-
Frontend:
- Install dependencies:
npm install
- Start the development server:
npm start
- Install dependencies:
Access the application by visiting http://localhost:3000
in your web browser.
Endpoint | Method | Parameters | Description |
---|---|---|---|
/api/pizza/model/all |
GET | None | Retrieves a list of PizzaModel objects representing all available pizzas. |
/api/pizza/types |
GET | None | Retrieves a list of strings representing the descriptions of all pizza types. |
/api/pizza/categories |
GET | None | Retrieves a list of strings representing the names of all pizza categories. |
/api/pizza/model/all_pizzes |
GET | - category_id (optional): The ID of the pizza category.- orderingValue (optional): The value to order the pizzas by (e.g., price, rating).- ordering_type (optional): The ordering type (ascending or descending).- search_value (optional): The search value to filter pizzas by title. |
Retrieves an ExportDataPizzaModel object containing pizza types, categories, and a list of pizza models. |
/api/pizza/model/only_pizzes_page={page}limit={limit} |
GET | - category_id (optional): The ID of the pizza category.- orderingValue (optional): The value to order the pizzas by (e.g., price, rating).- ordering_type (optional): The ordering type (ascending or descending).- search_value (optional): The search value to filter pizzas by title.- page : The page number for pagination.- limit : The maximum number of items per page. |
Retrieves a PageableModel<PizzaModel, Pizza> object containing pizza models with pagination information. |
Endpoint | Method | Parameters | Description |
---|---|---|---|
/api/order |
POST | - orderPizza : The OrderModel object containing the details of the order. |
Register a new order with the provided order data. Returns a boolean value indicating the success or failure of the order registration. |