{"id":31999618,"url":"https://github.com/joanjo17/tienda_api","last_synced_at":"2026-05-04T11:33:03.615Z","repository":{"id":315338735,"uuid":"1050067711","full_name":"Joanjo17/tienda_api","owner":"Joanjo17","description":"Api Rest para gestionar la compra y venta de productos. ","archived":false,"fork":false,"pushed_at":"2025-09-18T01:54:43.000Z","size":45,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-18T03:41:29.492Z","etag":null,"topics":["api-rest","dto-pattern","java","softdelete","spring","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Joanjo17.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-03T22:45:03.000Z","updated_at":"2025-09-18T02:05:50.000Z","dependencies_parsed_at":"2025-09-18T03:41:32.503Z","dependency_job_id":"ff2e1520-1224-4445-9e27-aa7335099486","html_url":"https://github.com/Joanjo17/tienda_api","commit_stats":null,"previous_names":["joanjo17/tienda_api"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Joanjo17/tienda_api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joanjo17%2Ftienda_api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joanjo17%2Ftienda_api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joanjo17%2Ftienda_api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joanjo17%2Ftienda_api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Joanjo17","download_url":"https://codeload.github.com/Joanjo17/tienda_api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joanjo17%2Ftienda_api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279085465,"owners_count":26100017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-15T02:00:07.814Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","dto-pattern","java","softdelete","spring","spring-boot"],"created_at":"2025-10-15T14:33:02.599Z","updated_at":"2025-10-15T14:33:03.687Z","avatar_url":"https://github.com/Joanjo17.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📚 API de Tienda\n\n## 📌 Resumen del Proyecto\n\n**TiendaAPI** es una API REST construida con **Spring Boot 3.5.5** y **Java 21**, diseñada para gestionar las operaciones básicas de una tienda: clientes, productos y ventas. La aplicación se conecta a una base de datos MySQL, permitiendo realizar operaciones **CRUD** (Crear, Leer, Actualizar, Borrar) y otras consultas especializadas.\n\n---\n\n## 🛠️ Tecnologías y Dependencias\n\nEste proyecto utiliza las siguientes tecnologías y librerías:\n\n* **Spring Boot 3.5.5**: Framework principal para el desarrollo de la API.\n* **Java 21**: Versión del lenguaje de programación.\n* **Spring Data JPA**: Para la persistencia de datos y la interacción con la base de datos.\n* **Spring Validation**: Para la validación de los datos en las peticiones (`DTOs`).\n* **MySQL Connector/J**: Driver para la conexión con la base de datos MySQL.\n* **Lombok**: Para reducir el código repetitivo (`getters`, `setters`, `constructors`).\n* **Springdoc OpenAPI UI**: Para generar documentación de la API de forma automática.\n* **Maven**: Herramienta de gestión y construcción del proyecto.\n\n---\n\n## ⚙️ Prerrequisitos y Configuración\n\nAntes de ejecutar el proyecto, asegúrate de tener instalados los siguientes componentes:\n\n* **Java 21** o superior.\n* **Maven 3.x**.\n* **MySQL Server** o acceso a una instancia de MySQL.\n\n### Configuración de la base de datos\n\n1.  Crea una base de datos en tu servidor MySQL.\n2.  Copia y pega el siguiente contenido en el archivo `src/main/resources/application.properties` y reemplaza los valores de `DB_URL`, `DB_USERNAME` y `DB_PASSWORD` con los tuyos.\n\n    ```properties\n    spring.application.name=TiendaAPI\n\n    spring.jpa.hibernate.ddl-auto=update\n\n    spring.datasource.url=${DB_URL}\n    spring.datasource.username=${DB_USERNAME}\n    spring.datasource.password=${DB_PASSWORD}\n\n    spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect\n\n    server.port=8080\n    ```\n\n\u003e ⚠️ **Nota:** El valor `spring.jpa.hibernate.ddl-auto=update` configurará Hibernate para que cree y actualice automáticamente las tablas en la base de datos basándose en tus clases `Entity`.\n\n---\n\n## 🚀 Cómo Iniciar la API\n\nPuedes ejecutar la aplicación de dos maneras:\n\n1.  **Desde la línea de comandos con Maven:**\n    ```bash\n    mvn spring-boot:run\n    ```\n\n2.  **Generando un archivo JAR ejecutable:**\n    ```bash\n    # Empaqueta la aplicación en un archivo .jar\n    mvn clean package\n\n    # Ejecuta el archivo .jar\n    java -jar target/TiendaAPI-0.0.1-SNAPSHOT.jar\n    ```\n\nLa API se iniciará en `http://localhost:8080`.\n\n---\n\n## 🗺️ Endpoints de la API\n\nLa API está organizada en tres secciones principales: `clientes`, `productos` y `ventas`. A continuación se detallan los endpoints disponibles.\n\n### 👥 Clientes\n\n| Método | Endpoint | Descripción |\n| :--- | :--- | :--- |\n| `POST` | `/clientes` | Crea un nuevo cliente. |\n| `GET` | `/clientes` | Obtiene una lista de todos los clientes activos. |\n| `GET` | `/clientes/all` | Obtiene una lista con todos los clientes, activos o inactivos, de la base de datos. |\n| `GET` | `/clientes/{id_cliente}` | Obtiene un cliente por su ID. |\n| `PUT` | `/clientes/{id_cliente}` | Edita la información de un cliente. |\n| `DELETE` | `/clientes/{id_cliente}` | \"Elimina\" (cancela) un cliente por su ID. |\n\n### 📦 Productos\n\n| Método | Endpoint | Descripción |\n| :--- | :--- | :--- |\n| `POST` | `/productos` | Crea un nuevo producto. |\n| `GET` | `/productos` | Obtiene una lista de productos activos. |\n| `GET` | `/productos/all` | Obtiene una lista con todos los productos, tanto activos como inactivos, de la base de datos. |\n| `GET` | `/productos/{codigo_producto}` | Obtiene un producto por su código. |\n| `GET` | `/productos/falta_stock` | Obtiene los productos con stock bajo (stock \u003c 5). |\n| `PUT` | `/productos/{codigo_producto}` | Edita la información de un producto. |\n| `DELETE` | `/productos/{codigo_producto}` | \"Elimina\" (cancela) un producto por su código. |\n\n### 🛒 Ventas\n\n| Método | Endpoint | Descripción |\n| :--- | :--- | :--- |\n| `POST` | `/ventas` | Crea una nueva venta. |\n| `GET` | `/ventas` | Lista todas las ventas. Se puede filtrar por `estado` (`COMPLETADA` o `CANCELADA`). |\n| `GET` | `/ventas/{codigo_venta}` | Obtiene una venta por su código. |\n| `DELETE` | `/ventas/{codigo_venta}` | \"Elimina\" (cancela) una venta. |\n| `GET` | `/ventas/{codigo_venta}/productos` | Obtiene los productos de una venta específica. |\n| `GET` | `/ventas/diario/{fecha_venta}` | Obtiene el total de ventas y la cantidad de ventas para un día específico (formato `YYYY-MM-DD`). |\n| `GET` | `/ventas/mayor_venta` | Obtiene los detalles de la venta con el monto total más alto. |\n\n---\n\n## 📄 Documentación y Colección de Postman\n\n### Documentación de la API (Swagger UI)\n\nUna vez que la aplicación esté en ejecución, puedes acceder a la documentación interactiva de la API en la siguiente URL:\n\n[http://localhost:8080/swagger-ui.html](http://localhost:8080/swagger-ui.html)\n\n### 🚀 Colección de Postman\n\nPuedes importar todos los endpoints de la API a Postman para realizar pruebas de manera sencilla.\n\nDescarga la colección en formato JSON desde este enlace:\n[Colección de Postman](https://github.com/Joanjo17/tienda_api/blob/main/TiendaAPI.postman_collection.json)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoanjo17%2Ftienda_api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoanjo17%2Ftienda_api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoanjo17%2Ftienda_api/lists"}