Sistema de gestión de tienda con arquitectura cliente-servidor. Servidor REST desarrollado en Spring Boot y cliente Java de consola.
Versión: 1.0.0
Autor: Luis
Tecnologías: Java 17, Spring Boot 3.3.2, MySQL 8.0, Maven
- Descripción
- Tecnologías
- Estructura del Proyecto
- Requisitos Previos
- Instalación y Configuración
- Uso
- API REST
- Tests
- Documentación
Sistema completo de gestión de tienda que implementa una arquitectura cliente-servidor:
- Servidor: API REST que gestiona categorías y productos, con persistencia en MySQL
- Cliente: Aplicación de consola con menús interactivos para realizar operaciones CRUD
- Base de Datos: MySQL con dos tablas relacionadas (categorías y productos)
- CRUD completo de categorías y productos
- Documentación interactiva con Swagger/OpenAPI
- Tests unitarios e integración con JUnit 5
- Persistencia con JPA/Hibernate
- Pool de conexiones con HikariCP
- Documentación Javadoc generada
- Cliente HTTP nativo de Java
- Spring Boot 3.3.2
- Spring Data JPA
- MySQL Connector 8.0.33
- Hibernate 6.5.2
- Swagger/OpenAPI 2.6.0
- JUnit 5
- Maven
- Java SE 17
- Gson 2.10.1
- HttpURLConnection (cliente HTTP nativo)
- Maven
- MySQL 8.0
Projecto_ClienteServidor/
│
├── servidor/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/luistienda/
│ │ │ │ ├── ServerApplication.java
│ │ │ │ ├── controller/
│ │ │ │ │ ├── CategoriaController.java
│ │ │ │ │ └── ProductoController.java
│ │ │ │ ├── service/
│ │ │ │ │ ├── CategoriaService.java
│ │ │ │ │ └── ProductoService.java
│ │ │ │ ├── repository/
│ │ │ │ │ ├── CategoriaRepository.java
│ │ │ │ │ └── ProductoRepository.java
│ │ │ │ └── model/
│ │ │ │ ├── Categoria.java
│ │ │ │ └── Producto.java
│ │ │ └── resources/
│ │ │ └── application.properties
│ │ └── test/
│ └── pom.xml
│
├── cliente/
│ ├── src/
│ │ ├── main/
│ │ │ └── java/com/luistienda/
│ │ │ ├── ClienteApp.java
│ │ │ ├── api/
│ │ │ │ └── ApiClient.java
│ │ │ └── model/
│ │ │ ├── Categoria.java
│ │ │ └── Producto.java
│ │ └── test/
│ └── pom.xml
│
├── README.md
└── .gitignore
- JDK 17 o superior
- MySQL 8.0 o superior
- Maven 3.6 o superior
- Git
Verificar instalación:
java -version
mvn -version
mysql --versiongit clone https://github.com/Luiscerve/Projecto_ClienteServidor.git
cd Projecto_ClienteServidorCrear la base de datos en MySQL:
mysql -u root -pCREATE DATABASE tienda_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EXIT;Editar servidor/src/main/resources/application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/tienda_db
spring.datasource.username=root
spring.datasource.password=tu_contraseñaServidor:
cd servidor
mvn clean packageCliente:
cd ../cliente
mvn clean packagecd servidor
java -jar target/servidor-tienda-1.0.0.jarEl servidor iniciará en el puerto 12345:
- API REST: http://localhost:12345/api
- Swagger UI: http://localhost:12345/swagger-ui.html
En otra terminal:
cd cliente
java -jar target/cliente-tienda-1.0.0.jarEl cliente mostrará un menú interactivo para gestionar categorías y productos.
Para probar la aplicación:
USE tienda_db;
INSERT INTO categorias (nombre, descripcion) VALUES
('Electrónica', 'Dispositivos electrónicos y accesorios'),
('Ropa', 'Prendas de vestir'),
('Alimentación', 'Productos alimenticios');
INSERT INTO productos (nombre, precio, stock, categoria_id) VALUES
('Ordenador Portátil', 899.99, 15, 1),
('Smartphone Samsung', 549.00, 30, 1),
('Camiseta Básica', 19.99, 100, 2),
('Arroz Integral', 2.50, 200, 3);Categorías:
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /api/categorias |
Obtener todas las categorías |
| GET | /api/categorias/{id} |
Obtener categoría por ID |
| POST | /api/categorias |
Crear nueva categoría |
| PUT | /api/categorias/{id} |
Actualizar categoría |
| DELETE | /api/categorias/{id} |
Eliminar categoría |
Productos:
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /api/productos |
Obtener todos los productos |
| GET | /api/productos/{id} |
Obtener producto por ID |
| GET | /api/productos/categoria/{id} |
Obtener productos de una categoría |
| POST | /api/productos |
Crear nuevo producto |
| PUT | /api/productos/{id} |
Actualizar producto |
| DELETE | /api/productos/{id} |
Eliminar producto |
curl -X POST http://localhost:12345/api/categorias \
-H "Content-Type: application/json" \
-d '{"nombre":"Deportes","descripcion":"Artículos deportivos"}'Swagger UI: http://localhost:12345/swagger-ui.html
cd servidor
mvn testTests incluidos:
- CRUD de categorías
- CRUD de productos
- Filtrado de productos por categoría
- Validaciones de datos
- Manejo de errores
cd cliente
mvn testLos tests generan informes en los directorios target/surefire-reports/.
Generar Javadoc del Servidor:
cd servidor
mvn javadoc:javadocVer en: servidor/target/site/apidocs/index.html
Generar Javadoc del Cliente:
cd cliente
mvn javadoc:javadocVer en: cliente/target/javadoc/index.html
Consulta el archivo MEMORIA_PROYECTO.pdf para documentación técnica completa incluyendo:
- Arquitectura del sistema
- Diagramas de estructura
- Explicación detallada de componentes
- Guía de despliegue
- Capturas de pantalla del funcionamiento
Autor: Luis
Proyecto: Sistema Cliente-Servidor de Gestión de Tienda
Año: 2026