Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cleilsonandrade/dscommerce-api

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.
https://github.com/cleilsonandrade/dscommerce-api

api backend commerce e-commerce h2-database java model-domain mysql oauth2 rsa-algorithm spring sql

Last synced: about 2 months ago
JSON representation

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.

Awesome Lists containing this project

README

        


DSCommerce API


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. 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.


Flow

# 📒 Índice
* [Descrição](#descrição)
* [Requisitos Funcionais](#requisitos)
* [Features](#features)
* [Tecnologias](#tecnologias)
* [Endpoints](#endpoints)
* [Instalação](#instalação)
* [Licença](#licença)

# 📃 Descrição
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. 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.

# 📌 Requisitos Funcionais
- [x] Autenticação de usuário

- [x] Perfis de cliente e administrador associados ao usuário

- [x] Cadastramento de produtos e categoria pertencente, por usuário com perfil de administrador

- [x] Listagem de produtos

- [x] Consulta de um produto especifico

- [x] Atualização de informações de produtos, por usuário com perfil de administrador

- [x] Deleção de um produto especifico, por usuário com perfil de administrador

- [x] Listagem de todas as categorias

- [x] Gerar ordem de compra, por usuário com perfil de cliente

- [x] Consulta de ordem de compra especifica, por usuário com perfis cliente e administrador

## Features
- [x] Autenticação de usuário utilizando OAuth2, chave RSA e JWT Token

- [x] Exibição de informações do próprio usuário em sessão ativa

- [x] Status para as ordens: AGUARDANDO PAGAMENTO, PAGO, ENVIADO, ENTREGUE, CANCELADO

- [x] Adicionando mapeamento de CORS

- [x] Modelo de domínio complexo

- [x] Projeção com SQL nativo

- [x] Ambientes diferentes de desenvolvimento: DEV, TEST, PROD

# 💻 Tecnologias
- **Java**
- **Spring**
- **Spring Web**
- **Spring Boot DevTools**
- **Spring Data JPA**
- **OAuth2 Resource Server**
- **RSA**
- **JWT**
- **BCrypt**
- **MySQL**
- **H2 Database**

# 📍 Endpoints
| Método | Endpoint | Resumo | Autenticação | Role
|--------|----------------------|-----------------------------------------------------|--------------------------|----------------------
POST | /oauth2/token | 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 | *
GET | /users/me | Responsável por listar as informações do usuário que esta na sessão | Sim | ROLE_ADMIN, ROLE_CLIENT
GET | /products | Responsável por listar todos os produtos | Não | *
GET | /products/:id | Responsável por exibir um produto especifico por seu ID | Não | *
POST | /products | Responsável por cadastrar um produto | Sim | ROLE_ADMIN
PUT | /products/:id | Responsável por atualizar um produto, informando o ID no Path e via corpo de requisição as informações | Sim | ROLE_ADMIN
PUT | PUT /products/:id | Responsável por deletar um produto, informando o ID no Path | Sim | ROLE_ADMIN
GET | /categories | Responsável por listar todos as categorias | Não | *
POST | /orders | Responsável por gerar uma ordem de uma compra | Sim | ROLE_CLIENT
GET | /orders/:id | Responsável por listar os produtos na ordem de uma compra especifica e seu status, informando o ID | Sim | ROLE_ADMIN, ROLE_CLIENT
GET | /h2-console | Responsável por acesso ao *H2 Database* | Sim | *

# 🚀 Instalação
```bash
# Clone este repositório:
$ git clone https://github.com/CleilsonAndrade/dscommerce-api.git
$ cd ./dscommerce-api

# Instalar as dependências:
$ mvn clean install

# Executar:
$ mvn spring-boot:run
```

# 📝 Licença
Esse projeto está sob a licença MIT. Veja o arquivo [LICENSE](LICENSE) para mais detalhes.

---


Feito com 💜 by CleilsonAndrade