Dashboard interativo que consome APIs públicas (clima, câmbio e filmes) e apresenta os dados em gráficos dinâmicos.
Stack: React + TypeScript + Vite + Recharts (frontend) · Spring Boot 4 / Java 21 (backend)
data-vision/
├── backend/ # Spring Boot — proxy e agregação das APIs externas
└── frontend/ # React + Vite — dashboard com Recharts
cd backend
mvnw spring-boot:runNo Windows, se a execução de scripts
.ps1estiver bloqueada, usemvnw.cmd.
Endpoints:
GET /api/weather?city=São Paulo— previsão de 7 dias (Open-Meteo)GET /api/currency?days=30— série USD/EUR → BRL (AwesomeAPI)GET /api/movies/populareGET /api/movies/top_rated— filmes (TMDB)
cd frontend
npm install
npm run devAbra http://localhost:5173.
A seção de filmes usa a TMDB API (grátis, requer cadastro). Sem a chave, as outras seções funcionam normalmente e a de filmes exibe um aviso.
A chave é lida em duas fontes, nesta ordem de prioridade:
-
Variável de ambiente
TMDB_API_KEY:# Windows PowerShell $env:TMDB_API_KEY = "sua-chave-aqui" # Linux/macOS export TMDB_API_KEY="sua-chave-aqui"
-
Arquivo local
backend/.datavision-secrets.properties(recomendado para Windows):app.tmdb.api-key=sua-chave-aquiEsse arquivo é ignorado pelo git (está no
.gitignore) — a chave nunca vai para o repositório.
| Dados | API | Chave |
|---|---|---|
| Clima | Open-Meteo | Não |
| Câmbio | AwesomeAPI | Não |
| Filmes | TMDB | Sim (grátis) |
- Consumo de APIs externas via
RestClient(Spring Boot) com tratamento de erro e agregação de dados - Visualização interativa com Recharts (área, linha e barras)
- Separação frontend/backend com CORS configurado e API keys mantidas fora do código
- Estados de carregamento/erro em cada seção do dashboard