API RESTful assíncrona desenvolvida com FastAPI para simulação de operações bancárias.
O projeto foi desenvolvido como desafio do bootcamp da DIO e a Luizalabs com foco em autenticação JWT, operações financeiras e arquitetura backend organizada utilizando boas práticas.
- Cadastro de usuários
- Login com autenticação JWT
- Depósitos
- Saques
- Transferências entre contas via CPF
- Consulta de histórico de transações
- Consulta de dados da conta
- Validação de saldo
- Rotas protegidas com autenticação
- Documentação automática com Swagger/OpenAPI
- Python 3.13
- FastAPI
- SQLAlchemy 2.0
- SQLite
- Alembic
- Pydantic
- JWT Authentication
- Passlib
- Poetry
O projeto foi estruturado seguindo separação de responsabilidades:
- Routes → endpoints da API
- Services → regras de negócio
- Schemas → validações e serialização
- Models → entidades ORM
- Core → autenticação e segurança
- Database → conexão e dependências do banco
app/
├── core/ # Segurança e autenticação
├── database/ # Conexão e dependências do banco
├── models/ # Modelos ORM
├── routes/ # Endpoints da API
├── schemas/ # Validações e serialização
├── services/ # Regras de negócio
└── main.py # Inicialização da aplicaçãoPOST /auth/register
POST /auth/login
Retorna um token JWT utilizado para autenticação das rotas protegidas.
POST /transactions/deposit
POST /transactions/withdraw
POST /transactions/transfer
GET /transactions/history
GET /accounts/me
- Não é permitido realizar depósitos negativos
- Não é permitido realizar saques negativos
- O usuário deve possuir saldo suficiente para saque e transferência
- Apenas usuários autenticados podem acessar rotas protegidas
- Arquitetura organizada em camadas
- Operações assíncronas com SQLAlchemy Async
- Transferências entre usuários via CPF
- Proteção de rotas com JWT
- Documentação automática com Swagger
- Migrations com Alembic
Crie um arquivo .env na raiz do projeto baseado no .env.example.
git clone https://github.com/GalvanGabe/API-Bancaria-Assincrona-com-FastAPI.gitcd API-Bancaria-Assincrona-com-FastAPIpoetry installpoetry run alembic upgrade headpoetry run uvicorn app.main:app --reloadApós iniciar a aplicação:
http://127.0.0.1:8000/docs
http://127.0.0.1:8000/redoc
A API utiliza autenticação JWT Bearer Token.
Após realizar login em /auth/login, utilize o token retornado para acessar os endpoints protegidos.
No Swagger, clique em Authorize e informe apenas o token JWT.
Durante o desenvolvimento deste projeto foram aplicados conceitos como:
- APIs RESTful
- Programação assíncrona
- JWT Authentication
- SQLAlchemy Async ORM
- Relacionamentos entre tabelas
- Arquitetura em camadas
- Migrations com Alembic
- Validação de dados com Pydantic
- Dependency Injection com FastAPI
Gabriel Galvan
