gestion-clientes
Gestión de clientes — Proyecto académico (Programación A)

Aplicación full stack para gestionar clientes (alta, listado, edición y baja) mediante una API REST en Spring Boot y una interfaz web ligera en HTML, CSS y JavaScript. Sirve como práctica de integración entre frontend, backend y base de datos relacional.
📋 Información general del proyecto
| |
|---|
| Nombre del repositorio | gestion-clientes |
| Repositorio en GitHub | github.com/saoricoder/gestion-clientes. El slug es independiente de las carpetas internas (api_productos, etc.). |
| Descripción | Sistema de CRUD de clientes con datos: CI, nombres, apellidos y contacto. El backend expone endpoints REST documentables con OpenAPI/Swagger; el frontend consume la API con fetch. |
🛠️ Stack tecnológico
Frontend
- HTML5 — Estructura semántica
- CSS3 — Estilos personalizados (
api_clientes_frontend/css/style.css)
- JavaScript (vanilla) — Lógica y llamadas HTTP
- Bootstrap 5.3 — Layout, tabla, modal y componentes UI (CDN)
Backend
- Java 17
- Spring Boot 3.5.4 — Web MVC, capa REST
- Spring Data JPA + Hibernate — Persistencia y mapeo objeto-relacional
- Jakarta Validation — Validación de entidades en creación/actualización
- SpringDoc OpenAPI 2 — Documentación interactiva (Swagger UI)
Base de datos y otras herramientas
- MySQL 8 — Base
clientes_db, esquema gestionado con ddl-auto=update
- Maven — Construcción y dependencias del backend
- Spring Boot DevTools — Recarga en desarrollo (opcional)
✨ Funcionalidades principales
A nivel frontend
- Interfaz con Bootstrap (tabla responsive, modal para formulario)
- Listado de clientes al cargar la página
- Crear cliente y editar existente desde el mismo modal
- Eliminar con confirmación del navegador
- Consumo de API REST (
GET, POST, PUT, DELETE) contra http://localhost:8080/api/clientes
A nivel backend
- CRUD completo de clientes bajo el prefijo
/api/clientes
- Consultas por id (
GET /api/clientes/{id}) y por CI (GET /api/clientes/ci/{ci})
- Validación server-side (
@NotBlank, CI único en base de datos)
- CORS habilitado para orígenes externos (
@CrossOrigin(origins = "*")) en desarrollo
- Documentación OpenAPI en Swagger UI (ruta configurada en
application.properties)
🚀 Guía de instalación (entorno local)
Requisitos previos
- JDK 17 o superior
- Maven 3.6+ (o usar el wrapper incluido:
./mvnw / mvnw.cmd)
- MySQL 8 en ejecución, con permisos para crear/usar una base de datos
- Navegador moderno (para el frontend estático)
Configuración inicial
-
Crea en MySQL la base de datos (el nombre debe coincidir con la URL JDBC):
CREATE DATABASE IF NOT EXISTS clientes_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
Edita api_productos/src/main/resources/application.properties y ajusta usuario, contraseña y, si aplica, host/puerto de MySQL:
spring.datasource.url=jdbc:mysql://localhost:3306/clientes_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=TU_USUARIO
spring.datasource.password=TU_CONTRASEÑA
No subas credenciales reales al repositorio. Usa valores locales o variables de entorno según tu flujo de trabajo.
Pasos para el backend
Desde la raíz del repositorio:
cd api_productos
Compilar y ejecutar (con Maven instalado):
mvn clean install
mvn spring-boot:run
O con el wrapper en Windows:
cd api_productos
mvnw.cmd clean install
mvnw.cmd spring-boot:run
En Linux/macOS:
cd api_productos
./mvnw clean install
./mvnw spring-boot:run
La API queda disponible por defecto en http://localhost:8080.
Documentación Swagger (según application.properties): http://localhost:8080/swagger-ui.html
Pasos para el frontend
El frontend es estático; no requiere npm install. Debes servir los archivos por HTTP (no solo abrir index.html como file://, para evitar problemas de CORS/origen con algunos navegadores).
Opción recomendada con Python 3:
cd api_clientes_frontend
python -m http.server 5500
Abre en el navegador: http://localhost:5500
Si la API no está en localhost:8080, edita la constante API_URL en api_clientes_frontend/js/main.js.
Clonar el repositorio (referencia)
git clone https://github.com/saoricoder/gestion-clientes.git
cd gestion-clientes
📁 Estructura del repositorio
gestion-clientes/ # carpeta al clonar (= slug del repo)
├── api_productos/ # Backend Spring Boot (Maven)
│ └── src/main/java/... # Controladores, servicios, modelo, repositorio
├── api_clientes_frontend/ # Frontend estático
│ ├── index.html
│ ├── css/style.css
│ └── js/main.js
└── README.md
📄 Licencia
Este proyecto se distribuye bajo la licencia MIT. Consulta el archivo LICENSE en la raíz del repositorio (si aún no existe, puedes añadir uno estándar desde choosealicense.com).
👤 Autor / contacto