Sistema bancário completo desenvolvido com FastAPI, implementando operações básicas de conta corrente, transferências, pagamento de faturas e análise de crédito.
A aplicação foi desenvolvida seguindo os princípios SOLID e Clean Code:
- Single Responsibility Principle: Cada serviço tem uma única responsabilidade
- Open/Closed Principle: Código aberto para extensão, fechado para modificação
- Liskov Substitution Principle: Abstrações podem ser substituídas por suas implementações
- Interface Segregation Principle: Interfaces específicas para cada necessidade
- Dependency Inversion Principle: Dependência de abstrações, não de implementações
.
├── main.py # Aplicação FastAPI principal
├── domain_models.py # Modelos de domínio
├── schemas.py # Schemas Pydantic (DTOs)
├── repository.py # Camada de acesso a dados
├── conta_service.py # Serviço de gerenciamento de contas
├── transacao_service.py # Serviço de transações
├── fatura_service.py # Serviço de faturas
├── credito_service.py # Serviço de análise de crédito
├── requirements.txt # Dependências do projeto
├── README.md # Este arquivo
└── banco.db # Banco de dados SQLite (criado automaticamente)
pip install -r requirements.txtpython main.pyOu usando uvicorn diretamente:
uvicorn main:app --reload --host 0.0.0.0 --port 8000A documentação interativa da API estará disponível em:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
POST /contas- Criar nova contaGET /contas/{numero_conta}- Buscar conta por númeroGET /contas- Listar todas as contas
POST /transacoes/transferencia- Realizar transferênciaPOST /transacoes/deposito- Realizar depósitoPOST /transacoes/saque- Realizar saqueGET /transacoes/{numero_conta}- Listar transações da conta
GET /faturas/conta/{conta_id}- Listar faturas da contaPOST /faturas/pagamento- Pagar fatura
POST /credito/analisar- Analisar solicitação de créditoGET /credito/consultar-score/{cpf}- Consultar score (não implementado)
GET /health- Health check da API
curl -X POST "http://localhost:8000/contas" \
-H "Content-Type: application/json" \
-d '{
"cpf_titular": "12345678901",
"nome_titular": "João da Silva",
"tipo_conta": "corrente",
"saldo_inicial": 1000.00
}'curl -X POST "http://localhost:8000/transacoes/transferencia" \
-H "Content-Type: application/json" \
-d '{
"conta_origem": "00123-4",
"conta_destino": "00456-7",
"valor": 100.00,
"descricao": "Pagamento de serviço"
}'curl -X POST "http://localhost:8000/credito/analisar" \
-H "Content-Type: application/json" \
-d '{
"conta_id": 1,
"valor_solicitado": 5000.00,
"renda_mensal": 3000.00,
"tempo_cliente_meses": 12
}'- FastAPI: Framework web moderno e rápido
- Pydantic: Validação de dados
- SQLite: Banco de dados leve e eficiente
- aiosqlite: Driver assíncrono para SQLite
- Uvicorn: Servidor ASGI de alta performance
- Validação de entrada com Pydantic
- Tratamento de erros centralizado
- Validação de CPF
- Verificação de saldo antes de transações
- Status de conta para bloqueio/desbloqueio
- Autenticação e autorização (JWT)
- Integração com bureaus de crédito
- Testes unitários e de integração
- Docker e Docker Compose
- CI/CD pipeline
- Logging estruturado
- Rate limiting
- Cache com Redis
- Mensageria (RabbitMQ/Kafka)
- Auditoria de operações
- Nomes descritivos e significativos
- Funções pequenas e focadas
- Comentários quando necessário
- Tratamento adequado de erros
- Código organizado e estruturado
- Single Responsibility: Cada classe/função tem uma única responsabilidade
- Open/Closed: Extensível sem modificar código existente
- Liskov Substitution: Subtipos substituíveis por tipos base
- Interface Segregation: Interfaces específicas e coesas
- Dependency Inversion: Dependência de abstrações
Este projeto é de código aberto e está disponível para uso educacional.
Sistema desenvolvido como exemplo de API bancária com FastAPI.