Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cesarsicas/springstore
E-commerce api based made with springboot and spring modules
https://github.com/cesarsicas/springstore
ecommerce java spring-mvc spring-security springboot swagger-ui
Last synced: 2 days ago
JSON representation
E-commerce api based made with springboot and spring modules
- Host: GitHub
- URL: https://github.com/cesarsicas/springstore
- Owner: cesarsicas
- Created: 2024-11-05T11:56:10.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2024-12-21T13:56:27.000Z (about 2 months ago)
- Last Synced: 2024-12-21T14:36:18.621Z (about 2 months ago)
- Topics: ecommerce, java, spring-mvc, spring-security, springboot, swagger-ui
- Language: Java
- Homepage:
- Size: 114 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# E-Commerce API Project
## Overview
Simple e-commerce structure built using RESTful APIs. It provides a comprehensive backend system for managing products, users, and more.
The application is developed with Spring Boot and Java Language## Technologies Used
- **Spring Boot**: Framework for building the application.
- **Spring MVC**: For handling the web layer and RESTful endpoints.
- **Spring Security**: For securing the application with JWT-based authentication.
- **Spring Data JPA**: For data persistence and repository management.
- **Flyway DB**: For managing database migrations.
- **Lombok**: To reduce boilerplate code.
- **Auth0-JWT**: To generate standard JWT tokens
- **Spring Doc**: For generating swagger documentation
- **Spring Eureka Server**: For Service discovering
- **Spring Server Client**: To comunnicate with the server and client load balance
- **RabbitMQ**: To communicate and enqueue emails
- **Gmail**: Used as SMTP to send emails## Features
- **User Authentication and Authorization**: Uses JWT to secure endpoints.
- **Role-based Access Control**: Three different user roles (Customer, Merchant, Admin) with specific permissions and routes.
- **Database Migrations**: Managed by Flyway DB.
-
## Rules
- **Non logged users**:
- Show a complete list of products with pagination function
- Show products by category
- Search products by name or description
- **Signup**:
- Users can register on the platform using email/password and choose between different roles (Customer, Merchant or Admin)- **Customer**:
- Customer profile, with name and document
- Multiples addresses
- Multiples credit cards
- Add products into a Cart
- Create an Order based on products previously included in the cart- **Merchant**:
- Merchant Profile, with name and document
- CRUD products within the already existing categories- **Admin**:
- CRUD Products, Categories and Users.
- **Cart**
- Carts are created and maintained by Customers. Each customer can have only one Cart, with different products
- **Orders**
- Orders register all the products on specific cart, including actual price and total value of the cart.
- To create a order is necessary an CustomerAddress and CustomerCreditCard
- After each order, all products from the customer cart are removed
## Getting Started
### Prerequisites
- Java 17 or higher
- MySql### Projects
1. https://github.com/cesarsicas/springstore-payment-service
2. https://github.com/cesarsicas/springstore-email-service
3. https://github.com/cesarsicas/springstore-service-discovery### Installation
Check docker-composer.yml file in the root## Project Structure and Services
![entidades_database_springstore-Página-2 drawio](https://github.com/user-attachments/assets/fd88888a-ba0e-4ea3-ad41-335097f9478f)## ERD
![erd_diagram](https://github.com/user-attachments/assets/608ab45c-4e7c-4213-9ca1-67bf24eee976)
## Swagger
![swagger](https://github.com/user-attachments/assets/36772be4-816b-4fea-a1e0-feba2232f32e)