Skip to content

ialedocarmo/fintrack-challenge

Repository files navigation

Desafio

📌 Visão Geral

Esse projeto é uma API que gerencia contratos de financiamento de veículos de uma instituição financeira


🏗️ Estrutura do Projeto

fintrack-challenge/
│
├── src/
│   ├── Fintrack.Api/              # Camada de apresentação (endpoints REST)
│   │   ├── Controllers/           
│   │   ├── Middleware/            
│   │   ├── Properties/           
│   │   ├── appsettings.Development.json
│   │   ├── appsettings.json          
│   │   ├── Fintrack.Api.csproj           
│   │   └── Program.cs                    
│   │
│   ├── Fintrack.Application/      # Casos de uso e orquestração
│   │   ├── DTOs/                  
│   │   ├── Interfaces/            
│   │   └── Fintrack.Application.csproj            
│   │
│   ├── Fintrack.Domain/           # Regras de negócio puras
│   │   ├── Entities/
│   │   ├── Enums/
│   │   ├── ValueObjects/
│   │   └── Fintrack.Domain.csproj
│   │
│   ├── Fintrack.Infrastructure/   # Persistência e integrações técnicas
│   │   ├── Data/
│   │   ├── Service/
│   │   └── Fintrack.Infrastructure.csproj
│   │
│   └── Fintrack.Shared/           # Código cross-cutting
│       ├── Common/               
│       ├── Extensions/
│       ├── Utils/
│       └── Fintrack.Shared.csproj/
│
├── tests/
│   ├── Fintrack.UnitTests/        # Testes de regras de domínio (xUnit + FluentAssertions)
│   └── Fintrack.IntegrationTests/ # Testes de integração (API + DB)
│
├── .gitignore
├── coverlet.runsettings
├── Directory.Build.props
├── docker-compose.yml
├── Dockerfile
├── fintrack-challenge.sln
├── README.md
└── test-coverage.ps1

⚙️ Como rodar o projeto

📦 Pré-requisitos

Antes de rodar o projeto, certifique-se de ter instalado:


Clonar o repositório

git clone https://github.com/ialedocarmo/fintrack-challenge.git
cd fintrack-challenge

Subir apenas o banco de dados

docker-compose up -d db

Criar e aplicar as migrations

dotnet ef migrations add InitialCreate `
  --project src/Fintrack.Infrastructure `
  --startup-project src/Fintrack.Api `
  --output-dir Data/Migrations

dotnet ef database update `
  --project src/Fintrack.Infrastructure `
  --startup-project src/Fintrack.Api

🔎 Se já existirem migrations, você pode apenas rodar o database update.

Subir toda a stack (API + Banco)

docker-compose up --build

🌐 Acesso à API

A aplicação disponível em:


🛠️ Comandos úteis

Ver containers em execução

docker ps

Acessar banco no container

docker exec -it financial-db psql -U postgres -d financialdb

Listar tabelas no banco

\dt

✅ Executando testes


🔒 Autenticação

A API utiliza autenticação JWT Bearer.

  • Para acessar os endpoints protegidos, é necessário gerar um token pelo endpoint /auth/login e usá-lo no botão Authorize do Swagger.

Exemplo de payload para criar um contrato

{
  "clienteCpfCnpj": "82854661087",
  "valorTotal": 25000,
  "taxaMensal": 2,
  "prazoMeses": 36,
  "dataVencimentoPrimeiraParcela": "2025-09-20T00:00:00Z",
  "tipoVeiculo": "Automovel",
  "condicaoVeiculo": "Novo"
}

Exemplo de payload para criar um pagamento

{
  "contratoId": "{contratoId}",
  "dataPagamento": "2025-10-20T00:00:00Z",
  "valor": 1200
}

⚠️ Importante: Sempre envie datas em formato UTC com Z no final (yyyy-MM-ddTHH:mm:ssZ), caso contrário o PostgreSQL vai rejeitar o valor.


🧪 Rodando os testes automatizados & cobertura de código

Na raiz do projeto:

dotnet test

📈 Medindo a cobertura de código

Este projeto usa coverlet para coleta e ReportGenerator para relatórios.

Windows (PowerShell)

.\test-coverage.ps1

Linux/macOS

make test-cov

➡ O relatório será gerado em coveragereport/index.html.

Agora abra o arquivo no navegador:

coveragereport/index.html

About

Technical challenge financial institution

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages