Skip to content

neutral-design/WeatherApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WeatherApp

Android weather app built with Kotlin and Jetpack Compose.

This project started as a university mobile development project and has since been cleaned up, debugged, and visually refreshed to work better as a portfolio piece. The app fetches forecasts from SMHI's open weather API, supports place search, favorites, and location-based lookup.

Features

  • Forecast lookup by latitude and longitude
  • Current location support
  • Search for places by name
  • Save and remove favorite places
  • Fallback to locally saved forecast data when a refresh fails
  • Forecast UI with weather summary cards and symbol-based status

Tech Stack

  • Kotlin
  • Jetpack Compose
  • Material 3
  • Android Navigation Compose
  • Hilt for dependency injection
  • Retrofit + Gson for networking
  • Kotlin coroutines
  • SharedPreferences + Kotlin serialization for simple local persistence
  • Google Play Services Location

Data Source

Weather forecasts are fetched from SMHI Open Data.

  • Forecast API: SNOW1gv1
  • Search source: SMHI place search endpoint

Screens

  • Home: enter coordinates manually or use current location
  • Search: search for a city or place and open its forecast
  • Weather: see a highlighted current forecast and upcoming forecast entries
  • Favorites: keep frequently used places one tap away

Running the App

Requirements

  • Android Studio
  • Android SDK 34
  • JDK 11

Build

From the project root:

./gradlew assembleDebug

On Windows:

.\gradlew.bat assembleDebug

Test

./gradlew testDebugUnitTest

Permissions

The app requests:

  • INTERNET
  • ACCESS_NETWORK_STATE
  • ACCESS_FINE_LOCATION
  • ACCESS_COARSE_LOCATION

Location permission is only used to fetch the user's current coordinates for weather lookup.

Project Notes

  • The app was updated to SMHI's newer forecast API after the older forecast endpoint was retired in March 2026.
  • Forecast times are formatted from UTC to local device time.
  • If a live refresh fails but cached weather data exists, the app shows the saved result instead of leaving the screen empty.

Possible Next Steps

  • Add screenshots to this README
  • Replace generic Material icons with custom weather illustrations
  • Localize UI text with string resources
  • Add richer forecast details such as precipitation probability and humidity
  • Add widget support or a compact "today" view

Status

This is an active portfolio project and a good example of:

  • Android UI built with Compose
  • API integration and migration work
  • iterative refactoring of an older student project
  • improving reliability, UX, and presentation quality over time

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages