Loading repository data…
Loading repository data…
Maxsuel-Santos / repository
Esta é uma API RESTful robusta desenvolvida para auxiliar investidores na gestão de seus ativos. O sistema permite a criação de contas, associação de ações e o cálculo automático do patrimônio total baseado em dados em tempo real.
Esta é uma API RESTful de alta performance projetada para gestão de ativos financeiros. O sistema oferece desde o controle básico de carteiras até o rastreamento detalhado de transações (Buy/Sell), com monitoramento em tempo real e integração com o mercado financeiro.
Abaixo está o diagrama que ilustra o relacionamento entre as entidades do sistema (User, Transactions, Stock, Account, Account Stock e Billing Address).
O projeto implementa o conceito de "Full Observability":
As senhas nunca são armazenadas em texto plano. Utilizamos o BCryptPasswordEncoder tanto na criação quanto na atualização do perfil.
Tratamento centralizado de erros que fornece respostas claras e seguras via DTOs, evitando vazamento de stacktraces do servidor.
A documentação completa e interativa (Swagger UI) pode ser acessada em: http://localhost:8080/swagger-ui.html.
| Método | Endpoint | Descrição |
|---|---|---|
POST | /auth/register | Registra um novo usuário. |
POST | /auth/login | Autentica e retorna o Bearer Token JWT. |
GET | /auth/me | Retorna dados do usuário logado (JWT). |
POST | /auth/logout | Invalida o token atual. |
| Método | Endpoint | Descrição |
|---|---|---|
GET | /users/all | Lista todos os usuários do sistema. |
GET | /users/{userId} | Detalhes de um perfil específico. |
PUT | /users/{userId} | Atualiza dados (nome, e-mail). |
DELETE | /users/{userId} | Remove permanentemente o usuário. |
POST | /users/{userId}/avatar | Upload da foto de perfil (Multipart - Max 5MB). |
DELETE | /users/{userId}/avatar | Remove a foto de perfil do storage. |
| Método | Endpoint | Descrição |
|---|---|---|
POST | /stocks | Cadastra uma nova ação/ticker no sistema. |
GET | /stocks | Lista resumo de ativos do usuário logado. |
| Método | Endpoint | Descrição |
|---|---|---|
POST | /trades/buy | Executa Compra: Valida saldo e preço real (Brapi). |
POST | /trades/sell | Executa Venda: Valida posse e credita valor. |
GET | /trades/history | Histórico cronológico de operações (Brasília Time). |
GET | /trades/portfolio/{accountId} | Portfólio completo: Patrimônio + Valor de Mercado. |
| Método | Endpoint | Descrição |
|---|---|---|
POST | /users/{userId}/accounts | Cria uma nova carteira para o usuário. |
GET | /users/{userId}/accounts | Lista carteiras e saldos consolidados. |
GET | /accounts/{accountId}/balance | Cálculo de patrimônio simplificado (Total Equity). |
DELETE | /accounts/{accountId} | Deleta uma conta caso não haja ações vinculadas. |
O projeto utiliza variáveis de ambiente para proteger dados sensíveis. Se estiver utilizando o IntelliJ IDEA, você pode configurá-las facilmente:
Run > Edit Configurations....TOKEN=seu_token_aqui;JWT_SECRET=sua_chave_secreta_segura
A aplicação está preparada para rodar em containers, gerenciando a API, o banco de dados PostgreSQL e o monitoramento automaticamente.
# Limpa caches antigos e sobe todo o ecossistema:
docker compose down -v
# Na raiz do projeto, execute o comando abaixo para subir o ecossistema:
docker-compose up --build
Caso precise validar dados ou realizar queries manualmente, você pode acessar o terminal do Postgres diretamente pelo container Docker:
# 1. Acesse o terminal interativo do container de banco de dados
docker exec -it agregador-de-investimento psql -U postgres -d db_investimentos
# 2. Comandos úteis dentro do terminal psql:
\dt -> Lista todas as tabelas (users, accounts, stocks, etc.)
SELECT * FROM users; -> Visualiza os usuários cadastrados
\q -> Sai do terminal do banco de dados.
Para desenvolvimento local sem Docker (ex: usando banco H2 ou Postgres local), certifique-se de que as propriedades abaixo apontem para o seu ambiente no arquivo src/main/resources/application.properties:
# Brapi API Token (Configurado via Variável de Ambiente no IntelliJ)
TOKEN=${TOKEN}
# JWT Security
api.security.token.secret=${JWT_SECRET:minha-chave-secreta-padrao}
# Database (Exemplo PostgreSQL Local)
spring.datasource.url=jdbc:postgresql://localhost:5432/investdb
spring.datasource.username=postgres
spring.datasource.password=sua_senha
# Observabilidade (Actuator & Prometheus)
management.endpoints.web.exposure.include=health,info,prometheus
management.endpoint.health.show-details=always
O projeto conta com uma stack completa de monitoramento para garantir a saúde da aplicação e facilitar o debug em tempo real.
Ao acessar o Grafana (localhost:3000), você pode importar dashboards para visualizar:
Dica: Utilize o ID
19022no menu "Import" do Grafana para um dashboard Spring Boot completo.
Com o Grafana Tempo, é possível rastrear o caminho exato de uma requisição.
As métricas brutas são expostas via Spring Actuator em /actuator/prometheus, onde o Prometheus faz o "scrape" periódico dos dados.
O projeto utiliza as principais bibliotecas do ecossistema Java para garantir que a lógica de negócio e as camadas de segurança funcionem conforme o esperado.
Os testes estão localizados em src/test/java/ e seguem a hierarquia dos pacotes da aplicação:
AuthService.GlobalExceptionHandler está capturando os erros.Você pode rodar todos os testes através da sua IDE (IntelliJ) ou via terminal usando o Maven:
# Executar todos os testes
mvn test
# Executar um teste específico
mvn test -Dtest=AuthServiceTest
O projeto utiliza GitHub Actions para garantir a qualidade do código em cada contribuição. O pipeline é executado automaticamente em cada push ou pull request para a branch main.
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.