{"id":22093102,"url":"https://github.com/samuelmsilva2v/java-backend-challenge-jr","last_synced_at":"2026-04-20T13:37:44.785Z","repository":{"id":263191135,"uuid":"889626021","full_name":"samuelmsilva2v/java-backend-challenge-jr","owner":"samuelmsilva2v","description":"API RESTful desenvolvida em Java com Spring Boot para gerenciamento de produtos ","archived":false,"fork":false,"pushed_at":"2024-11-19T03:04:56.000Z","size":33,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-29T07:14:29.445Z","etag":null,"topics":["java","jpa","spring","tdd"],"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/samuelmsilva2v.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}},"created_at":"2024-11-16T20:00:40.000Z","updated_at":"2024-12-18T17:44:12.000Z","dependencies_parsed_at":"2024-11-16T21:25:49.633Z","dependency_job_id":"5760ab51-c883-4bfe-b207-f1fae6eebc42","html_url":"https://github.com/samuelmsilva2v/java-backend-challenge-jr","commit_stats":null,"previous_names":["samuelmsilva2v/java-backend-challenge-jr"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samuelmsilva2v%2Fjava-backend-challenge-jr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samuelmsilva2v%2Fjava-backend-challenge-jr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samuelmsilva2v%2Fjava-backend-challenge-jr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samuelmsilva2v%2Fjava-backend-challenge-jr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samuelmsilva2v","download_url":"https://codeload.github.com/samuelmsilva2v/java-backend-challenge-jr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245188618,"owners_count":20574810,"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":["java","jpa","spring","tdd"],"created_at":"2024-12-01T03:12:34.755Z","updated_at":"2025-10-10T14:40:05.439Z","avatar_url":"https://github.com/samuelmsilva2v.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Backend Challenge Jr. - Produtos\nEste projeto é uma API RESTful desenvolvida em Java com Spring Boot, criada como parte de um desafio técnico para a posição de Desenvolvedor Backend Júnior.\n\u003cbr\u003e \u003cbr\u003e\nO desafio consiste em criar uma API RESTFul para gerenciamento de produtos.\nOs produtos devem ter os atributos ID, Nome, Tipo e Preço Unitário. Os possíveis tipos poderão ser \"Material\" ou \"Serviço\".\n\u003cbr\u003e\nA API deve ser capaz de executar as seguintes operações:\n- Consulta por ID\n- Consulta de todos os produtos\n- Inserção\n- Alteração\n- Deleção\n- Dashboard\n  - Trazer a quantidade e o preço unitário médio segregado por Tipo\n\n### Tecnologias Utilizadas\n- Java 21\n- Spring Boot\n- Spring Data JPA\n- PostgreSQL\n- Lombok\n- ModelMapper\n- MockMvc\n- Java Faker (para geração de dados fictícios em testes)\n- JUnit\n\n## Endpoints\n\n### 1. Gerenciamento de produtos\n| Método | Endpoint             | Descrição                   |\n|--------|-----------------------|-----------------------------|\n| POST   | `/api/produtos`      | Inserir um novo produto      |\n| GET    | `/api/produtos`      | Consultar todas os produtos   |\n| GET    | `/api/produtos/{id}` | Consultar um produto através da ID  |\n| PUT    | `/api/produtos/{id}` | Alterar um produto     |\n| DELETE | `/api/produtos/{id}` | Excluir um produto      |\n\n```json\n{\n  \"nome\": \"string\",\n  \"tipo\": \"MATERIAL\",\n  \"precoUnitario\": 0.01\n}\n```\n\n### 2. Dashboard\n| Método | Endpoint             | Descrição                   |\n|--------|-----------------------|-----------------------------|\n| GET   | `/api/produtos/dashboard`      | Exibir quantidade e preço médio por tipo      |\n```json\n[\n  {\n    \"tipo\": \"MATERIAL\",\n    \"quantidade\": 0,\n    \"precoMedio\": 0.01\n  },\n  {\n    \"tipo\": \"SERVICO\",\n    \"quantidade\": 0,\n    \"precoMedio\": 0.01\n  }\n]\n```\n\n## Testes\n#### Executando os testes\n```bash\nmvn test\n```\n\n## Configuração e Execução\n\n#### Requisitos\n- Java 21 ou superior\n- Spring Boot 3.3.5\n- Maven 3.8+\n- PostgreSQL 16\n\n### Configuração do banco de dados:\n\n#### Dados iniciais:\n\n```sql\nINSERT INTO tb_produto (id, nome, tipo, preco_unitario) VALUES\n('0f54ce17-6de1-4289-8f3e-50a7cc497fa5', 'Cadeira de Escritório', 'MATERIAL', 200.00),\n('9cc852d5-cb73-46d6-8751-0950bf902cd1', 'Mesa de Reunião', 'MATERIAL', 350.00),\n('0d3d7c4a-b716-4c84-937a-c2f3797d4456', 'Reparo de Impressora', 'SERVICO', 150.00),\n('c52b46cd-8295-47c8-8698-7cae9a12ef7e', 'Limpeza de Equipamentos', 'SERVICO', 80.00),\n('52e5eb24-e5cb-4338-9624-09b114df347e', 'Manutenção de Computador', 'SERVICO', 250.00),\n('5e297bd7-c9b8-498f-9a34-3145ec6637c1', 'Armário de Aço', 'MATERIAL', 450.00);\n```\n\n### 1.Clone o repositório:\n\n```bash\nhttps://github.com/samuelmsilva2v/java-backend-challenge-jr.git\ncd java-backend-challenge-jr\n```\n\n### 2. Atualize o arquivo `application.properties` com as credenciais do seu banco de dados PostgreSQL:\n\n```bash\nspring.datasource.url=jdbc:postgresql://localhost:5432/bd_produtos\nspring.datasource.driver-class-name=org.postgresql.Driver\nspring.datasource.username=seu_usuario\nspring.datasource.password=sua_senha\n```\n\n### 3. Instale as dependências:\n\n```bash\nmvn clean install\n```\n\n### 4. Execute o projeto:\n```bash\nmvn spring-boot:run\n```\n\n### 5. Acesse a aplicação:\n  - Documentação da API: http://localhost:8080/swagger-ui/index.html\n\n## Estrutura do projeto\n```plaintext\nsrc/\n├── main/\n│   ├── java/com/example/demo/\n│   │   ├── config/                                  # Classes de configuração\n│   │   ├── controller/                              # Controladores REST\n│   │   ├── dto/                                     # DTOs para entrada/saída de dados\n│   │   ├── entities/                                # Entidades JPA\n│   │   ├── enums/                                   # Enumerações (ex.: TipoProduto)\n│   │   ├── exceptions/                              # Exceções customizadas\n│   │   ├── handlers/                                # Tratamento global de exceções\n│   │   ├── repository/                              # Repositórios (Spring Data JPA)\n│   │   ├── services/                                # Camada de serviços\n│   │   │   ├── impl/                                # Classe de implementação dos métodos\n│   │   │   ├── interfaces/                          # Interface de serviços\n│   │   ├── JavaBackendChallengeJrApplication.java   # Classe principal\n│   └── resources/\n│       ├── application.properties                       # Configurações do Spring Boot\n├── test/\n│   └── java/com/example/demo/                           # Testes unitários e de integração\n│   │   ├── JavaBackendChallengeJrApplicationTests.java  # Classe de testes\n```\n\n## Autor\n- Samuel Maciel da Silva\n  - [LinkedIn](https://www.linkedin.com/in/samuelmsilva2v/)\n  - [E-mail](mailto:samuelmsilva@outlook.com.br)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuelmsilva2v%2Fjava-backend-challenge-jr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamuelmsilva2v%2Fjava-backend-challenge-jr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuelmsilva2v%2Fjava-backend-challenge-jr/lists"}