Help Desk es una aplicación web para registrar y gestionar solicitudes de soporte (Mesa de Ayuda Interna). Permite crear, listar, ver detalle, editar solicitudes y cambiar su estado (Nuevo, En Proceso, Resuelto, Cerrado). Incluye autenticación con JWT, filtros por estado y prioridad, y validaciones.
• Angular 18.2.0
• Angular Material 18.2.14
• Auth0 Angular JWT 5.2.0
• Java 17
• Spring Boot 4.0.2
• Spring Security + JWT
• Spring Data JPA
• Spring Validation
• Swagger UI (OpenAPI) para documentación de endpoints
• Microsoft SQL Server / Azure SQL
• Persistencia con JPA (creación/actualización automática del esquema)
• Se requiere inserción de datos iniciales (ejemplo: roles/usuarios/solicitudes)
• Herramienta recomendada para gestión: Azure Data Studio
• README.md
• catalog-info.yaml
• backend/
• frontend/
• database/
• backend/
▪ src/main/java/com/presentacion/helpdesk/
▪ controllers/
▪ dtos/
▪ entities/
▪ exceptions/
▪ repositories/
▪ securities/
▪ serviceimplements/
▪ serviceinterfaces/
▪ util/
▪ HelpDeskApplication.java
▪ src/main/resources/
▪ application.properties
▪ pom.xml
▪ mvnw, mvnw.cmd
• frontend/
▪ src/
▪ app/
▪ components/
▪ layout/
▪ login/
▪ solicitud/
▪ guard/
▪ models/
▪ services/
▪ app.component.*
▪ app.config.ts
▪ app.routes.ts
▪ environments/
▪ environment.exam.ts
▪ index.html
▪ main.ts
▪ styles.css
▪ angular.json
▪ package.json
• database/
▪ scripts para inserción de datos iniciales (DML), según archivos del
repositorio
• Backend: http://localhost:8081
• Frontend: http://localhost:4200
Nota: El backend puede usar otro puerto mediante la variable de entorno PORT.
• Java 17 instalado y configurado en PATH
• Node.js 18+ recomendado y npm
• SQL Server local o Azure SQL accesible
• Azure Data Studio o DBeaver (recomendado para revisar e insertar datos)
El esquema/tablas se crean automáticamente al levantar el backend, ya que está configurado con JPA (ddl-auto=update).
Esto significa:
• No es obligatorio ejecutar scripts DDL para crear tablas.
• Solo necesitas tener creada la base de datos vacía (por ejemplo: HelpDesk) y credenciales válidas.
• Al iniciar el backend, se generarán/actualizarán las tablas necesarias.
Aunque el backend crea la estructura, para usar el sistema se requiere ingresar datos iniciales (por ejemplo):
• Roles (ADMIN, USER u otros que maneje tu app)
• Usuarios iniciales para login
• (Opcional) Solicitudes de ejemplo para pruebas
• En la carpeta database/ deben estar los scripts DML (insert) con datos iniciales.
• Ejecuta esos inserts con Azure Data Studio (recomendado) o DBeaver una vez que el backend haya creado las tablas.
-
Crear base de datos vacía (HelpDesk).
-
Levantar backend (esto crea tablas).
-
Ejecutar inserts iniciales desde database/ (roles, usuarios, etc.).
-
Backend (Spring Boot)
El backend usa variables de entorno para evitar credenciales en el código:
• DB_URL
• DB_USERNAME
• DB_PASSWORD
• JWT_SECRET
• CORS_ALLOWED_ORIGINS (opcional; por defecto http://localhost:4200)
• PORT (opcional; por defecto 8081)
Ejemplo recomendado de DB_URL para SQL Server local:
jdbc:sqlserver://localhost:1433;databaseName=HelpDesk;encrypt=true;trustServerCertificate=true
-
Abre PowerShell.
-
Ejecuta:
$env:DB_URL="jdbc:sqlserver://localhost:1433;databaseName=HelpDesk;encrypt=true;trustServerCertificate=true"
$env:DB_USERNAME="sa"
$env:DB_PASSWORD="YourPassword"
$env:JWT_SECRET="cambia-esto-por-un-secreto-largo"
$env:CORS_ALLOWED_ORIGINS="http://localhost:4200"
$env:PORT="8081"
-
Abre terminal.
-
Ejecuta:
export DB_URL="jdbc:sqlserver://localhost:1433;databaseName=HelpDesk;encrypt=true;trustServerCertificate=true"
export DB_USERNAME="sa"
export DB_PASSWORD="YourPassword"
export JWT_SECRET="cambia-esto-por-un-secreto-largo"
export CORS_ALLOWED_ORIGINS="http://localhost:4200"
export PORT="8081"
-
Ir a la carpeta backend:
cd backend
-
Ejecutar la aplicación:
./mvnw spring-boot:run
-
Verificar que la API responde:
• API base: http://localhost:8081
8. Swagger (Documentación de API) Con el backend levantado, la documentación de endpoints está disponible en:
• Swagger UI: http://localhost:8081/swagger-ui/index.html
Esto permite visualizar y probar endpoints desde el navegador.
Si el frontend apunta a una URL equivocada, la app no podrá consumir la API. Para ejecutar en local, el frontend debe apuntar al backend local.
Ubicación del archivo:
frontend/src/environments/environment.exam.ts
Configuración recomendada para local:
production: true
base: http://localhost:8081
dom: localhost:8081
Ejemplo:
export const environment = {
production: true,
base: 'http://localhost:8081',
dom: 'localhost:8081'
};
- Ir a la carpeta frontend:
cd frontend
- Instalar dependencias:
npm install
- Ejecutar:
npm start
- Abrir en el navegador:
• Crear solicitud: título, descripción, prioridad, solicitante
• Listar solicitudes en tabla
• Ver detalle de una solicitud
• Editar solicitud
• Cambiar estado: Nuevo → En Proceso → Resuelto → Cerrado
• Regla: no se puede pasar de “Cerrado” a otro estado
• Buscar/filtrar por estado y prioridad
• Seguridad: autenticación con JWT
Este repositorio incluye catalog-info.yaml para registrarlo como componente en Backstage.
Pasos para registrar en Backstage:
-
Ir a Catalog
-
Seleccionar Register Existing Component
-
Pegar la URL del repositorio GitHub
-
Seleccionar el archivo catalog-info.yaml en la raíz
-
Confirmar para que aparezca en el catálogo
• La estructura de tablas se crea automáticamente con JPA (ddl-auto=update) al levantar el backend.
• Los datos iniciales (roles/usuarios) deben insertarse manualmente (scripts DML en database/).
• Si el puerto 8081 está ocupado, se puede cambiar usando PORT (por ejemplo 8082) y actualizar el base URL del frontend.
• cd backend
• (set env vars)
• ./mvnw spring-boot:run
• cd frontend
• npm install
• npm start