Skip to content

withor-dev/web-clima

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dashboard do Clima

Este projeto é uma solução completa de monitoramento climático desenvolvida como parte do processo seletivo para a vaga de Desenvolvedor(a) .NET Júnior. O sistema coleta dados meteorológicos em tempo real, armazena o histórico e exibe estatísticas através de um dashboard responsivo.

📋 Sobre o Projeto

A aplicação foi desenhada seguindo princípios de Clean Architecture simplificada e SOLID, garantindo o desacoplamento entre as camadas de apresentação, regras de negócio e acesso a dados.

Funcionalidades Principais

Coleta Automática: Um Worker Service corre em segundo plano a cada 15 minutos para buscar dados na API OpenWeatherMap.

Persistência: Uso de banco de dados em memória (EF Core) para alta performance em testes.

Dashboard: Interface frontend responsiva (HTML5/CSS3) com gráficos interativos.

API REST: Endpoints documentados via Swagger para consumo de dados históricos e estatísticos.

🏗️ Arquitetura e Design

  1. Arquitetura Lógica

O sistema foi dividido em camadas para garantir a testabilidade e facilidade de manutenção:

API (Presentation): Responsável apenas por receber requisições HTTP e validar entradas.

Application (Services): Contém as regras de negócio (cálculo de médias, máximas e mínimas).

Domain (Models): Entidades que representam o núcleo do negócio (WeatherRecord).

Infrastructure (Data & External): Implementação do Repositório (EF Core) e Cliente HTTP para a API externa.

  1. Arquitetura Física (Implantação)

A solução é composta por dois artefatos principais: o Servidor Backend (.NET) e o Cliente Frontend (Navegador), comunicando-se via HTTP. O banco de dados reside na memória do processo do servidor.

Suposições e Decisões de Design

Repository Pattern: Utilizado para isolar o Entity Framework. Isto permite que, no futuro, o banco em memória seja trocado por SQL Server sem impactar a regra de negócio.

BackgroundService (Worker): A coleta de dados foi isolada num serviço hospedado (IHostedService) para não bloquear a thread principal da API e garantir a execução pontual a cada 15 minutos, independentemente de haver utilizadores logados.

Frontend Vanilla: Optou-se por HTML5 e CSS puro (sem frameworks pesados) para demonstrar domínio dos fundamentos da web e garantir leveza no carregamento, conforme recomendado no escopo do teste.

🚀 Como Executar o Projeto

Pré-requisitos

.NET 8 SDK instalado.

Chave de API do OpenWeatherMap (Gratuita).

Passo 1: Configuração do Backend

Clone o repositório:

git clone https://github.com/withor-dev/AppClima.git cd WeatherApp

Configure a sua chave de API. Abra o ficheiro appsettings.json e insira a sua chave:

"OpenWeatherMap": { "ApiKey": "SUA_CHAVE_AQUI", "BaseUrl": "https://api.openweathermap.org/data/2.5/" }

Restaure as dependências e compile:

dotnet restore dotnet build

Execute a aplicação:

dotnet run --project WeatherApp

O Backend iniciará em http://localhost:5222 (ou porta similar exibida no terminal).

Passo 2: Executando o Frontend

Como o frontend é estático (HTML/JS puro), não requer processo de build complexo.

Navegue até à pasta Frontend.

Abra o ficheiro index.html em qualquer navegador moderno.

Nota: Certifique-se de que a URL da API no ficheiro app.js corresponde à porta exata onde o seu backend está a correr localmente.

🧪 Testes Automatizados

O projeto conta com testes unitários cobrindo as principais regras de negócio, utilizando xUnit e Moq.

Para executar os testes, corra o seguinte comando na raiz da solução:

dotnet test

📚 Documentação da API

Com o backend a correr, aceda ao Swagger para visualizar e testar os endpoints interativamente:

URL: http://localhost:5222/swagger

Lá encontrará a especificação detalhada dos endpoints:

GET /api/weather/historico/{cidade}: Histórico completo para os gráficos.

GET /api/weather/resumo/{cidade}: Estatísticas consolidadas do dia (Média, Mínima, Máxima).

Desenvolvido por Withor - 2026

About

Dashboard meteorológico construído com .NET 8. Consome a API do OpenWeatherMap via Worker Service e exibe histórico de dados com Clean Architecture.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors