No dia a dia dos comércios, uma das tarefas que mais consome tempo é a de fazer compras para reposição. É comum ter que preparar uma listagem dos produtos, consultar vários fornecedores, comparar preços, tudo manualmente. Além disso, muitos vendedores não fornecem uma lista de todos os produtos disponíveis. Some isso ao desencontro entre as informações dos produtos entre as base de dados dos comerciantes, o que mostra o tamanho do problema.
Nosso sistema atualmente consiste em um backend e uma base de dados que concentra as informações mais pertinentes para o funcionamento do protótipo. Dessa forma, ele faz a criação de novas chaves da API, autenticaçao, e CRUD dos dados.
Estudamos aumentar a escalabidade do projeto por meio de arquitetura de micro serviços. Também podemos melhorar a segurança por meio de autenticação em dois fatores e permissões granulares para as chaves da API. Outra funcionalidade também interessante é a integração com sistema de pagamentos, para facilitar as transações, e mais adiante, integração com sistema de transportes.
O projeto atua como uma plataforma que visa unificar e padronizar as transações comerciais entre fornecedores e comércios menores, por meio de uma API REST, com a qual os desenvolvedores de sistemas de ERP iriam integrar seus softwares, provendo uma funcionalidade útil, lucrativa e produtiva para todos os envolvidos.
Desenvolvemos uma API utilizando o Django Rest Framework do Python, optamos por uma nuvem do tipo IaaS (Infrastructure as a Service) para hospedagem e nossa API tem alguns recursos de segurança, como os tokens de autenticação JWT.
No Código Fonte temos um diagrama de arquitetura, uma página inicial do projeto e, caso seja necessário usar uma base de dados apartada, os scripts para criação e carga da base.
Optamos por utilizar o próprio front-end do framework.
Julio Facal - RM84125
Guilherme Mauser - RM82890
Nicolas Morais - RM84393
Rafael Zanão - RM82923
- Python 3.9
- Pip
- Git - (opcional, mas recomendado para clonar o projeto e atualizar as versões)
- Faça o download da última versão ou clone o projeto na sua máquina local usando:
git clone https://github.com/FaKL-Code/Challenge-Rest-API.git
- Crie um ambiente virtual:
- No Windows usando:
python -m venv venv
- No Linux usando:
virtualenv --python python3 venv
- Ative o ambiente virtual:
- No Windows usando:
venv\Scripts\activate.bat
- No Linux usando:
source venv/bin/activate
- Instale as dependências usando:
pip install -r requirements.txt
-
Navegue ate o diretório "./challenge"
-
Faça as migrações dos modelos do projeto usando:
python manage.py makemigrations
python manage.py migrate
- Crie um super usuário preenchendo os campos necessários ao usar o comando:
python manage.py createsuperuser
- Inicie o servidor usando:
python manage.py runserver
-
Acesse o servidor em http://api.quotegenius.net:8000/auth/register e crie seu usuário
-
Acesse o servidor em http://api.quotegenius.net:8000/auth/login e entre com o usuário que você criou
-
Copie o token "Access" gerado para futuras autenticações
Nossa API tem os seguintes endpoints:
- Para ler toda a Documentação da API:
- Para cadastro de usuário e obtenção do Token:
- Para acessar o console administrativo:
- Para acessar os dados:
- http://api.quotegenius.net:8000/api/v1/customers
- http://api.quotegenius.net:8000/api/v1/products
- http://api.quotegenius.net:8000/api/v1/purchases
- http://api.quotegenius.net:8000/api/v1/purchaseproducts
- http://api.quotegenius.net:8000/api/v1/suppliers
- http://api.quotegenius.net:8000/api/v1/supplierproducts
Para Validar o funcionamento da API basta acessar cada um dos endpoits e tentar realizar requisições, lembrando que para acessar os dados, será necessário a autenticação a partir do token gerado no momento do login
I.E.: