Skip to content

eldersantoss/commission-calculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

146 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Calculadora de Comissões 💰

Aplicativo para realizar cálculo de comissões em vendas de produtos e serviços.

Sumário 📚

Acessando a Aplicação 🌍

O frontend está hospedado nos servidores da vercel e pode ser acessado em https://commission-calculator-psi.vercel.app/.

Endpoints da API 💡

A API está hospedada nos servidores da Railway e pode ser acessada nos links abaixo:

Para obter os dados dos recursos, acesse a url da API root concatenando com algum dos seguintes paths:

Vendedores e Clientes

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

Exemplos

# 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)

Produtos

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

Exemplos

# 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)

Vendas

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

Exemplos

# 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)

Configuração do Ambiente de Desenvolvimento ⚙️

Para configurar o ambiente de desenvolvimento, siga as etapas abaixo:

0. Clone este repositório em sua máquina.

Backend

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 .env com 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_USERNAME e ADMIN_PASSWORD que forneceu no arquivo .env.

Frontend

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 i

4. 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 .env com base no seu ambiente.

5. Execute o comando para iniciar o servidor de desenvolvimento:

npm run dev

6. Acesse a aplicação em http://localhost:3000/.

🛠 Tecnologias

Backend

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

Frontend

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

Executando os Testes ✅

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:

  1. Certifique-se de ter o ambiente de desenvolvimento configurado e em execução.

  2. No diretório raiz do backend do projeto, execute o comando docker-compose run backend coverage run manage.py test para executar os testes automatizados.

  3. (Opcional ) Se quiser visualizar o relatório de cobertura dos testes em html, execute docker-compose run backend coverage html e a pasta htmlcov será criada com todas as informações detalhadas sobre o resultado dos testes. Para visualizar esses resultados, execute python -m http.server -d htmlcov 8001

Contribuindo 🤝

Contribuições são bem-vindas! Se você deseja contribuir para este projeto, siga estas etapas:

  1. Faça um fork deste repositório.

  2. Crie uma nova branch com sua contribuição: git checkout -b minha-contribuicao.

  3. Faça as alterações necessárias e commit: git commit -m "Minha contribuição".

  4. Envie suas alterações para o seu fork: git push origin minha-contribuicao.

  5. Abra um pull request neste repositório, descrevendo suas alterações.

  6. Aguarde feedback e revisão do pull request.

Licença 📝

Este projeto está licenciado sob a MIT License.

Releases

No releases published

Packages

 
 
 

Contributors