/Challenge-Rest-API

Uma API REST, com a qual os desenvolvedores de sistemas de ERP podem integrar seus softwares, provendo uma funcionalidade útil, lucrativa e produtiva.

Primary LanguagePythonOtherNOASSERTION

Quote Genius logo

Quote Genius

GitHub all releases watching_count python

FIAP logo

Enterprise Challenge 2023

Desafio

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.

Sistema Atual

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.

Possíveis Melhorias

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.

Escopo do Projeto

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.

Especificação do Projeto

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.

Componentes do Grupo:

4 SI

Julio Facal - RM84125
Julio github
Guilherme Mauser - RM82890
Guilherme github
Nicolas Morais - RM84393
Nicolas github
Rafael Zanão - RM82923
Rafael github

Sumário

Instalação

Requisitos

  • Python 3.9
  • Pip
  • Git - (opcional, mas recomendado para clonar o projeto e atualizar as versões)

Setup

  1. 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
  1. Crie um ambiente virtual:
  • No Windows usando:
python -m venv venv
  • No Linux usando:
virtualenv --python python3 venv
  1. Ative o ambiente virtual:
  • No Windows usando:
venv\Scripts\activate.bat
  • No Linux usando:
source venv/bin/activate
  1. Instale as dependências usando:
pip install -r requirements.txt
  1. Navegue ate o diretório "./challenge"

  2. Faça as migrações dos modelos do projeto usando:

python manage.py makemigrations
python manage.py migrate
  1. Crie um super usuário preenchendo os campos necessários ao usar o comando:
python manage.py createsuperuser

Iniciar

  1. Inicie o servidor usando:
python manage.py runserver
  1. Acesse o servidor em http://api.quotegenius.net:8000/auth/register e crie seu usuário

  2. Acesse o servidor em http://api.quotegenius.net:8000/auth/login e entre com o usuário que você criou

  3. Copie o token "Access" gerado para futuras autenticações

Endpoints

Nossa API tem os seguintes endpoints:

  1. Para ler toda a Documentação da API:

  1. Para cadastro de usuário e obtenção do Token:

  1. Para acessar o console administrativo:

  1. Para acessar os dados:

Testes

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

Teste de requisição