Backend del sistema de gestión de prácticas pre-profesionales desarrollado con Spring Boot y MySQL. Expone APIs RESTful para el consumo del frontend y gestiona el almacenamiento de archivos mediante MinIO.
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Frontend │─────▶│ Spring Boot │─────▶│ MySQL 8.0 │
│ (React) │ │ REST API │ │ (Data Base) │
└─────────────┘ └──────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ MinIO │
│ (Archivos) │
└─────────────────┘
| Componente | Tecnología | Versión |
|---|---|---|
| Framework | Spring Boot | 2.7.5 |
| Lenguaje | Java | 17 |
| Base de datos | MySQL | 8.0 |
| Almacenamiento | MinIO | Latest |
| Documentación | Swagger | 3.0 |
- Alumno → Crea SolicitudPPP (solicitud inicial con archivo)
- Alumno → Sube CartaAceptacion (PDF - carta de aceptación empresarial)
- Alumno → Sube FormatoF1 (Word - documento formal)
- PreDocumentosPPP → Agrupa solicitud, carta y formato para seguimiento
- Docente (miembro comisión PPP) → Revisa mediante RevisionPreDocumentoPPP y aprueba o indica correcciones
| Entidad | Descripción |
|---|---|
| Alumno | Estudiante que realiza la práctica pre-profesional |
| SolicitudPPP | Solicitud inicial con archivo adjunto |
| CartaAceptacion | Documento PDF de aceptación empresarial |
| FormatoF1 | Documento Word formal de la práctica |
| PreDocumentosPPP | Contenedor que agrupa todos los documentos para seguimiento |
| RevisionPreDocumentoPPP | Revisión realizada por el docente evaluador |
| Docente | Miembro de la comisión PPP encargado de revisar |
Este proyecto utiliza SonarQube para el análisis continuo de la calidad del código. SonarQube es una plataforma open-source que permite:
- Análisis estático de código - Detecta bugs, vulnerabilidades y code smells
- Cobertura de código - Medición del porcentaje de código cubierto por pruebas
- Technical Debt - Identifica el tiempo estimado para resolver problemas técnicos
- Métricas de calidad - Complejidad ciclomática, duplicación, etc.
El proyecto incluye SonarQube en docker-compose. Para levantarlo:
docker compose up -d sonarqubeAcceder al dashboard en: http://localhost:9100 (admin/admin)
./mvnw sonar:sonarMantener un código de calidad es fundamental para:
- Mantenibilidad - Código limpio y fácil de entender
- Confiabilidad - Menos bugs y errores en producción
- Seguridad - Detección temprana de vulnerabilidades
- Technical Debt - Evitar acumulación de deuda técnica
- Java JDK 17 o superior
- Maven 3.8+
- Docker Desktop (para levantar MySQL y MinIO)
- MySQL Client (opcional, para verificación)
-
Levantar servicios Docker:
docker compose up -d
-
Ejecutar la aplicación:
./mvnw spring-boot:run
-
Acceder a Swagger UI:
http://localhost:8080/swagger-ui/
| Variable | Descripción | Valor por defecto |
|---|---|---|
spring.datasource.url |
URL de MySQL | jdbc:mysql://localhost:3306/datasppp |
spring.datasource.username |
Usuario MySQL | sppp |
spring.datasource.password |
Contraseña MySQL | sppp123 |
| Servicio | Puerto | Descripción |
|---|---|---|
| Spring Boot | 8080 | API REST principal |
| MySQL | 3306 | Base de datos |
| MinIO API | 9000 | Almacenamiento de archivos |
| MinIO Console | 9001 | Interfaz administrativa MinIO |
Este proyecto utiliza el estándar Conventional Commits para los mensajes de commit.
<tipo>(<scope>): <descripción>
[body opcional]
[footer opcional]
| Tipo | Descripción |
|---|---|
feat |
Nueva funcionalidad o característica |
fix |
Corrección de un bug |
refactor |
Refactorización sin cambio de funcionalidad |
docs |
Cambios únicamente en documentación |
style |
Formato, colores, indentación (sin cambio de lógica) |
test |
Agregar o corregir tests |
chore |
Tareas de mantenimiento, dependencias |
perf |
Mejora de rendimiento |
build |
Cambios en el sistema de build o dependencias |
ci |
Cambios en pipelines de CI/CD |
# Nueva funcionalidad
git commit -m "feat(alumno): agregar endpoint para login"
# Corrección de bug
git commit -m "fix(solicitud): corregir validación de URL"
# Refactorización
git commit -m "refactor: simplificar lógica de autenticación"
# Documentación
git commit -m "docs: actualizar README con instrucciones de instalación"- Usar imperative mood (ej. "add" no "added" o "adds")
- Limitar la descripción a 50 caracteres
- El body es opcional, usar si el cambio requiere más contexto
- El scope es opcional pero recomendado (ej.
alumno,solicitud,docente)

