{"id":19865524,"url":"https://github.com/angel-raa/crud-spring-boot-postgresql","last_synced_at":"2025-09-18T17:31:11.377Z","repository":{"id":187796644,"uuid":"677588657","full_name":"Angel-Raa/CRUD-spring-boot-postgresql","owner":"Angel-Raa","description":"CRUD con Spring Boot 3 y postgresql","archived":false,"fork":false,"pushed_at":"2023-09-08T14:19:45.000Z","size":118,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-12T15:28:10.750Z","etag":null,"topics":["crud-api","docker","java","jdk17","spring-boot","spring-security"],"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/Angel-Raa.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}},"created_at":"2023-08-12T01:40:09.000Z","updated_at":"2024-10-31T01:52:07.000Z","dependencies_parsed_at":"2023-09-06T06:15:12.928Z","dependency_job_id":null,"html_url":"https://github.com/Angel-Raa/CRUD-spring-boot-postgresql","commit_stats":null,"previous_names":["angel-raa/crud-basico","angel-raa/crud-spring-boot-postgresql"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Angel-Raa%2FCRUD-spring-boot-postgresql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Angel-Raa%2FCRUD-spring-boot-postgresql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Angel-Raa%2FCRUD-spring-boot-postgresql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Angel-Raa%2FCRUD-spring-boot-postgresql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Angel-Raa","download_url":"https://codeload.github.com/Angel-Raa/CRUD-spring-boot-postgresql/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233502561,"owners_count":18685959,"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","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":["crud-api","docker","java","jdk17","spring-boot","spring-security"],"created_at":"2024-11-12T15:23:03.588Z","updated_at":"2025-09-18T17:31:06.065Z","avatar_url":"https://github.com/Angel-Raa.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CRUD Básico con Spring Boot y PostgreSQL\n\nEste proyecto es un ejemplo de una aplicación CRUD (Crear, Leer, Actualizar y Eliminar) básica desarrollada utilizando Java 17, Spring Boot 3 y PostgreSQL. La aplicación se encuentra en un entorno de contenedorizado utilizando Docker Compose.\n\n## Tecnologías Utilizadas\n\n- JDK 17\n- Spring Boot 3\n- Spring security 6\n- PostgreSQL 15\n- Java JWT\n- Docker \n\n## Configuración del Entorno\n\nAsegúrate de tener instalados los siguientes componentes en tu entorno de desarrollo antes de comenzar:\n\n1. [Docker](https://docs.docker.com/compose/install/)\n\n## Instrucciones de Uso\n\nSigue estos pasos para ejecutar la aplicación en tu entorno local:\n\n\n#### Clonar el repositorio en tu máquina local\n```\ngit clone https://github.com/Angel-Raa/CRUD-spring-boot-postgresql.git\n```\n#### Navegar al directorio del proyecto\n```\ncd CRUD-spring-boot-postgresql\n```\n\n#### Construir y ejecutar los contenedores de Docker Compose\n```\ndocker compose up -d\n```\n\n## Base URL\n\n- [http://localhost:9000](http://localhost:9000)\n\nSe requiere autenticación para acceder a los endpoints de esta API. Puedes obtener un token JWT mediante los siguientes endpoints:\n\n| Método   | Endpoint                               | Descripción                                |\n|----------|----------------------------------------|--------------------------------------------|\n| POST     | `/authentication/login`                | Iniciar sesión de usuario                  |\n| POST     | `/authentication/sign`                 | Registro de usuario                        |\n\n## Autenticación\n- **Iniciar sesión de usuario:** `POST /authentication/login`\n    - Cuerpo de la solicitud:\n        ```json\n        {\n            \"username\": \"angel\",\n            \"password\": \"admin\"\n        }\n        ```\n    - Respuesta exitosa:\n        ```json\n        {\n            \"jwt\": \"TOKEN_JWT\"\n        }\n        ```\n\n- **Registro de usuario:** `POST /authentication/sign`\n    - Cuerpo de la solicitud:\n        ```json\n        {\n            \"username\": \"angel\",\n            \"password\": \"admin\"\n        }\n        ```\n    - Respuesta exitosa:\n        ```json\n        {\n            \"jwt\": \"TOKEN_JWT\"\n        }\n        ```\n\n## Endpoints de Productos\n\n| Método   | Endpoint                               | Descripción                                |\n|----------|----------------------------------------|--------------------------------------------|\n| GET      | `/product/list`                        | Obtener todos los productos                |\n| GET      | `/product/{id}`                        | Obtener un solo producto                   |\n| POST     | `/product/add`                         | Guardar un nuevo producto                  |\n| PUT      | `/product/update/{id}`                 | Actualizar un producto existente           |\n| DELETE   | `/product/{id}`                        | Eliminar un producto                       |\n\n- **Obtener todos los productos:** `GET /product/list`\n    - Respuesta exitosa:\n        ```json\n        [\n            {\n                \"id\": 1,\n                \"name\": \"Papa gris\",\n                \"description\": \"papa gris\",\n                \"createAt\": \"2023-08-29T19:59:53.943202\",\n                \"amount\": 1000,\n                \"price\": 25\n            },\n            {\n                \"id\": 2,\n                \"name\": \"Arroz\",\n                \"description\": \"arroz blanco desde campo Rd\",\n                \"createAt\": \"2023-08-29T20:07:41.479372\",\n                \"amount\": 1000,\n                \"price\": 25\n            }\n            // ...otros productos\n        ]\n        ```\n\n- **Obtener un solo producto:** `GET /product/{id}`\n    - Parámetros:\n        - `{id}`: ID del producto a consultar\n    - Respuesta exitosa:\n        ```json\n        {\n            \"id\": 1,\n            \"name\": \"Papa gris\",\n            \"description\": \"papa gris\",\n            \"createAt\": \"2023-08-29T19:59:53.943202\",\n            \"amount\": 1000,\n            \"price\": 25\n        }\n        ```\n\n- **Guardar un nuevo producto:** `POST /product/add`\n    - Cuerpo de la solicitud:\n        ```json\n        {\n            \"name\": \"Huevo gris\",\n            \"description\": \"Huevo de gallina gringa\",\n            \"amount\": 1000,\n            \"price\": 10\n        }\n        ```\n    - Respuesta exitosa:\n        ```json\n        {\n            \"id\": 7,\n            \"name\": \"Huevo gris\",\n            \"description\": \"Huevo de gallina gringa\",\n            \"createAt\": \"2023-08-30T00:56:09.430315\",\n            \"amount\": 1000,\n            \"price\": 10\n        }\n        ```\n\n- **Actualizar un producto existente:** `PUT /product/update/{id}`\n    - Parámetros:\n        - `{id}`: ID del producto a actualizar\n    - Cuerpo de la solicitud:\n        ```json\n        {\n            \"name\": \"Huevo gris\",\n            \"description\": \"Huevo de gallina gringa\",\n            \"amount\": 1000,\n            \"price\": 10\n        }\n        ```\n    - Respuesta exitosa:\n        ```json\n        {\n            \"message\": \"Producto actualizado exitosamente.\"\n        }\n        ```\n\n- **Eliminar un producto:** `DELETE /product/{id}`\n    - Parámetros:\n        - `{id}`: ID del producto a eliminar\n    - Respuesta exitosa:\n        ```json\n        {\n            \"message\": \"Producto eliminado exitosamente.\",\n            \"code\": 204,\n            \"http\": \"NO_CONTENT\"\n        }\n        ```\nRecuerda que debes incluir el token JWT en el encabezado de Autorización de cada solicitud a los endpoints protegidos.\n\n\n## Recursos Adicionales\n\nAquí hay algunos recursos adicionales que podrían ser útiles:\n\n- [Documentación de Java JWT](https://github.com/jwtk/jjwt)\n- [Documentacion de open jdk 17](https://docs.oracle.com/en/java/javase/17/docs/api/)\n- [Documentacion de Spring boot](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/)\n- [Documentacion de Maven](https://maven.apache.org/guides/getting-started/)\n- [Documentacion de Docker](https://docs.docker.com/)\n- [Documentacion de Spring Security](https://docs.spring.io/spring-security/reference/index.html)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangel-raa%2Fcrud-spring-boot-postgresql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fangel-raa%2Fcrud-spring-boot-postgresql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangel-raa%2Fcrud-spring-boot-postgresql/lists"}