https://github.com/juliorom/ecommerce-core
Este proyecto es una API REST de e-commerce desarrollada con Spring Boot, que gestiona carritos de compra en MongoDB y transacciones en PostgreSQL. Implementa Spring Security con JWT para autenticación y autorización, permitiendo la compra segura de productos y el control de acceso según roles (USER, ADMIN). 🚀
https://github.com/juliorom/ecommerce-core
automation-testing docker integration-testing java-17 jdk17 jwt-authentication lombok mongodb-database postgresql-database spring-boot spring-security swagger-ui unit-testing
Last synced: 4 months ago
JSON representation
Este proyecto es una API REST de e-commerce desarrollada con Spring Boot, que gestiona carritos de compra en MongoDB y transacciones en PostgreSQL. Implementa Spring Security con JWT para autenticación y autorización, permitiendo la compra segura de productos y el control de acceso según roles (USER, ADMIN). 🚀
- Host: GitHub
- URL: https://github.com/juliorom/ecommerce-core
- Owner: JulioRom
- Created: 2025-02-09T00:59:27.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2025-02-17T22:09:05.000Z (4 months ago)
- Last Synced: 2025-02-17T22:30:52.939Z (4 months ago)
- Topics: automation-testing, docker, integration-testing, java-17, jdk17, jwt-authentication, lombok, mongodb-database, postgresql-database, spring-boot, spring-security, swagger-ui, unit-testing
- Language: Java
- Homepage:
- Size: 139 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 📦 Ecommerce API
Ecommerce API es un backend desarrollado en **Spring Boot** para la gestión de una tienda en línea. Incluye autenticación con **JWT**, gestión de usuarios, productos, carritos de compra y compras.
## 🚀 Características
👉 **Autenticación y autorización con JWT**
👉 **CRUD de usuarios** (registro, login, búsqueda, actualización y eliminación)
👉 **Gestión de productos** (crear, listar, buscar, actualizar y eliminar)
👉 **Carrito de compras** (agregar, eliminar y vaciar productos)
👉 **Proceso de compra** (validación de stock y confirmación de pedido)
👉 **Documentación con Swagger** (Exploración y prueba de endpoints)---
## 🎠 Tecnologías Utilizadas
- **Spring Boot 3.4.2** - Framework principal
- **Spring Security & JWT** - Autenticación y autorización
- **Spring Data JPA** - Acceso a PostgreSQL
- **Spring Data MongoDB** - Acceso a MongoDB
- **Hibernate** - ORM para PostgreSQL
- **MongoDB** (Gestión del carrito de compras)
- **Jakarta Validation** - Validaciones de datos
- **Lombok** - Reducción de código repetitivo
- **MapStruct** - Mapeo de DTOs
- **Swagger OpenAPI** - Documentación de la API
- **JUnit 5 & Mockito** - Pruebas unitarias e integración
- **Docker & Docker Compose** - Contenerización del sistema
- **Maven** (Gestión de dependencias)---
## 🛠️ Instalación y Configuración
1. Clonar el repositorio:
```sh
git clone https://github.com/tu-repo/ecommerce-api.git
cd ecommerce-api
```
2. Configurar el archivo `.env` o `application.yml` con las credenciales de BD.
3. Ejecutar con Docker Compose:
```sh
docker-compose up -d
```
4. Para ejecutar las pruebas:
```sh
mvn test
```
---## 🚀 Configuración de Variables de Entorno
Este proyecto utiliza un archivo `.env` para almacenar configuraciones sensibles. **Por seguridad, el archivo `.env` no se incluye en el repositorio**. Sigue estos pasos para configurarlo:
1. **Copia el archivo de referencia:**
cp .env.example .env
2. **Edita el archivo `.env` y completa los valores según tu entorno.**📌 **Importante:** Nunca subas el archivo `.env` al repositorio, ya que contiene información sensible.
---
## 🔥 Endpoints Principales
### **Autenticación**
| Método | Endpoint | Descripción |
|--------|------------------------|-------------|
| `POST` | `/api/auth/register` | Registrar usuario |
| `POST` | `/api/auth/login` | Iniciar sesión y obtener JWT |### **Usuarios**
| Método | Endpoint | Descripción |
|--------|------------------------|-------------|
| `GET` | `/api/usuarios` | Listar usuarios (ADMIN) |
| `GET` | `/api/usuarios/{id}` | Obtener usuario por ID |
| `GET` | `/api/usuarios/buscar` | Buscar usuario por username |
| `PUT` | `/api/usuarios/{username}` | Actualizar usuario |
| `DELETE` | `/api/usuarios/{id}` | Eliminar usuario (ADMIN) |---
## 🔒 Autenticación y Seguridad
1. **Registro de Usuario:**
```http
POST api/auth/register
```
2. **Inicio de Sesión:**
```http
POST api/auth/login
```
- Respuesta: JWT Token
3. **Acceso a Endpoints Protegidos:**
- Enviar el token en el encabezado:
```http
Authorization: Bearer
```
---## ✅ Pruebas y Cobertura
Se han implementado **pruebas unitarias y de integración** para validar la funcionalidad:
| Servicio | Pruebas Unitarias | Pruebas de Integración | Observaciones |
|-------------------------|------------------|------------------------|--------------|
| `UsuarioService` | ✅ Sí | ✅ Necesario | Validar autenticación y persistencia |
| `ProductoService` | ✅ Sí | ⚠️ Opcional | Cobertura completa con unitarias |
| `CompraService` | ✅ Sí | ✅ Necesario | Validar persistencia en PostgreSQL |
| `CarritoCompraService` | ✅ Sí | ✅ Necesario | Validar persistencia en MongoDB |---
## 📖 Documentación con Swagger
Swagger permite explorar y probar la API de manera interactiva.📄 **Acceder a la documentación Swagger:**
```url
http://localhost:8080/swagger-ui/index.html
```📄 **Obtener el archivo OpenAPI en JSON:**
```url
http://localhost:8080/v3/api-docs
```📄 **Obtener el archivo OpenAPI en YAML:**
```url
http://localhost:8080/v3/api-docs.yaml
```---
## 📚 Estructura del Proyecto
```
📂 ecommerce-api
┗📂 src/main/java/com/springproject/ecommercecore
┗📂 controller # Controladores REST
┗📂 model # Modelos de la base de datos
┗📂 repository # Repositorios JPA y MongoDB
┗📂 security # Configuración de JWT y seguridad
┗📂 service # Lógica de negocio
┗📂 dataaccess # Acceso a base de datos (PostgreSQL/MongoDB)
┗📂 exception # Manejo de excepciones globales
┗📂 config # Configuraciones de la aplicación┗📚 EcommerceApplication.java # Clase principal
┗📂 src/main/resources
┗📚 application.properties # Configuración del proyecto
┗📚 pom.xml # Dependencias del proyecto
```---
## 🚀 Mejoras Futuras
- Integración con **pasarelas de pago**.
- Implementación de **WebSockets** para notificaciones en tiempo real.
- Desarrollo del **frontend en React o Angular**.
- Optimización de consultas con **Redis Cache**.
---## 🧑💻 Autor
- **Desarrollado por JulioRom**
- 📧 **Correo:** [[email protected]](mailto:[email protected])
- 🔗 **GitHub:** [https://github.com/JulioRom](https://github.com/JulioRom)## 📜 Licencia
Este proyecto está bajo la **Licencia MIT**. Consulta el archivo LICENSE para más detalles.