{"id":24992143,"url":"https://github.com/guilchaves/spring-professional-dscommerce","last_synced_at":"2026-04-11T01:47:13.635Z","repository":{"id":212521590,"uuid":"731687005","full_name":"guilchaves/spring-professional-dscommerce","owner":"guilchaves","description":"Projeto final da trilha Java Spring Professional da plataforma Dev Superior com instrutor Nelio Alves. ","archived":false,"fork":false,"pushed_at":"2024-01-30T22:05:30.000Z","size":183,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-04T13:53:57.213Z","etag":null,"topics":["apache-tomcat","bean-validation","docker","h2-database","java-17","jwt","maven","oauth2","postgresql","spring","spring-boot","spring-data-jpa","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guilchaves.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2023-12-14T16:31:49.000Z","updated_at":"2024-06-13T01:22:38.000Z","dependencies_parsed_at":"2024-01-30T13:29:24.537Z","dependency_job_id":"7af4c37e-88cf-4cc6-8842-c2bdd32d0189","html_url":"https://github.com/guilchaves/spring-professional-dscommerce","commit_stats":null,"previous_names":["guilchaves/spring-professional-dscommerce"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guilchaves%2Fspring-professional-dscommerce","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guilchaves%2Fspring-professional-dscommerce/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guilchaves%2Fspring-professional-dscommerce/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guilchaves%2Fspring-professional-dscommerce/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guilchaves","download_url":"https://codeload.github.com/guilchaves/spring-professional-dscommerce/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246187233,"owners_count":20737463,"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":["apache-tomcat","bean-validation","docker","h2-database","java-17","jwt","maven","oauth2","postgresql","spring","spring-boot","spring-data-jpa","spring-security"],"created_at":"2025-02-04T13:54:03.061Z","updated_at":"2026-04-11T01:47:13.603Z","avatar_url":"https://github.com/guilchaves.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"#   Projeto Final - Sistema de Comércio Eletrônico\n\n![Java](https://img.shields.io/badge/java-%23ED8B00.svg?style=for-the-badge\u0026logo=openjdk\u0026logoColor=white)\n![Spring](https://img.shields.io/badge/spring-%236DB33F.svg?style=for-the-badge\u0026logo=spring\u0026logoColor=white)\n![Postgres](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)\n![JWT](https://img.shields.io/badge/JWT-black?style=for-the-badge\u0026logo=JSON%20web%20tokens)\n\n\nEste repositório contém o projeto final para conclusão do treinamento **Java Spring Professional** ministrado pelo\nprofessor [Nelio Alves](https://www.udemy.com/user/nelio-alves/), oferecido pela plataforma [DevSuperior](https://devsuperior.com.br/).\u003c/br\u003e\u003c/br\u003e\nEste projeto visa criar uma API RESTful de comércio\neletrônico usando tecnologias **Java, Spring Boot, Spring Data JPA, Bean Validation, PostgresSQL como banco de dados, Spring Security e JWT para controle de autenticação**.\u003c/br\u003e\n\n###### Testes realizados com JUnit, Mockito, REST Assured. JaCoCo utilizado para cobertura de testes.\n\n**Sistema em prod: [DSCommerce](https://dscommerce.onrender.com/products)**\n\n## Visão Geral do Sistema\nO sistema desenvolvido neste projeto é uma aplicação completa de comércio eletrônico,\nabrangendo cadastros de usuários, produtos e categorias. Cada usuário, seja cliente ou administrador,\ntem sua própria área de interação com o sistema. Os administradores têm acesso à área administrativa para gerenciar\nusuários, produtos e categorias.\n\n\n## Funcionalidades Principais\n\n- Cadastro e autenticação de usuários com diferentes papéis (cliente, administrador).\n- Catálogo de produtos com capacidade de filtragem por nome.\n- Adição, remoção e alteração de itens no carrinho de compras.\n- Registro de pedidos com status dinâmicos (aguardando pagamento, pago, enviado, entregue, cancelado).\n- Área administrativa para gerenciamento de usuários, produtos e categorias.\n\n## Como executar este projeto\n##### Pré-requisitos:\n- **Java 17**: [JDK 17](https://www.oracle.com/java/technologies/downloads/) ou superior.\n- **IDEs**: [IntelliJ IDEA](https://www.jetbrains.com/idea/download/) ou [Spring Tools](https://spring.io/tools).\n\n##### Passos:\n\n1. **Clone o repositório**\u003c/br\u003e\nAbra o terminal e navegue até o diretório onde deseja armazenar o projeto. Execute o seguinte comando para clonar o repositório:\n\n```bash\ngit clone https://github.com/guilchaves/spring-professional-dscommerce.git\n```\n2. **Abra o projeto no IntelliJ IDEA ou STS:**\u003c/br\u003e\n- _IntelliJ IDEA_: Abra o IntelliJ IDEA e selecione \"Open\" no menu principal. Navegue até o diretório do projeto e selecione o arquivo pom.xml.\n- _Spring Tools Suite_: Abra o STS e selecione \"Import...​\" \u003e \"Existing Maven Projects\". Navegue até o diretório do projeto e selecione o arquivo pom.xml.\n\n3. **Baixe as dependências do Maven:**\u003c/br\u003e\nAguarde até que o IntelliJ ou STS baixe automaticamente as dependências do Maven. Isso pode levar algum tempo, dependendo da conexão com a internet.\u003c/br\u003e\u003c/br\u003e\n4. **Execute o projeto:**\u003c/br\u003e\nNo projeto, navegue até o arquivo `src/main/java/br/com/guilchaves/dscommerce/DscommerceApplication.java`. Este arquivo contém \na classe principal da aplicação Spring Boot.\u003c/br\u003e\n- _IntelliJ IDEA_: Clique com o botão direito do mouse no arquivo DscommerceApplication.java e escolha \"Run DscommerceApplication\".\n- _Spring Tools Suite_: Clique com o botão direito do mouse no projeto no navegador de projetos e escolha \"Run As\" \u003e \"Spring Boot App\".\n\n5. **Verifique a Execução:**\u003c/br\u003e\nApós a execução bem-sucedida, abra um navegador da web e acesse `http://localhost:8080` (ou a porta configurada, se diferente) para verificar se a aplicação está em execução.\u003c/br\u003e\nAcesse `http://localhost:8080/h2-console` para utilizar o console do H2 database.\u003c/br\u003e\n\n\n## Para testar a API no postman:\nPara importar e exportar dados no postman, consulte a documentação oficial [aqui](https://learning.postman.com/docs/getting-started/importing-and-exporting/importing-data/).\n\u003c/br\u003e\nDownload da coleção e variáveis de ambiente:\n- [Collection](https://drive.google.com/file/d/1TjBh5Nu5znqEB-umnf304MMHe8USVLdj/view?usp=sharing)\n- [Environment](https://drive.google.com/file/d/1_L1r4OSXcIJVxGzq-vGHYYP8CpoD5fhD/view?usp=sharing)\n \n## Endpoints da API:\n\n```\nPOST /login - Autenticação na API.\n\nGET /categories - Retorna lista de categorias dos produtos.\n\nGET /orders/{id} - Retorna pedido do usuário por id - clientes não podem acessar pedidos de outros clientes (requer privilégio ADMIN ou OPERATOR).\n\nPOST /orders - Adiciona novo pedido para cliente logado.\n\nGET /products - Retorna lista de produtos.\n\nGET /products/{id} - Retorna produto por id.\n\nPOST /products - Adiciona novo produto (requer privilégio ADMIN).\n\nPUT /products/{id} - Atualiza dados de produto já existente (requer privilégio ADMIN).\n\nDELETE /products/{id} - Remove produto da base de dados (requer privilégio ADMIN).\n\nGET /users/me - Retorna dados do usuário logado (requer privilégio ADMIN ou OPERATOR).\n```\n\n## Autenticação\nA API utiliza o Spring Security para controle de autenticação. Os seguintes papéis estão disponíveis:\n```\nOPERATOR -\u003e Papel padrão para usuários autenticados.\nADMIN -\u003e Papel de administrador para gerenciar produtos (adicionar, atualiza, remove produtos). \n```\nPara acessar os endpoints protegidos como um usuário ADMIN, forneça as credenciais de autenticação adequadas no cabeçalho da requisição.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguilchaves%2Fspring-professional-dscommerce","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguilchaves%2Fspring-professional-dscommerce","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguilchaves%2Fspring-professional-dscommerce/lists"}