Este projeto evoluiu de um sistema legado em memória para uma API RESTful moderna. O foco principal foi aplicar padrões de Engenharia de Software para garantir persistência, segurança e, acima de tudo, precisão financeira.
- Precisão Financeira: Utilização do tipo
Decimal(viaAnnotatedeField) em vez defloat, garantindo que não existam erros de arredondamento em transações monetárias. - Segurança Baseada em JWT: Implementação de autenticação assíncrona com JSON Web Tokens, garantindo acesso seguro e isolado aos dados de cada usuário.
- Arquitetura em Camadas: Organização modular entre Controllers, Services e Models para facilitar a manutenção e escalabilidade do código.
A camada de serviço (TransactionService) impõe restrições rigorosas para auditoria e controle:
- Limite de Saque: O valor máximo permitido por operação de saque é de R$ 500,00.
- Limite Diário: Cada conta está restrita a, no máximo, 3 saques por dia.
- Validação de Saldo: Saques são processados apenas se houver saldo suficiente disponível.
- Isolamento de Contas: Um usuário autenticado só pode realizar transações ou visualizar extratos de contas que pertencem ao seu ID.
src/
├── controllers/ # Endpoints da API e injeção de dependências
├── services/ # Core da aplicação (Regras de negócio)
├── models/ # Tabelas e relacionamentos do banco de dados
├── schemas/ # Contratos de entrada/saída e validações Pydantic
├── config.py # Gestão de variáveis de ambiente (.env)
├── database.py # Configuração do motor de banco de dados
└── security.py # Lógica de criptografia, JWT e proteção de rotas
-
Clone o repositório:
git clone [https://github.com/karlarenatadev/bank-api-python.git](https://github.com/karlarenatadev/bank-api-python.git)
-
Navegue até o diretório do projeto:
cd bank-api-python -
Instale as dependências:
pip install -r requirements.txt
-
Inicie o servidor:
uvicorn main:app --reload
-
Acesse a documentação interativa da API (Swagger UI) em:
http://127.0.0.1:8000/docs
- Implementação de Testes Unitários com Pytest.
- Containerização da aplicação com Docker.
- Integração com modelo de Machine Learning para detecção de anomalias.
Desenvolvido por: Karla Renata