Skip to content

About

API REST de uma fintech desenvolvida com Spring Boot 4, JWT, PostgreSQL, Flyway, testes e CI com GitHub Actions.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

💰 Fintech API

Java Spring Boot PostgreSQL Status API Tests CI


Sumário


1. Sobre o Projeto

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

Voltar ao topo


2. Arquitetura

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

2.1 Diagrama

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]
Loading

Voltar ao topo


3. Modelagem de Domínio

3.1 Transações

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.

Voltar ao topo


4. Segurança

  • autenticação via JWT
  • Spring Security
  • hash de senha com BCrypt
  • endpoints protegidos com Bearer Token

4.1 Header esperado

Authorization: Bearer <token>

Voltar ao topo


5. Tecnologias

  • Java 17
  • Spring Boot 4
  • Spring Security
  • JWT
  • Spring Data JPA
  • PostgreSQL
  • Flyway
  • Redis
  • Swagger / OpenAPI
  • JUnit + Mockito
  • Postman

Voltar ao topo


6. Como rodar

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.

6.1. Pré-requisitos

  • Java 17
  • PostgreSQL ou Docker

6.2. Defina as variáveis de ambiente

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

Windows (PowerShell)

Copy-Item .env.example .env

Linux/MacOS

cp .env.example .env

6.3. Prepare o banco de dados

6.3.1. Utilizando Docker

Na raiz do projeto:

docker compose up -d

6.3.2. Utilizando o PostgreSQL

Substitua 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;"

6.4. Inicie a aplicação

Windows

.\mvnw.cmd spring-boot:run

Linux/MacOS

./mvnw spring-boot:run

6.5. Alternativa: rodar API sem Java local

Caso opte por seguir esse caminho, não será necessário iniciar a aplicação utilizando Java.

  1. Suba API + Postgres e Redis:
docker compose -f docker-compose-api.yml up -d --build

6.6. Acesse

6.7. Postman

Caso 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:

  1. Pasta Auth (gera token1 e token2)
  2. Pasta Accounts (gera accountId1 e accountId2)
  3. Pasta Transactions (garante movimentações iniciais)
  4. Pasta Cache Integration (valida hit/miss e miss após evict via Actuator)

6.8. Parar e limpar ambiente Docker (opcional)

Compose padrão:

docker compose down -v

Compose com api:

docker compose -f docker-compose-api.yml down -v

Voltar ao topo

7. Contato

Caso 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/

Voltar ao topo

About

API REST de uma fintech desenvolvida com Spring Boot 4, JWT, PostgreSQL, Flyway, testes e CI com GitHub Actions.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages