Aplicativo para realizar cálculo de comissões em vendas de produtos e serviços.
- Sumário 📚
- Acessando a Aplicação 🌍
- Endpoints da API 💡
- Configuração do Ambiente de Desenvolvimento ⚙️
- Backend
- Frontend
- 🛠 Tecnologias
- Executando os Testes ✅
- Contribuindo 🤝
- Licença 📝
O frontend está hospedado nos servidores da vercel e pode ser acessado em https://commission-calculator-psi.vercel.app/.
A API está hospedada nos servidores da Railway e pode ser acessada nos links abaixo:
- Painel admin: https://commission-calculator-api.up.railway.app/admin
- API root: https://commission-calculator-api.up.railway.app/
Para obter os dados dos recursos, acesse a url da API root concatenando com algum dos seguintes paths:
-
api/v1/persons/vendors/- GET: listar vendedores cadastrados.
- POST: cadastrar vendedor.
-
api/v1/persons/vendors/<int:id>/- GET: detalhes do vendedor.
- DELETE: deletar vendedor.
- PUT: atualizar vendedor.
-
api/v1/persons/customers/- GET: listar clientes cadastrados.
- POST: cadastrar cliente.
-
api/v1/persons/customers/<int:id>/- GET: detalhes do cliente.
- DELETE: deletar cliente.
- PUT: atualizar cliente.
# Cadastro de cliente
url = "http://localhost:8000/api/v1/customers/"
payload = {
"name": "Test Person",
"email": "testcustomer@email.com",
"phone": "84991000000",
}
response = requests.post(url, json=payload)
# Atualização de vendedor (alterando nome do vendedor com id = 1)
url = "http://localhost:8000/api/v1/vendors/1/"
payload = {
"name": "New Name Vendor",
"email": "testvendor@email.com",
"phone": "84991222222",
}
response = requests.put(url, json=payload)api/v1/products/- GET: listar produtos cadastrados.
- POST: cadastrar produto.
api/v1/products/<int:id>/- GET: detalhes do produto.
- DELETE: deletar produto.
- PUT: atualizar produto.
# Cadastro de produto
url = "http://localhost:8000/api/v1/products/"
payload = {
"code": "12346",
"description": "New Product",
"unit_price": "17.49",
"commission_rate": "0.050"
}
response = requests.post(url, json=payload)
# Atualização de produto (alterando taxa de comissão do produto com id = 3)
url = "http://localhost:8000/api/v1/products/3/"
payload = {
"code": "12346",
"description": "New Product",
"unit_price": "17.49",
"commission_rate": "0.020"
}
response = requests.put(url, json=payload)api/v1/sales/- GET: listar vendas cadastradas.
- POST: cadastrar venda.
api/v1/sales/<int:id>/- GET: detalhes do produto.
- DELETE: deletar produto.
- PUT: atualizar produto.
# Cadastro de venda
url = "http://localhost:8000/api/v1/sales/"
payload = {
"date_time": "2023-06-13T08:24:42-03:00",
"customer": "http://localhost:8000/api/v1/persons/customers/1/",
"vendor": "http://localhost:8000/api/v1/persons/vendors/2/",
"products": [
{
"product": "http://localhost:8000/api/v1/products/3/",
"quantity": 3
},
{
"product": "http://localhost:8000/api/v1/products/3/",
"quantity": 2
}
]
}
response = requests.post(url, json=payload)
# Atualização de venda (removendo primeiro produto da venda com id = 1)
url = "http://localhost:8000/api/v1/sales/1/"
payload = {
"date_time": "2023-06-13T08:24:42-03:00",
"customer": "http://localhost:8000/api/v1/persons/customers/1/",
"vendor": "http://localhost:8000/api/v1/persons/vendors/2/",
"products": [
{
"product": "http://localhost:8000/api/v1/products/3/",
"quantity": 2
}
]
}
response = requests.put(url, json=payload)Para configurar o ambiente de desenvolvimento, siga as etapas abaixo:
0. Clone este repositório em sua máquina.
1. Certifique-se de ter o Docker Compose instalado em seu sistema.
2. Acesse a pasta backend dentro do diretório clonado.
3. Crie o arquivo .env com base no arquivo .env.example:
cp .env.example .env- Não esqueça de atualizar as variáveis do arquivo
.envcom base no seu ambiente.
4. Execute o comando docker-compose up para iniciar o ambiente de desenvolvimento.
5. Acesse a API em http://localhost:8000/.
- OBS: ao inicializar a aplicação, um usuário administrador será criado automaticamente e você poderá acessar o painel de admin em http://localhost:8000/admin utilizando as credenciais
ADMIN_USERNAMEeADMIN_PASSWORDque forneceu no arquivo.env.
1. Certifique-se de ter o NodeJS instalado em seu sistema.
2. Acesse a pasta frontend dentro do diretório clonado.
3. Instale as dependências do projeto:
npm i4. Crie o arquivo .env com base no arquivo .env.example:
cp .env.example .env- Não esqueça de atualizar as variáveis do arquivo
.envcom base no seu ambiente.
5. Execute o comando para iniciar o servidor de desenvolvimento:
npm run dev6. Acesse a aplicação em http://localhost:3000/.
- Django: framework para desenvolvimento web em Python que facilita a criação de aplicativos web robustos e escaláveis.
- Django REST Framework: biblioteca poderosa e flexível para desenvolvimento de APIs Web em Django.
- PostgreSQL: banco de dados relacional de código aberto, robusto e altamente escalável, que suporta recursos avançados como consultas complexas, índices, transações ACID e replicação.
- Docker: plataforma para criação e execução de aplicativos em contêineres, proporcionando isolamento, portabilidade e facilidade na implantação.
-
TypeScript: linguagem de programação de código aberto baseada em JavaScript, com tipagem estática opcional. Oferece segurança, produtividade e escalabilidade no desenvolvimento de aplicativos web e Node.js.
-
NextJS: framework React de código aberto para criação de aplicativos web modernos. Com SSR (Renderização do Lado do Servidor) e SSG (Geração de Páginas Estáticas), permite desenvolver de forma produtiva e escalável, garantindo desempenho otimizado.
Este projeto inclui testes automatizados implementados com as ferramentas de teste do Django e Django REST Framework. Para executar os testes, siga as etapas abaixo:
-
Certifique-se de ter o ambiente de desenvolvimento configurado e em execução.
-
No diretório raiz do backend do projeto, execute o comando
docker-compose run backend coverage run manage.py testpara executar os testes automatizados. -
(Opcional ) Se quiser visualizar o relatório de cobertura dos testes em html, execute
docker-compose run backend coverage htmle a pasta htmlcov será criada com todas as informações detalhadas sobre o resultado dos testes. Para visualizar esses resultados, executepython -m http.server -d htmlcov 8001
Contribuições são bem-vindas! Se você deseja contribuir para este projeto, siga estas etapas:
-
Faça um fork deste repositório.
-
Crie uma nova branch com sua contribuição:
git checkout -b minha-contribuicao. -
Faça as alterações necessárias e commit:
git commit -m "Minha contribuição". -
Envie suas alterações para o seu fork:
git push origin minha-contribuicao. -
Abra um pull request neste repositório, descrevendo suas alterações.
-
Aguarde feedback e revisão do pull request.
Este projeto está licenciado sob a MIT License.