Esta aplicación Spring Boot implementa un sistema para capturar y gestionar solicitudes de crédito comercial, siguiendo el patrón de diseño MVC (Model-View-Controller).
-
Validaciones de Campos (8 campos diferentes validados):
- Nombre Completo (obligatorio, 2-100 caracteres)
- Cargo (obligatorio, máximo 50 caracteres)
- Número de Identificación Tributaria (obligatorio, 10-13 dígitos)
- Dirección (obligatoria, máximo 200 caracteres)
- Ciudad (obligatoria, máximo 50 caracteres)
- Estado (obligatorio, máximo 50 caracteres)
- Código Postal (obligatorio, 5 dígitos)
- Tipo de Negocio (obligatorio, máximo 100 caracteres)
-
Base de Datos SQLite:
- Almacenamiento persistente de los campos más significativos
- Configuración automática de esquemas con Hibernate
- Consultas optimizadas con Spring Data JPA
-
Patrón MVC:
- Model:
SolicitudCredito(entidad JPA con validaciones) - View: Templates Thymeleaf con Bootstrap 5
- Controller:
SolicitudCreditoControllercon manejo de formularios
- Model:
-
Funcionalidades de Gestión:
- Formulario de captura con validación en tiempo real
- Lista de solicitudes con búsqueda y filtrado
- Vista detallada de cada solicitud
- Eliminación de registros con confirmación
- Framework: Spring Boot 3.1.0
- Base de Datos: SQLite con Spring Data JPA
- Validación: Jakarta Bean Validation
- Frontend: Thymeleaf + Bootstrap 5 + Bootstrap Icons
- Build Tool: Maven
- Java Version: 17
src/
├── main/
│ ├── java/com/example/creditapplication/
│ │ ├── CreditApplicationApp.java # Clase principal
│ │ ├── controller/
│ │ │ └── SolicitudCreditoController.java # Controlador MVC
│ │ ├── model/
│ │ │ └── SolicitudCredito.java # Entidad/Modelo
│ │ ├── repository/
│ │ │ └── SolicitudCreditoRepository.java # Repositorio JPA
│ │ └── service/
│ │ └── SolicitudCreditoService.java # Capa de servicio
│ └── resources/
│ ├── application.properties # Configuración
│ ├── static/css/
│ │ └── styles.css # Estilos personalizados
│ └── templates/
│ ├── formulario.html # Vista del formulario
│ ├── lista.html # Vista de lista
│ └── detalle.html # Vista de detalle
- Java 17 o superior
- Maven 3.6 o superior
-
Clonar o ubicarse en el directorio del proyecto:
cd credit-application -
Compilar el proyecto:
mvn clean compile
-
Ejecutar la aplicación:
mvn spring-boot:run
-
Acceder a la aplicación:
- URL: http://localhost:8080
- La base de datos SQLite se creará automáticamente en
credit_application.db
# Ejecutar tests
mvn test
# Generar JAR ejecutable
mvn clean package
# Ejecutar JAR generado
java -jar target/credit-application-1.0.0.jar
# Limpiar compilación
mvn clean- Acceso desde: http://localhost:8080
- Campos obligatorios marcados con (*)
- Validaciones en tiempo real
- Mensajes de error específicos para cada campo
- Acceso desde: http://localhost:8080/lista
- Búsqueda por nombre de empresa, ciudad o estado
- Ordenamiento por fecha de registro (más reciente primero)
- Acciones: Ver detalle, Eliminar
- Acceso desde la lista o URL: http://localhost:8080/detalle/{id}
- Información completa de la solicitud
- Opciones para volver, crear nueva o eliminar
| Campo | Validación | Mensaje de Error |
|---|---|---|
| Nombre Completo | @NotBlank, @Size(min=2, max=100) | "El nombre es obligatorio" / "Entre 2 y 100 caracteres" |
| Cargo | @NotBlank, @Size(max=50) | "El cargo es obligatorio" / "Máximo 50 caracteres" |
| Número ID Tributaria | @NotBlank, @Pattern(\d{10,13}) | "Obligatorio" / "Entre 10 y 13 dígitos" |
| Dirección | @NotBlank, @Size(max=200) | "La dirección es obligatoria" / "Máximo 200 caracteres" |
| Ciudad | @NotBlank, @Size(max=50) | "La ciudad es obligatoria" / "Máximo 50 caracteres" |
| Estado | @NotBlank, @Size(max=50) | "El estado es obligatorio" / "Máximo 50 caracteres" |
| Código Postal | @NotBlank, @Pattern(\d{5}) | "Obligatorio" / "Debe tener 5 dígitos" |
| Tipo de Negocio | @NotBlank, @Size(max=100) | "El tipo de negocio es obligatorio" / "Máximo 100 caracteres" |
- Responsive Design: Interfaz adaptable a dispositivos móviles
- Confirmación de Eliminación: Modal de confirmación antes de eliminar
- Mensajes Flash: Notificaciones de éxito/error después de operaciones
- Búsqueda Avanzada: Filtrado por múltiples criterios
- Iconografía: Bootstrap Icons para mejor UX
- Animaciones CSS: Transiciones suaves y efectos visuales
La aplicación utiliza SQLite como base de datos embebida. El archivo credit_application.db se crea automáticamente en la raíz del proyecto.
CREATE TABLE solicitudes_credito (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nombre_completo VARCHAR(100) NOT NULL,
cargo VARCHAR(50) NOT NULL,
nombre_negocio VARCHAR(100) NOT NULL,
numero_identificacion_tributaria VARCHAR(13) NOT NULL,
direccion VARCHAR(200) NOT NULL,
ciudad VARCHAR(50) NOT NULL,
estado VARCHAR(50) NOT NULL,
codigo_postal VARCHAR(5) NOT NULL,
tipo_negocio VARCHAR(100) NOT NULL,
forma_legal VARCHAR(100),
telefono VARCHAR(20),
inicio_actividad DATE,
fecha_registro DATE NOT NULL
);