{"id":19387601,"url":"https://github.com/cleilsonandrade/dscommerce-api","last_synced_at":"2025-04-23T23:31:18.306Z","repository":{"id":230630167,"uuid":"734847300","full_name":"CleilsonAndrade/dscommerce-api","owner":"CleilsonAndrade","description":"DSCommerce API é uma API robusta e versátil que atende às necessidades tanto de administradores quanto de clientes, para o gerenciamento de um sistema comercial. Oferece recursos como autenticação de usuário, perfis de usuário, gerenciamento de produtos com categorias, geração de ordem de compra e consulta. Utilizado o framework o Spring.","archived":false,"fork":false,"pushed_at":"2024-08-19T15:37:39.000Z","size":211,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T22:05:34.018Z","etag":null,"topics":["api","backend","commerce","e-commerce","h2-database","java","model-domain","mysql","oauth2","rsa-algorithm","spring","sql"],"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/CleilsonAndrade.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,"publiccode":null,"codemeta":null}},"created_at":"2023-12-22T19:48:40.000Z","updated_at":"2024-08-19T15:37:42.000Z","dependencies_parsed_at":"2024-03-31T02:32:53.214Z","dependency_job_id":"d8b7d4b6-20a6-420c-a6cc-4c3d38714ab5","html_url":"https://github.com/CleilsonAndrade/dscommerce-api","commit_stats":null,"previous_names":["cleilsonandrade/dscommerce","cleilsonandrade/dscommerce-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleilsonAndrade%2Fdscommerce-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleilsonAndrade%2Fdscommerce-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleilsonAndrade%2Fdscommerce-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleilsonAndrade%2Fdscommerce-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CleilsonAndrade","download_url":"https://codeload.github.com/CleilsonAndrade/dscommerce-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250531960,"owners_count":21446091,"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":["api","backend","commerce","e-commerce","h2-database","java","model-domain","mysql","oauth2","rsa-algorithm","spring","sql"],"created_at":"2024-11-10T10:09:54.352Z","updated_at":"2025-04-23T23:31:17.919Z","avatar_url":"https://github.com/CleilsonAndrade.png","language":"Java","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eDSCommerce API\u003c/h1\u003e\n  \u003cp\u003eDSCommerce API é uma API robusta e versátil que atende às necessidades tanto de administradores quanto de clientes, para o gerenciamento de um sistema comercial. Oferece recursos como autenticação de usuário, perfis de usuário, gerenciamento de produtos com categorias, geração de ordem de compra e consulta. Foi utilizado o framework do Java o Spring, Spring Web, para gerenciamento do web server, Spring Data JPA para manipulação de informações dos bancos de dados MySQL e H2 Database. Para segurança e autenticação foi utilizado tecnologias como OAuth2 Resource Server, JWT e BCrypt.\u003c/p\u003e\n  \u003cimg src=\"./references/flow.png\" alt=\"Flow\" width=\"1800\"\u003e\n\u003c/div\u003e\n\n# 📒 Índice\n* [Descrição](#descrição)\n* [Requisitos Funcionais](#requisitos)\n  * [Features](#features)\n* [Tecnologias](#tecnologias)\n* [Endpoints](#endpoints)\n* [Instalação](#instalação)\n* [Licença](#licença)\n\n# 📃 \u003cspan id=\"descrição\"\u003eDescrição\u003c/span\u003e\nDSCommerce API é uma API robusta e versátil que atende às necessidades tanto de administradores quanto de clientes, para o gerenciamento de um sistema comercial. Oferece recursos como autenticação de usuário, perfis de usuário, gerenciamento de produtos com categorias, geração de ordem de compra e consulta. Foi utilizado o framework do [**Java**](https://www.java.com) o [**Spring**](https://spring.io), [**Spring Web**](https://spring.io/projects/spring-framework), para gerenciamento do web server, [**Spring Data JPA**](https://spring.io/projects/spring-data-jpa) para manipulação de informações dos bancos de dados [**MySQL**](https://www.mysql.com) e [**H2 Database**](https://www.h2database.com). Para segurança e autenticação foi utilizado tecnologias como [**OAuth2 Resource Server**](https://oauth.net/2/), [**JWT**](https://jwt.io) e [**BCrypt**](https://en.wikipedia.org/wiki/Bcrypt) com a utilização da criptografia do tipo RSA.\n\n# 📌 \u003cspan id=\"requisitos\"\u003eRequisitos Funcionais\u003c/span\u003e\n- [x] Autenticação de usuário\u003cbr\u003e\n- [x] Perfis de cliente e administrador associados ao usuário\u003cbr\u003e\n- [x] Cadastramento de produtos e categoria pertencente, por usuário com perfil de administrador\u003cbr\u003e\n- [x] Listagem de produtos\u003cbr\u003e\n- [x] Consulta de um produto especifico\u003cbr\u003e\n- [x] Atualização de informações de produtos, por usuário com perfil de administrador\u003cbr\u003e\n- [x] Deleção de um produto especifico, por usuário com perfil de administrador\u003cbr\u003e\n- [x] Listagem de todas as categorias\u003cbr\u003e\n- [x] Gerar ordem de compra, por usuário com perfil de cliente\u003cbr\u003e\n- [x] Consulta de ordem de compra especifica, por usuário com perfis cliente e administrador\u003cbr\u003e\n\n## Features\n- [x] Autenticação de usuário utilizando OAuth2, chave RSA e JWT Token\u003cbr\u003e\n- [x] Exibição de informações do próprio usuário em sessão ativa\u003cbr\u003e\n- [x] Status para as ordens: AGUARDANDO PAGAMENTO, PAGO, ENVIADO, ENTREGUE, CANCELADO\u003cbr\u003e\n- [x] Adicionando mapeamento de CORS\u003cbr\u003e\n- [x] Modelo de domínio complexo\u003cbr\u003e\n- [x] Projeção com SQL nativo\u003cbr\u003e\n- [x] Ambientes diferentes de desenvolvimento: DEV, TEST, PROD\u003cbr\u003e\n\n# 💻 \u003cspan id=\"tecnologias\"\u003eTecnologias\u003c/span\u003e\n- **Java**\n- **Spring**\n- **Spring Web**\n- **Spring Boot DevTools**\n- **Spring Data JPA**\n- **OAuth2 Resource Server**\n- **RSA**\n- **JWT**\n- **BCrypt**\n- **MySQL**\n- **H2 Database**\n\n# 📍 \u003cspan id=\"endpoints\"\u003eEndpoints\u003c/span\u003e\n| Método | Endpoint               | Resumo                                          | Autenticação               | Role\n|--------|----------------------|-----------------------------------------------------|--------------------------|----------------------\n\u003ckbd\u003ePOST\u003c/kbd\u003e | \u003ckbd\u003e/oauth2/token\u003c/kbd\u003e | Responsável por autenticar usuário e gerar o Bearer Token JWT. Utiliza o *Basic Auth* e o corpo de requisição do tipo *x-www-form-urlencoded* com as chaves: *username*, *password* e *grant_type* | Sim | *\n\u003ckbd\u003eGET\u003c/kbd\u003e | \u003ckbd\u003e/users/me\u003c/kbd\u003e | Responsável por listar as informações do usuário que esta na sessão | Sim | ROLE_ADMIN, ROLE_CLIENT\n\u003ckbd\u003eGET\u003c/kbd\u003e | \u003ckbd\u003e/products\u003c/kbd\u003e | Responsável por listar todos os produtos | Não | *\n\u003ckbd\u003eGET\u003c/kbd\u003e | \u003ckbd\u003e/products/:id\u003c/kbd\u003e | Responsável por exibir um produto especifico por seu ID | Não | *\n\u003ckbd\u003ePOST\u003c/kbd\u003e | \u003ckbd\u003e/products\u003c/kbd\u003e | Responsável por cadastrar um produto | Sim | ROLE_ADMIN\n\u003ckbd\u003ePUT\u003c/kbd\u003e | \u003ckbd\u003e/products/:id\u003c/kbd\u003e | Responsável por atualizar um produto, informando o ID no Path e via corpo de requisição as informações | Sim | ROLE_ADMIN\n\u003ckbd\u003ePUT\u003c/kbd\u003e | \u003ckbd\u003ePUT /products/:id\u003c/kbd\u003e | Responsável por deletar um produto, informando o ID no Path | Sim | ROLE_ADMIN\n\u003ckbd\u003eGET\u003c/kbd\u003e | \u003ckbd\u003e/categories\u003c/kbd\u003e | Responsável por listar todos as categorias | Não | *\n\u003ckbd\u003ePOST\u003c/kbd\u003e | \u003ckbd\u003e/orders\u003c/kbd\u003e | Responsável por gerar uma ordem de uma compra | Sim | ROLE_CLIENT\n\u003ckbd\u003eGET\u003c/kbd\u003e | \u003ckbd\u003e/orders/:id\u003c/kbd\u003e | Responsável por listar os produtos na ordem de uma compra especifica e seu status, informando o ID | Sim | ROLE_ADMIN, ROLE_CLIENT\n\u003ckbd\u003eGET\u003c/kbd\u003e | \u003ckbd\u003e/h2-console\u003c/kbd\u003e | Responsável por acesso ao *H2 Database* | Sim | *\n\n# 🚀 \u003cspan id=\"instalação\"\u003eInstalação\u003c/span\u003e\n```bash\n  # Clone este repositório:\n  $ git clone https://github.com/CleilsonAndrade/dscommerce-api.git\n  $ cd ./dscommerce-api\n\n  # Instalar as dependências:\n  $ mvn clean install\n\n  # Executar:\n  $ mvn spring-boot:run\n```\n\n# 📝 \u003cspan id=\"licença\"\u003eLicença\u003c/span\u003e\nEsse projeto está sob a licença MIT. Veja o arquivo [LICENSE](LICENSE) para mais detalhes.\n\n---\n\n\u003cp align=\"center\"\u003e\n  Feito com 💜 by CleilsonAndrade\n\u003c/p\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcleilsonandrade%2Fdscommerce-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcleilsonandrade%2Fdscommerce-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcleilsonandrade%2Fdscommerce-api/lists"}