Um sistema bancário RESTful completo desenvolvido com FastAPI, focado em abstrair a alta performance de requisições assíncronas para o gerenciamento de clientes, contas correntes e transações financeiras garantindo uma segurança robusta via autenticação JWT.
Para uma experiência completa com interface gráfica, acesse:
- Aplicação Live (Demo): frontend-banking-system.vercel.app
- Repositório Frontend: Lidianacosta/FrontendBankingSystem
- Autenticação e Perfis de Usuário:
- Segurança de ponta com geração de token JWT OAuth2.
- Bloqueio de novos cadastros públicos: a criação de usuário gerente é feita exclusivamente via linha de comando (CLI) garantindo proteção do sistema.
- Perfil restrito onde o usuário pode visualizar e atualizar seus próprios dados de forma isolada.
- Gestão de Acerto (Clientes e Contas):
- Cadastro interligado: a criação do
IndividualClientjá provisiona automaticamente a baseClient. - Controle rígido de duplicação: validação por CPF único para evitar redundâncias na base.
- Contas Correntes segmentadas com trava de limite dinâmico e limite diário de saque.
- Cascata Inteligente: a exclusão de clientes ou contas afaga todos os registros órfãos garantindo a limpeza do banco.
- Cadastro interligado: a criação do
- Transações Financeiras (Deposits & Withdrawals):
- Registro imutável de transações financeiras acoplados diretamente ao saldo.
- Regra de Saque Seguro: Todo saque desconta o saldo final da conta, necessitando de um usuário ativo/autenticado.
- Ambiente Moderno:
- Banco de Dados assíncrono mantido via AIOSQLite.
- Migrações dinâmicas auto-referenciadas utilizando Alembic e SQLModel.
- Python 3.12+: Linguagem base do projeto.
- FastAPI: Framework web assíncrono de alta performance.
- SQLModel: ORM moderno unindo o melhor do SQLAlchemy e do Pydantic.
- Alembic: Ferramenta para gerenciar migrações de banco de dados.
- PyJWT & PwdLib: Para segurança de senhas via Argon2 e tokens de longa duração.
- uv: Gerenciamento eficiente e ultrarrápido de dependências do Python.
Painel Swagger Interativo
Acesse diretamente via /docs para visualizar todas as rotas e realizar testes rápidos da sua API com OAuth2 integrado nas requisições.
Coleção Insomnia Pronta
No diretório docs/, está disponível a collection insomnia_collection.yaml contendo todas as requisições, variáveis de ambientes isoladas e scripts para captar os IDs das respostas e alimentar as sub-requisições (Evitando copiar e colar o client_id na mão em cada teste)!
Este projeto utiliza uv para gerenciamento de dependências, garantindo instalações extremamente rápidas.
- Python 3.12+ instalado.
- uv instalado no sistema operacional.
-
Clone o repositório:
git clone https://github.com/Lidianacosta/FastAPIBankingSystem.git cd FastAPIBankingSystem -
Crie e ative o ambiente virtual:
# Sincroniza e baixa todos os pacotes em milissegundos uv sync -
Configure as variáveis de ambiente:
cp .env.example .env # Edite o .env caso queira mudar a secret ou configurações de banco -
Aplique as migrações (Criação das Tabelas):
uv run alembic upgrade head
-
Crie um superusuário (Via Linha de Comando de Segurança):
uv run python -m src.commands.create_user
-
Inicie o servidor localmente:
uv run fastapi dev src/main.py
Acesse a documentação interativa em http://127.0.0.1:8000/docs para autenticar o usuário que você acabou de criar e gerenciar todo o banco!
Por ser uma aplicação de backend puramente REST, a visualização gráfica acontece diretamente pelas documentações interativas geradas.


