"Não leia apenas as notícias. Entenda o viés por trás delas."
O Semáforo de Notícias é uma aplicação web de última geração que combina agregação de notícias em tempo real com Inteligência Artificial. O sistema analisa automaticamente o espectro ideológico (Esquerda, Centro, Direita) de cada artigo, ajudando os leitores a combater a desinformação e a compreender a sua própria "bolha informativa".
⚠️ NOTA IMPORTANTE SOBRE A API DO GEMINIA funcionalidade de análise de viés depende da Google Gemini API, que possui limites rigorosos de pedidos (Rate Limits) na versão gratuita.
Se a análise de viés falhar ou não aparecer, é provável que o limite de pedidos da chave partilhada tenha sido atingido. Para garantir o funcionamento contínuo ao testar o projeto, recomenda-se que gere a sua própria API Key no Google AI Studio e atualize a variável
VITE_GEMINI_API_KEYno ficheiro.env.
Cada notícia é processada pelo Google Gemini, que classifica o conteúdo ideológico e o nível de opinatividade, gerando um gráfico visual (BiasSpectrum) instantâneo.
Utiliza a GNews API combinada com algoritmos de deduplicação (Levenshtein) para filtrar ruído e apresentar apenas conteúdo relevante e único.
Onde quer que esteja, o sistema sabe. Deteção automática da cidade via LocationIQ para notícias regionais e meteorologia em tempo real via Open-Meteo.
Você é o que lê. O sistema calcula a sua "dieta informativa", gerando um perfil ideológico médio e atribuindo uma identidade visual dinâmica (Avatar com anel colorido) baseada nos seus hábitos de leitura.
Guarde notícias para ler mais tarde. O sistema integra com Firebase Firestore para manter os seus favoritos e análises de IA sincronizados entre dispositivos.
O projeto segue um fluxo de dados unidirecional robusto, utilizando Context API para gestão de estado e Custom Hooks para isolar a lógica de negócio.
graph TD
User((Utilizador)) --> Auth[AuthProvider / Firebase]
Auth --> App
subgraph Lógica de Notícias
Home --> Fetcher[UnifiedNewsFetcher]
Fetcher --> GNews[GNews API]
Fetcher -.-> Card[NewsCard]
Card --> Analyzer[BiasAnalyzer]
Analyzer --> Gemini[Gemini AI]
Analyzer -.->|Update Viés| Fetcher
end
subgraph Persistência
Card --> HookFav[useFavoritosActions]
HookFav --> Firestore[(Firebase DB)]
end
subgraph Perfil Analítico
Firestore --> HookProfile[useProfileBias]
HookProfile --> Stats[Cálculo de Média Ideológica]
Stats --> Avatar[Navbar Avatar Colorido]
end