- 1. Sobre o Projeto
- 2. Arquitetura
- 3. Modelagem de Domínio
- 4. Segurança
- 5. Tecnologias
- 6. Como rodar
- 7. Contato
A fintech API simula operações financeiras básicas com autenticação, contas e transações.
O foco do projeto está em demonstrar:
- boas práticas de backend
- segurança com JWT
- modelagem de domínio realista
- testes automatizados
Arquitetura baseada em camadas:
- Controller → expõe endpoints REST
- Service → centraliza regras de negócio
- Repository → acesso a dados com JPA
- Entity → modelagem do domínio
- DTO → contratos de entrada e saída
- Security → autenticação/autorização via JWT
flowchart LR
A[Client / Postman / Swagger] --> B[Controllers]
B --> C[Services]
C --> D[Repositories]
D --> E[(PostgreSQL)]
B --> F[Security Layer]
F --> G[JWT Filter / Spring Security]
C --> H[Business Rules]
C --> I[Transactions]
| Tipo | fromAccount | toAccount |
|---|---|---|
| DEPOSIT | null | conta |
| WITHDRAW | conta | null |
| TRANSFER | conta A | conta B |
Essa modelagem permite representar corretamente depósitos, saques e transferências usando a mesma entidade Transaction.
- autenticação via JWT
- Spring Security
- hash de senha com BCrypt
- endpoints protegidos com Bearer Token
Authorization: Bearer <token>- Java 17
- Spring Boot 4
- Spring Security
- JWT
- Spring Data JPA
- PostgreSQL
- Flyway
- Redis
- Swagger / OpenAPI
- JUnit + Mockito
- Postman
Caso deseje rodar o projeto sem Java e PostgreSQL instalados localmente (apenas com Docker), após definir as variáveis de ambiente, pule para a sessão que ensina a rodar API via container.
- Java 17
- PostgreSQL ou Docker
Edite o arquivo .env para refletir o usuário e senha do PostgreSQL, além da chave SECRET em base64 desejada. Valores de exemplo já estão configurados.
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=postgres
SECURITY_JWT_SECRET=ZmFrZS1zZWNyZXQtZm9yLWNpLXRlc3RzLTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDE=É possível gerar uma chave em base64 no site a seguir: Random Base64 Generator
Copy-Item .env.example .envcp .env.example .envNa raiz do projeto:
docker compose up -dSubstitua postgres_user e postgres_password pelo seu usuário e senha do postgres, respectivamente.
psql -U postgres_user -d postgres_password -c "CREATE DATABASE fintech;"
.\mvnw.cmd spring-boot:run./mvnw spring-boot:runCaso opte por seguir esse caminho, não será necessário iniciar a aplicação utilizando Java.
- Suba API + Postgres e Redis:
docker compose -f docker-compose-api.yml up -d --buildCaso deseje testar a API utilizando o Postman, a coleção está disponível na raíz do projeto.
Para validar cache (Redis + integração), execute na coleção nesta ordem:
- Pasta Auth (gera token1 e token2)
- Pasta Accounts (gera accountId1 e accountId2)
- Pasta Transactions (garante movimentações iniciais)
- Pasta Cache Integration (valida hit/miss e miss após evict via Actuator)
Compose padrão:
docker compose down -vCompose com api:
docker compose -f docker-compose-api.yml down -vCaso tenha achado o projeto interessante e/ou deseje entrar em contato, só me enviar uma mensagem no LinkedIn!
Meu LinkedIn: https://www.linkedin.com/in/victorfa/