Aplicativo simples de previsão do tempo desenvolvido em React Native utilizando a API 5 dias / 3 horas da OpenWeather.
- Previsão do tempo por cidade
- Os usuários podem pesquisar e visualizar a previsão do tempo para qualquer cidade desejada.
- Localização atual
- Ao abrir o aplicativo, a previsão do tempo para a localização atual do usuário é exibida automaticamente.
- Detalhes da previsão
- Informações detalhadas como temperatura atual, máxima e mínima, condições climáticas, umidade, velocidade do vento, etc., estão disponíveis.
- Atualização automática
- A previsão do tempo é atualizada a cada 3 horas e referente aos próximos 5 dias.
- Interface intuitiva
- Interface de usuário amigável, fácil de usar e adaptável ao tema do dispositivo (claro e escuro).
- Certifique-se de ter os seguintes programas instalados em sua máquina:
- Clone este repositório:
git clone https://github.com/pogist/weather-app.git
- Navegue até o diretório do projeto:
cd weather-app
- Instale as dependências:
yarn
Para iOS, também será necessário instalar dependências nativas utilizando Cocoapods:
# 1. Baixe o Cocoapods localmente
bundle install
# 2. Navegue até o diretório `ios`
cd ios
# 3. Utilize sua versão local do Cocoapods
bundle exec pod install
- Crie um arquivo chamado
.env
com as seguintes informações:
# Chave de API para a Open Weather Map
OPEN_WEATHER_MAP_API_KEY="coloque-sua-chave-aqui"
# URL para a rota de API `5 dias / 3 horas`
FORECAST_API_URL="https://api.openweathermap.org/data/2.5/forecast"
- Inicie o Metro Bundler:
yarn start
- Execute o aplicativo:
iOS
yarn ios # Debug
yarn ios --mode Release # Release
Android
yarn android # Debug
yarn android --mode release # Release
Opcionalmente, também é possível executar o aplicativo através do Xcode ou do Android Studio:
# Abra o app iOS no Xcode
xed ios
# Abra o app Android no Android Studio
studio android # certifique-se que o launcher está configurado corretamente (https://www.jetbrains.com/help/idea/2024.1/working-with-the-ide-features-from-command-line.html)
Observação: essa etapa é obrigatória caso queira visualizar ou modificar o código dos módulos nativos.
Este aplicativo utiliza APIs nativas para as funcionalidades de Geolocalização (obter localização atual do dispositivo) e Geocoding (converter nomes de cidade em coordenadas de latitude/longitude). Tais funcionalidades são expostas através de módulos nativos que podem ser encontrados nos seguintes locais:
TypeScript
iOS (Objective-C)
ios/LinxChallenge/Location.h
ios/LinxChallenge/Location.m
ios/LinxChallenge/Geocoding.h
ios/LinxChallenge/Geocoding.m
Android (Kotlin)
android/app/src/main/java/com/linxchallenge/LocationModule.kt
android/app/src/main/java/com/linxchallenge/GeocodingModule.kt
- TypeScript
- React Native
- Config (para chaves de API)
- Vector Icons (para ícones vetorizados)
- Autocomplete Dropdown (para a barra de busca)
- Core Location (para geocoding e geolocalização no iOS)
- Geocoder (para geocoding no Android)
- Google Play Services (para geolocalização no Android)