Este proyecto es una API REST desarrollada con Spring Boot para el sistema de gestión.
- Java 17 o superior
- PostgreSQL 12 o superior
- Maven 3.8 o superior
- Node.js 16 o superior (para el frontend)
- Clonar el repositorio:
git clone <url-del-repositorio>
cd backend-arq-
Configurar las variables de entorno:
- Crear un archivo
.enven la raíz del proyecto - Copiar el contenido de
.env.exampley ajustar los valores según tu entorno
- Crear un archivo
-
Configurar la base de datos:
# Crear la base de datos en PostgreSQL
createdb sistemaBddEl proyecto cuenta con tres perfiles de Spring:
dev: Para desarrollo local (por defecto)test: Para pruebasprod: Para producción
Para ejecutar con un perfil específico:
./mvnw spring-boot:run -Dspring.profiles.active=devEl sistema utiliza JWT para la autenticación:
- Access Token: Válido por 10 minutos
- Refresh Token: Válido por 30 minutos
POST /login
Content-Type: application/json
{
"username": "email@ejemplo.com",
"password": "contraseña"
}
Respuesta:
{
"access_token": "...",
"refresh_token": "...",
"email": "email@ejemplo.com",
"roles": ["ROLE_ADMIN", "ROLE_PROFESOR"]
}
El sistema implementa un manejo centralizado de errores que retorna respuestas en el siguiente formato:
{
"timestamp": "2024-03-21T10:30:00",
"status": 400,
"error": "Bad Request",
"message": "Descripción del error"
}El sistema maneja los siguientes roles:
ROLE_ADMIN: Acceso completo al sistemaROLE_PROFESOR: Acceso a funcionalidades específicas de profesores
Las siguientes variables de entorno son necesarias:
# Base de datos
DATABASE_URL=jdbc:postgresql://localhost:5432/sistemaBdd
DB_USERNAME=postgres
DB_PASSWORD=tu_contraseña
# JWT
JWT_SECRET=tu_clave_secreta
JWT_ACCESS_TOKEN_EXPIRATION=600000
JWT_REFRESH_TOKEN_EXPIRATION=1800000
# Frontend
FRONTEND_URL=http://localhost:5173
CORS_ALLOWED_ORIGINS=http://localhost:5173,http://localhost:4200
# Correo
MAIL_HOST=smtp.ejemplo.com
MAIL_PORT=465
MAIL_USERNAME=tu_usuario
MAIL_PASSWORD=tu_contraseñaPara ejecutar en modo desarrollo:
- Asegúrate de tener PostgreSQL ejecutándose
- Configura el archivo
.env - Ejecuta:
./mvnw spring-boot:runPara ejecutar las pruebas:
./mvnw testEl backend está configurado para trabajar con un frontend en React/Angular. Asegúrate de:
- Configurar los orígenes permitidos en CORS_ALLOWED_ORIGINS
- El frontend debe incluir el token JWT en el header Authorization:
headers: {
'Authorization': `Bearer ${accessToken}`
}- Manejar las respuestas de error según el formato estándar:
interface ApiError {
timestamp: string;
status: number;
error: string;
message: string | Record<string, string>;
}El sistema utiliza Log4j2 para el logging:
- Desarrollo: Nivel DEBUG para com.arquitectura.proyecto
- Producción: Nivel INFO para com.arquitectura.proyecto
Endpoints de Actuator habilitados:
- /actuator/health
- /actuator/info
- /actuator/metrics