# dev-aniketj/weatherapp-android architecture

> Architecture diagram of the GitHub repository dev-aniketj/weatherapp-android, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dev-aniketj/weatherapp-android
- Repository: https://github.com/dev-aniketj/weatherapp-android

## Overview

This Android weather app uses device location or a city search to obtain coordinates, then requests current and forecast weather from OpenWeather and displays it. HomeActivity owns the main interaction and current-weather request; DaysAdapter independently requests daily forecast data for its list. The README documents current, hourly, daily, alert, and historical data available from One Call, though the sampled implementation confirms current and daily display only. Source excerpts do not show every HomeActivity call site, so unsampled integrations are omitted.

Main entry points: [`app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java`](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java) (Weather screen), [`app/src/main/java/com/aniketjain/weatherapp/adapter/DaysAdapter.java`](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/adapter/DaysAdapter.java) (Daily forecast list), [`app/src/main/java/com/aniketjain/weatherapp/url/URL.java`](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/url/URL.java) (API URL builder), [`app/src/main/java/com/aniketjain/weatherapp/location/LocationCord.java`](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/location/LocationCord.java) (Location coordinates)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["App experience"]
  node_splash["Splash screen<br/>[SplashScreen.java]"]
  node_home["Weather screen<br/>[HomeActivity.java]"]
  node_daily["Daily forecast list<br/>[DaysAdapter.java]"]
end

subgraph group_location["Location lookup"]
  node_location_service["Android location"]
  node_city_finder["City geocoder<br/>[CityFinder.java]"]
  node_coordinates["Location coordinates<br/>[LocationCord.java]"]
end

subgraph group_weather["Weather data"]
  node_url["API URL builder<br/>[URL.java]"]
  node_openweather["OpenWeather API"]
  node_weather_ui["Weather presentation<br/>[UpdateUI.java]"]
end

subgraph group_support["App support"]
  node_connectivity["Network check"]
  node_toast["User notifications<br/>[Toaster.java]"]
end

node_user(("User"))
node_voice["Speech recognition"]
node_play["Google Play updates"]

node_user -->|"opens app"| node_splash
node_splash -->|"starts after delay"| node_home
node_user -->|"searches or refreshes"| node_home
node_home -->|"gets last location"| node_location_service
node_home -->|"resolves coordinates and city"| node_city_finder
node_city_finder -->|"sets coordinates"| node_coordinates
node_home -->|"sets city coordinates"| node_coordinates
node_home -->|"builds request URLs"| node_url
node_daily -->|"builds forecast URL"| node_url
node_url -->|"reads coordinates"| node_coordinates
node_home -->|"requests city and current weather"| node_openweather
node_daily -->|"requests daily weather"| node_openweather
node_daily -->|"formats forecast display"| node_weather_ui
node_home -->|"checks connection"| node_connectivity
node_home -->|"shows errors"| node_toast
node_home -->|"launches speech input"| node_voice
node_home -->|"checks app updates"| node_play

click node_splash "https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/SplashScreen.java"
click node_home "https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java"
click node_daily "https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/adapter/DaysAdapter.java"
click node_city_finder "https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/location/CityFinder.java"
click node_coordinates "https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/location/LocationCord.java"
click node_url "https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/url/URL.java"
click node_weather_ui "https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/update/UpdateUI.java"
click node_connectivity "https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/network/InternetConnectivity.java"
click node_toast "https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/toast/Toaster.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_splash,node_home,node_daily,node_user toneBlue
class node_location_service,node_city_finder,node_coordinates toneAmber
class node_url,node_openweather,node_weather_ui toneMint
class node_connectivity,node_toast toneRose
class node_voice,node_play toneIndigo
```

## Components

### App experience

- [Splash screen](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/SplashScreen.java): `app/src/main/java/com/aniketjain/weatherapp/SplashScreen.java`
- [Weather screen](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java): `app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java`
- [Daily forecast list](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/adapter/DaysAdapter.java): `app/src/main/java/com/aniketjain/weatherapp/adapter/DaysAdapter.java`

### Location lookup

- **Android location**
- [City geocoder](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/location/CityFinder.java): `app/src/main/java/com/aniketjain/weatherapp/location/CityFinder.java`
- [Location coordinates](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/location/LocationCord.java): `app/src/main/java/com/aniketjain/weatherapp/location/LocationCord.java`

### Weather data

- [API URL builder](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/url/URL.java): `app/src/main/java/com/aniketjain/weatherapp/url/URL.java`
- **OpenWeather API**
- [Weather presentation](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/update/UpdateUI.java): `app/src/main/java/com/aniketjain/weatherapp/update/UpdateUI.java`

### App support

- [Network check](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/network/InternetConnectivity.java): `app/src/main/java/com/aniketjain/weatherapp/network/InternetConnectivity.java`
- [User notifications](https://github.com/dev-aniketj/weatherapp-android/blob/master/app/src/main/java/com/aniketjain/weatherapp/toast/Toaster.java): `app/src/main/java/com/aniketjain/weatherapp/toast/Toaster.java`

### Other components

- **User**
- **Speech recognition**
- **Google Play updates**

## Connections

- User → Splash screen: opens app (evidence: `app/src/main/java/com/aniketjain/weatherapp/SplashScreen.java`)
- Splash screen → Weather screen: starts after delay (evidence: `app/src/main/java/com/aniketjain/weatherapp/SplashScreen.java`)
- User → Weather screen: searches or refreshes (evidence: `app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java`)
- Weather screen → Android location: gets last location (evidence: `app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java`)
- Weather screen → City geocoder: resolves coordinates and city (evidence: `app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java`)
- City geocoder → Location coordinates: sets coordinates (evidence: `app/src/main/java/com/aniketjain/weatherapp/location/CityFinder.java`)
- Weather screen → Location coordinates: sets city coordinates (evidence: `app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java`)
- Weather screen → API URL builder: builds request URLs (evidence: `app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java`)
- Daily forecast list → API URL builder: builds forecast URL (evidence: `app/src/main/java/com/aniketjain/weatherapp/adapter/DaysAdapter.java`)
- API URL builder → Location coordinates: reads coordinates (evidence: `app/src/main/java/com/aniketjain/weatherapp/url/URL.java`)
- Weather screen → OpenWeather API: requests city and current weather (evidence: `app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java`)
- Daily forecast list → OpenWeather API: requests daily weather (evidence: `app/src/main/java/com/aniketjain/weatherapp/adapter/DaysAdapter.java`)
- Daily forecast list → Weather presentation: formats forecast display (evidence: `app/src/main/java/com/aniketjain/weatherapp/adapter/DaysAdapter.java`)
- Weather screen → Network check: checks connection (evidence: `app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java`)
- Weather screen → User notifications: shows errors (evidence: `app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java`)
- Weather screen → Speech recognition: launches speech input (evidence: `app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java`)
- Weather screen → Google Play updates: checks app updates (evidence: `app/src/main/java/com/aniketjain/weatherapp/HomeActivity.java`)
