Infra, dominio, servicos e seguranca
Containerizacao
Orquestra todos os servicos via docker compose. Cada servico roda em seu container isolado.
Banco de dados relacional
Armazena todas as entidades do dominio. Roda no Docker, porta 5432.
Mensageria assincrona
Processa transacoes PIX de forma assincrona. Modo KRaft (sem Zookeeper).
Framework da aplicacao
Framework que estrutura a API REST. Gerencia dependencias, seguranca, profiles e auto-configuracao.
Migrations do banco
Controla versao do schema do banco. Migrations V1, V2... executam em ordem. Nunca alterar uma ja executada.
Conta bancaria
Chave PIX
Transferencia PIX
QR Code PIX
Registro de auditoria
Notificacao para clientes
Porta de entrada HTTP
Recebe requisicoes REST e delega para o Service. Nao tem logica de negocio — e um garcom que leva o pedido para a cozinha.
Objetos de transferencia
Separam o que o cliente envia/recebe da estrutura interna (Entity). Nunca expor a Entity diretamente na API.
Logica de negocio
O cerebro da aplicacao. Valida regras, executa operacoes, audita e retorna DTOs. Padrao: VALIDAR → EXECUTAR → AUDITAR → RETORNAR.
Tradutor DTO ↔ Entity
Converte entre formatos: o que o cliente envia (DTO) vira o que o banco entende (Entity), e vice-versa.
Validacao CPF/CNPJ
Valida CPF e CNPJ pelo algoritmo de digitos verificadores (modulo 11). Rejeita documentos com todos os digitos iguais.
Tratamento central de erros
Intercepta TODA excecao da API e converte em resposta JSON padronizada (ErrorResponse). O cliente nunca ve um stack trace.
Hierarquia de excecoes
Classe base que todas as excecoes de negocio herdam. Contem httpStatus e errorCode. O Handler trata TODAS de uma vez.
Registro de auditoria
Camera de seguranca do sistema: registra toda operacao de escrita no AuditLog. Nao bloqueia nada, so registra.
Cadeia de filtros completa
Orquestra toda a seguranca HTTP: JWT filter, rate limiting, CORS, security headers e CSP. API 100% stateless.
Usuario de autenticacao
Endpoints de autenticacao
Porta de entrada para registro, login e renovacao de tokens. Todos os endpoints sao publicos (nao exigem JWT).
Objetos de autenticacao
Requests validados com Bean Validation e response padronizado com tokens JWT.
Logica de autenticacao
Registro, login e refresh. Brute force protection: 5 tentativas → 30min lock. Mensagens genericas para impedir user enumeration.
Geracao e validacao JWT
Gera e valida tokens JWT com HMAC-SHA256. Access token (15min) + refresh token (7d) com rotacao.
Filtro de autenticacao JWT
OncePerRequestFilter que extrai Bearer token, valida com JwtService e preenche o SecurityContext com a identidade do usuario.
Controle de requisicoes
Token Bucket via Bucket4j. Limita por IP (auth) ou por usuario (demais). Headers: X-RateLimit-Limit, Remaining, Retry-After.
Logs de seguranca
Logger dedicado com prefixo [SECURITY]. Registra IP + User-Agent automaticamente via RequestContextHolder.
Criptografia AES-256-GCM
AttributeConverter JPA que cifra ao salvar e decifra ao ler. Transparente para Service e Controller.
Protecao anti-XSS
Annotation customizada + ConstraintValidator. Rejeita HTML tags, event handlers e javascript: URLs em campos de texto.