Proyecto desarrollado para la gestión de residuos en conjuntos residenciales, cumpliendo con las 3 fases de transferencia de conocimiento (JPA, Validaciones/Excepciones y Security).
- Tener instalado MySQL.
- Crear la base de datos:
CREATE DATABASE verde_app_spring;. - Configurar usuario/contraseña en
src/main/resources/application.properties.
El sistema cuenta con autenticación básica. Credenciales:
- Admin:
admin/admin123(Permisos totales). - User:
user/12345(Solo consulta GET).
Para que el sistema funcione correctamente y no arroje errores de integridad (500), se debe seguir este orden estrictamente:
- Crear el Conjunto: Es la base de todo. Sin un conjunto con ID, no hay dónde ubicar las unidades (torre y apto).
- Crear la Unidad: Se debe asociar al ID del conjunto creado en el paso 1.
- Crear el Residente: Se asocia al ID de la unidad creada en el paso 2.
URL: http://localhost:8080/api/conjuntos
{
"nombre": "VerdeApp Horizonte",
"direccion": "Calle 170 # 15-40",
"nit": "900.555.222-1"
}URL: http://localhost:8080/api/unidades
{
"torre": "Torre 5",
"numeroApartamento": "1002",
"conjunto": { "conjuntoId": 1 }
}URL: http://localhost:8080/residentes
{
"nombre": "Yilmer",
"primerApellido": "Gómez",
"segundoApellido": "Sánchez",
"cedula": "10102020",
"email": "yilmer.adso@sena.edu.co",
"unidad": { "unidadId": 1 }
}El sistema utiliza Basic Auth. Configura el usuario en la pestaña Authorization de Postman:
| Rol | Usuario | Contraseña | Permisos |
|---|---|---|---|
| Admin | admin | admin123 | Control total (CRUD completo) |
| User | user | 12345 | Solo lectura (GET) |
| OTROS | N/A | N/A | Solo ver Unidades (Público). |
OJO: ¿Qué pasa si un usuario no tiene permiso?
-
Si un USER intenta un POST, PUT o DELETE, recibirá un error 403 Forbidden.
-
Si no se ingresan credenciales, el sistema dará 401 Unauthorized, excepto en el listado de unidades.
Se implementaron las siguientes validaciones:
-
No escribir el nombre en un solo registro, sino separarlo para seguir la atomicidad (nombre, primer y segundo apellido).
-
Formato: El email debe contener un formato válido (ej. usuario@dominio.com).
-
Obligatoriedad: Campos como NIT, Cédula y Nombres no pueden enviarse vacíos (@NotBlank).
-
Unicidad: - No se permiten dos residentes con la misma cédula.
-
Regla de Oro: Una unidad (Torre/Apto) solo puede tener un usuario responsable asignado (@OneToOne). Si intentas asignar un segundo usuario a la misma unidad, el sistema lanzará un error de validación.
- Clonar o Descargar
- Opción A (Git): En IntelliJ, ve a File > New > Project from Version Control. Pega el enlace de este repositorio de GitHub y dale a Clone.
- Opción B (ZIP): Si descargaste el archivo .zip de GitHub, descomprímelo y en IntelliJ dale a File > Open y selecciona la carpeta VerdeApp.
- Sincronizar las Librerías (Maven)
Al abrir el proyecto, IntelliJ verá que faltan librerías (Security, JPA, etc.).
- En la esquina derecha de la pantalla, verás un icono pequeño con una "M" (Maven). Haz clic ahí y luego dale al icono de las dos flechas en círculo (Reload All Maven Projects).
- ¿Por qué? Esto descarga automáticamente todo lo que el proyecto necesita para funcionar sin que tú tengas que instalar nada manualmente.
- Configurar tu Base de Datos Local
Tu base de datos de MySQL probablemente tiene una contraseña diferente a la mía.
- Abre el archivo
src/main/resources/application.properties - Busca la línea
spring.datasource.password= - Si tu MySQL NO tiene contraseña: Borra lo que haya y déjalo vacío ( así:
src/main/resources/application.properties.) - Si tu MySQL tiene contraseña: Escríbela ahí (ej:
spring.datasource.password=tu-contraseña)
- Abre el archivo
- Crear la Base de Datos:
Antes de darle Play, ve a MySQL Workbench y ejecuta este comando único:
CREATE DATABASE verde_app_spring;- No necesitas crear las tablas. Gracias a la configuración del proyecto, Spring Boot creará las tablas por ti la primera vez que lo corras.
-
Error: Port 8080 already in use: Significa que ya tienes otro programa usando ese puerto. Ve al archivo application.properties y cambia la línea a server.port=8081.
-
Símbolos en rojo en el código: Si ves letras rojas en las clases (como @NotBlank o @Entity), es porque Maven no ha terminado de descargar las librerías. Repite el Paso 2.
-
Error 401 Unauthorized en Postman: Recuerda que el proyecto tiene seguridad. En Postman, ve a la pestaña Authorization, elige Basic Auth y usa el usuario admin con la contraseña admin123.