- Información General
- Tecnologías
- Arquitectura
- Instalación
- Seguridad y Autenticación
- Uso de la API
- Swagger
Este proyecto es una API REST para la gestión de alquileres de trajes y disfraces, desarrollada en Java 21 con Spring Boot. Se conectara con Frontend usando React como framework,
El sistema permite administrar:
- 👤 Clientes
- 🧑💼 Empleados
- 📄 Alquileres
- 🧾 Ítems de alquiler
Incluye operaciones como:
- Registro, edición, activación y desactivación de clientes y empleados.
- Creación de alquileres.
- Agregar ítems a un alquiler.
- Consultar alquileres por cliente.
- Ver el detalle completo de un alquiler.
El proyecto sigue buenas prácticas de diseño:
- Separación por capas.
- DTOs para comunicación externa.
- Entidades con comportamiento.
- Services como orquestadores de casos de uso.
- Manejo centralizado de excepciones.
Status del proyecto:
🚧 En desarrollo — versión académica/profesional para portafolio.
Tecnologías utilizadas en el proyecto:
- ☕ Java 21
- 🌱 Spring Boot 4.0.0
- 🔐 Spring Security + JWT
- 🗄 Spring Data JPA
- 🐘 PostgreSQL
- 📦 Maven
- 🔄 Hibernate
- 📘 Swagger (OpenAPI)
- 📮 Postman
El proyecto esta organizado por capaz
- controller -> exposición REST
- dto -> objetos de entrada y salida
- service -> casos de uso
- model -> entidades con lógica
- repository -> acceso a datos
- exception -> manejo de errores
Principios aplicados:
- DTO Pattern
- Domain Model
- Separation of Concerns
- RESTful design
- Transactional Services
- Centralized Exception Handling
Las entidades contienen comportamiento, no solo datos.
Los services orquestan los casos de uso.
Los controllers solo coordinan HTTP.
Antes de iniciar asegúrate de tener instalado:
- Java 21
- Maven
- PostgreSQL (O la base de datos SQL que desee)
- Git
git clone git@github.com:Sanavi01/sisrenta.git
cd sisrentaCREATE DATABASE sisrenta_bbdd;
spring.datasource.url=jdbc:postgresql://localhost:5432/sisrenta_bbdd
spring.datasource.username=postgres
spring.datasource.password=tu_password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
mvn clean install
mvn spring-boot:run
La aplicacion quedara disponible en
http://localhost:8080
La API implementa autenticación basada en JWT (JSON Web Token) usando Spring Security.
En el archivo application.properties agrega una contraseña en HS256, por PRACTICIDAD se da la siguiente:
jwt.secret=2270e73a86e507f7a99d98e739a62f96ec812c1a19b37a0db27785e620518566
jwt.expiration=3600000
Características:
- Contraseñas cifradas con BCrypt.
- Login mediante /auth/login.
- Protección de endpoints con JWT.
- Autorización por token en cada request.
Solo estos endpoints son públicos:
- POST /empleados: (Este se deja publico con el fin de poder crear un empleado,
hacer login, obtener el token, usarlo para autenticarse y poder utilizar el resto de endpoints)

- POST /auth/login

El resto requiere token JWT.
Dicho token se utilizara en Authorize, una vez autenticados el resto de enpoints estara libre
El flujo de uso es:
- Crear un empleado.
- Hacer login.
- Obtener token JWT.
- Usar el token para consumir la API.
Para mirar los endpoints se ha dado uso de la herramienta Swagger UI, una vez se inicie el programa se podran encontrar los Endpoints en:
http://localhost:8080/swagger-ui/index.html#/
Flujo recomendado:
- Ejecutar la aplicación.
- Crear empleado.
- Hacer login.
- Copiar token.
- Click en Authorize.
- Pegar el token.
- Probar endpoints protegidos.


