ClienteApp es una aplicación desarrollada en Java con Spring Boot que permite generar y administrar reportes de servicios técnicos para una empresa de impresión digital. El sistema genera PDFs de los mantenimientos realizados, integra el envío por correo electrónico y busca automatizar los reportes que antes se hacían manualmente. A futuro, se pretende ampliar su alcance para gestionar inventarios, control de repuestos y estadísticas sobre los servicios.
Características
Tecnologías
Requisitos
Instalación y Ejecución
Estructura del Proyecto
Uso de la Aplicación
Próximas Mejoras
Contribución
Licencia
Envío de correos: Envía los PDFs de manera automática a los clientes.
Gestión de clientes y servicios: Guarda la información de cada cliente y los mantenimientos realizados.
Configuración flexible: Usa variables de entorno para credenciales de base de datos y propiedades de Spring Boot.
Escalable: Pensado para integrar funcionalidades como inventarios, estadísticas mensuales, paneles de control, etc.
Lenguaje: Java 17
Framework: Spring Boot 3.3.0
Base de Datos: MySQL 8.0.33
Generación de PDF: iText7
ORM: Hibernate / JPA
MapStruct: Para el mapeo de DTOs
Spring Security: (Aún por definir la implementación específica)
Maven: Para la construcción y gestión de dependencias
Java 17 instalado.
Maven (3.6+ recomendado) instalado, si deseas compilar localmente.
MySQL corriendo y con una base de datos creada (por defecto bddishjer).
Opcional: Variables de entorno para la BD (si se desean usar en lugar de colocar credenciales directamente):
SPRING_DATA_SOURCE_URL
SPRING_DATA_SOURCE_USERNAME
SPRING_DATA_SOURCE_PASSWORD
Clonar el repositorio:
Verifica en application.properties la URL, usuario y contraseña de tu base de datos.
Asegúrate de tener creada la base de datos bddishjer (o la que desees).
Opcionalmente, configura tus variables de entorno en tu sistema para mayor seguridad (en lugar de exponer tus credenciales en el archivo).
Compilar y correr la aplicación:
Por defecto, la app corre en http://localhost:8080/.
Puedes hacer un GET a algún endpoint como http://localhost:8080/clientes o http://localhost:8080/dashboard para comprobar que está funcionando.
Ruta | Descripción |
---|---|
clienteapp/ | Directorio raíz del proyecto |
├─ .idea/ | Configuración de IntelliJ (ignorado en GitHub usualmente) |
├─ .mvn/ | Maven wrapper |
├─ src/ | Código fuente |
│ ├─ main/ | Código principal |
│ │ ├─ java/com/app/clienteapp/ | Paquete base de Java |
│ │ │ ├─ config/ | Clases de configuración (Seguridad, etc.) |
│ │ │ ├─ controller/ | Controladores REST |
│ │ │ ├─ dto/ | Objetos de transferencia de datos |
│ │ │ ├─ firmas/ | Carpeta específica para PDFs, firma digital, etc. |
│ │ │ ├─ model/ | Modelos de negocio (si no se usan Entities directas) |
│ │ │ ├─ persistence.entity/ | Entidades JPA |
│ │ │ ├─ repository/ | Repositorios (interfaces JPA) |
│ │ │ └─ service/ | Lógica de negocio |
│ │ └─ resources/ | Recursos de la aplicación |
│ │ ├─ application.properties | Configuración principal |
│ │ └─ banner.txt | Banner de Spring Boot al inicio |
│ └─ test/ | Pruebas unitarias e integración |
│ └─ ... | Archivos de prueba |
├─ pom.xml | Dependencias y configuración de Maven |
├─ .gitignore | Archivos ignorados por Git |
└─ README.md | Este archivo |
Endpoint (ejemplo): POST /api/reportes/generar Envía datos del servicio para generar un PDF y enviarlo por correo.
GET /api/clientes : listar todos los clientes
POST /api/clientes : crear un nuevo cliente
PUT /api/clientes/{id} : actualizar un cliente
DELETE /api/clientes/{id} : eliminar un cliente
GET /api/servicios : listar servicios realizados
POST /api/servicios : registrar un nuevo servicio
PUT /api/servicios/{id} : actualizar datos de un servicio
DELETE /api/servicios/{id} : eliminar un servicio
Si tienes Swagger habilitado, podrías acceder a la documentación en:
Integrar inventario: Control de repuestos, stock, alertas de bajo inventario, etc.
Estadísticas: Cantidad de servicios por mes, tiempos de respuesta, horas totales dedicadas por técnico, etc.
Exportar a Excel: Generar reportes de servicios en formato XLSX, CSV, etc.
Autenticación y roles: Ampliar la configuración de Spring Security para tener usuarios y roles (admin, técnico, cliente).
Despliegue en la nube: Usar Docker + contenedores en AWS, Azure o similar.
¡Las contribuciones son bienvenidas! Para contribuir:
Haz un fork del proyecto
Crea una rama de característica (git checkout -b feature/nueva-funcionalidad)
Haz commit de tus cambios (git commit -m 'Agrega nueva funcionalidad')
Haz push de la rama (git push origin feature/nueva-funcionalidad)
Crea un Pull Request explicando los cambios
Este proyecto se distribuye privadamente por lo que requeriras de autorizacion para su distribucion y/o comercializacion
Si te resulta útil o quieres proponer mejoras, no dudes en abrir un issue o un pull request.
“Automatizar los reportes manuales es solo el primer paso: la verdadera innovación surge cuando cada servicio se convierte en un insumo para la mejora continua.”