Este projeto é um Backend for Frontend (BFF) desenvolvido em Java 17 com Spring Boot 3. Ele atua como uma camada de orquestração e segurança para o aplicativo mobile "Painel Econômico", centralizando regras de negócio, cacheamento de dados e integração com APIs externas de mercado financeiro.
Destaque: O projeto utiliza Programação Reativa (Spring WebFlux) para alta performance e Caffeine Cache para otimização de requisições.
Este backend serve dados exclusivamente para o aplicativo mobile desenvolvido em React Native.
- Repositório Mobile: painel_economico-mobile
A arquitetura foi pensada para ser escalável, resiliente e fácil de manter, utilizando as melhores práticas do ecossistema Spring:
- Linguagem: Java 17 (LTS).
- Framework: Spring Boot 3.5.
- Stack Reativa: Spring WebFlux (Netty) para I/O não bloqueante.
- Cliente HTTP: WebClient (Chamadas assíncronas a APIs externas).
- Cache: Caffeine (Cache em memória para reduzir latência e economizar cota de APIs externas).
- Documentação: SpringDoc OpenApi (Swagger UI).
- Testes: JUnit 5, Mockito e Reactor Test (Cobertura de testes unitários e de integração).
- Build & Deploy: Maven e Docker.
Consolida dados de múltiplas fontes (moedas, criptoativos e índices de bolsa) em um formato unificado para o frontend.
- Endpoint:
/api/indicators/all
Fornece histórico de variação de preços (High/Low) dos últimos dias para geração de gráficos.
- Endpoint:
/api/indicators/historical/{currencyCode}
Realiza cálculos de conversão monetária no lado do servidor, garantindo que a regra de negócio e a cotação utilizada sejam confiáveis.
- Endpoint:
/api/indicators/convert
Proxy para a API de notícias globais, protegendo a API Key no servidor (evitando exposição no app mobile) e tratando falhas de fornecedores externos com fallbacks.
- Endpoint:
/api/news/top-headlines
- JDK 17 instalado.
- Maven 3.8+.
- Uma chave de API gratuita do NewsAPI (Opcional, o sistema possui fallback).
-
Clone o repositório:
git clone https://github.com/n33miaz/painel_economico-api.git cd painel_economico-api -
Configuração de Variáveis de Ambiente: Crie um arquivo
.envna raiz do projeto (ou configure nas variáveis do sistema):NEWS_API_KEY=sua_chave_aqui -
Instale as dependências e execute os testes:
mvn clean install
-
Execute a aplicação:
mvn spring-boot:run
A API estará disponível em:
http://localhost:8080
docker build -t painel-economico-api .
docker run -p 8080:8080 -e NEWS_API_KEY=sua_chave painel-economico-apiA qualidade do código é garantida através de testes unitários e de integração, cobrindo Controllers e Services.
Para rodar os testes:
mvn testCom a aplicação rodando, acesse a documentação interativa dos endpoints:
- Swagger UI:
http://localhost:8080/swagger-ui.html - OpenAPI Json:
http://localhost:8080/v3/api-docs
Este projeto foi desenvolvido para fins acadêmicos e de portfólio.
Desenvolvedor: Neemias Cormino Manso