replica: recon, architecture, design tokens, build log, reference and clone screenshots
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
# Recon map: Google Weather / Pixel Weather (Android)
|
||||
|
||||
Scope: the whole app: home forecast, detail cards, locations, settings, precipitation map, alerts, notifications, widget, AI brief
|
||||
For: personal use, a weather app without Google services (project NoGooleApps)
|
||||
Date: 2026-10-17
|
||||
|
||||
## Sources
|
||||
|
||||
| # | source | URL | notes |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | app store listing | https://play.google.com/store/apps/details?id=com.google.android.apps.weather | page did not load via fetch; no screenshots saved |
|
||||
| 2 | help center | https://support.google.com/googlepixeltablet/answer/15266029?hl=en-GB | most complete feature/settings list |
|
||||
| 3 | review | https://9to5google.com/2024/10/30/pixel-weather-rolling-out/ | cards, reorder, per-city layout, notifications |
|
||||
| 4 | review | https://9to5google.com/2024/05/23/new-google-weather-android/ | redesign, NowCast |
|
||||
| 5 | news | https://9to5google.com/2025/01/30/pixel-weather-units-of-measurement-update/ | units settings |
|
||||
| 6 | news | https://www.notebookcheck.net/Google-is-quietly-killing-Android-s-weather-app-experience.1231441.0.html | 2026: non-Pixel weather redirected to Search |
|
||||
| 7 | news | https://www.techradar.com/phones/google-pixel-phones/the-pixel-9s-amazing-new-weather-app-is-now-heading-to-older-pixels | AI report on Pixel 9 |
|
||||
| 8 | news | https://9to5google.com/2021/05/17/pixel-launcher-weather-alerts/ | alert wording (type + issuing agency) |
|
||||
|
||||
| 9 | screenshots | replica/screens/ref-01..04.png | supplied by user (Android Authority / connect montages): hero, cards, day view, nowcast, light+dark. Reference only, never shipped |
|
||||
|
||||
## Core loop
|
||||
|
||||
Open the app and see at a glance what the weather is now, in the next hours and in the coming days for your location, plus whether something severe is coming.
|
||||
|
||||
## Screens
|
||||
|
||||
| ID | screen | route / how to reach | purpose | key components | states seen |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| S01 | Home / city forecast | app launch | current weather + all cards for one city | hero, alert banner, brief, nowcast card, hourly strip, 10-day capsules, shaped detail cards, animated background | loading, filled, alert active, no location permission, offline (guess) |
|
||||
| S02 | Saved locations | top-left / back from S01 | switch, add, delete cities | current-location row, city rows with temp/condition, search field, swipe-to-delete | only current, many, permission denied |
|
||||
| S03 | Location search | search on S02 | find a city | search input, result list, Add button | empty, results, no results |
|
||||
| S04 | Day detail | tap a day capsule in 10-day | one day: range, hourly, cards | capsule picker (selected), day-range, hourly strip, detail cards | filled (ref-01) |
|
||||
| S15 | Location preview | tap a search result | full forecast before saving | hero, cards, Save button | unsaved (ref-02) |
|
||||
| S05 | Card detail | tap a card (guess) | expanded metric (e.g. AQI, pollen, UV) | chart, explanation text | filled (guess) |
|
||||
| S06 | Weather map | map card on S01 | 6h precipitation nowcast | map, precip overlay, timeline scrubber, play | filled, region unavailable |
|
||||
| S07 | Profile menu | avatar top-right | entry to settings, theme | menu list | |
|
||||
| S08 | Settings | S07 -> Weather settings | units, vibrations, AI brief, notifications | radio lists, toggles | |
|
||||
| S09 | Units | S08 -> Temperature / Weather units | change units | radio groups | |
|
||||
| S10 | Rearrange mode | long-press a card on S01 | reorder cards | drag handles, drop placeholder | dragging |
|
||||
| S11 | Alert detail | tap alert banner | full warning text, agency, validity | text, source link | |
|
||||
| S12 | Homescreen widget | launcher | glance view | temp, icon, high/low, location | sizes |
|
||||
| S13 | Notifications | system | rain soon, tomorrow forecast, severe | notification | |
|
||||
| S14 | Onboarding / permissions | first launch (guess) | ask location + notifications | permission prompts | granted, denied |
|
||||
|
||||
## Flows
|
||||
|
||||
```
|
||||
F01 Check weather at current location
|
||||
S14 (first time) -> S01
|
||||
happy path clicks: 0
|
||||
edge: location denied, GPS off, offline with cached data, stale data
|
||||
|
||||
F02 Add a city
|
||||
S01 -> S02 -> S03 -> S15 preview -> Save -> S01 (new city)
|
||||
happy path clicks: 4 (open list, tap search, type, tap result/Add)
|
||||
edge: ambiguous names, postal code, no results, duplicate city
|
||||
|
||||
F03 Delete a city
|
||||
S02 swipe left
|
||||
happy path clicks: 1 swipe
|
||||
edge: undo, deleting the current-location row (not allowed)
|
||||
|
||||
F04 Switch between cities
|
||||
S01 -> S02 -> tap city (or swipe pager on S01, guess)
|
||||
happy path clicks: 2
|
||||
|
||||
F05 Watch rain coming in
|
||||
S01 -> map card -> S06 -> scrub / play
|
||||
happy path clicks: 2
|
||||
edge: region without nowcast, tiles fail to load
|
||||
|
||||
F06 Change units
|
||||
S01 -> S07 -> S08 -> S09 -> pick
|
||||
happy path clicks: 4
|
||||
|
||||
F07 Reorder cards
|
||||
S01 long-press -> S10 drag -> drop
|
||||
edge: cannot move above brief/hourly, layout per city
|
||||
|
||||
F08 React to a severe warning
|
||||
S13 notification -> S01 alert banner -> S11
|
||||
happy path clicks: 2
|
||||
edge: multiple alerts, expired alert, AI brief hidden while alert active
|
||||
|
||||
F09 Enable rain notifications
|
||||
S08 -> notifications toggle -> per-city toggle
|
||||
edge: notification permission denied, battery optimisation kills worker
|
||||
```
|
||||
|
||||
## Components
|
||||
|
||||
| component | variants | states | used on |
|
||||
| --- | --- | --- | --- |
|
||||
| Hero block | city name, big temp, condition, feels-like, H/L | loading, stale | S01 |
|
||||
| Alert banner | minor, moderate, severe, extreme | collapsed, expanded | S01, S11 |
|
||||
| Brief card | text summary | loading, hidden (alert) | S01 |
|
||||
| Hourly strip | temp + icon + precip % per hour | scroll | S01, S04 |
|
||||
| Day row | icon, precip %, low-high bar | pressed | S01 |
|
||||
| Metric card | small square, wide | default, dragging, pressed | S01, S10 |
|
||||
| Gauge / dial | UV, AQI, pressure, wind compass | | metric cards |
|
||||
| Sun arc | sunrise/sunset arc | day, night | sunrise card |
|
||||
| City row | current location, saved | swiping, pressed | S02 |
|
||||
| Search field | | empty, typing, results | S03 |
|
||||
| Map + scrubber | | playing, paused, loading tiles | S06 |
|
||||
| Settings rows | radio, toggle, link | disabled | S08, S09 |
|
||||
| Animated background | per condition, day/night | reduced motion | S01 |
|
||||
| Top app bar | with avatar/menu | | S01, S02 |
|
||||
| Widget | small, medium | | S12 |
|
||||
|
||||
## Inferred data model
|
||||
|
||||
```
|
||||
Location id, name, admin_area, country, lat, lon, timezone, is_current, sort_order
|
||||
evidence: S02, S03, help "Add a location" confidence: high
|
||||
CardLayout location_id, card_type, position
|
||||
evidence: 9to5google "customisations unique per city" confidence: high
|
||||
Forecast location_id, fetched_at, current{temp, feels_like, code, humidity, wind_speed,
|
||||
wind_dir, gusts, pressure, visibility, uv, dew_point, is_day},
|
||||
hourly[], daily[]{date, code, t_min, t_max, precip_prob, precip_sum, sunrise, sunset, uv_max}
|
||||
evidence: S01 cards confidence: high (cache, not user data)
|
||||
AirQuality location_id, aqi, pm2_5, pm10, o3, no2, pollen{grass, birch, ...}
|
||||
evidence: AQI/pollen cards confidence: high
|
||||
Alert id, location_id, event, severity, headline, description, agency, onset, expires
|
||||
evidence: help + alert banner, At a Glance two-line alert confidence: medium
|
||||
Settings temp_unit, precip_unit, wind_unit, pressure_unit, visibility_unit, theme,
|
||||
vibrations, brief_enabled, notif_tomorrow, notif_severe
|
||||
evidence: S08, S09 confidence: high
|
||||
NotificationPref location_id, rain_alerts confidence: medium
|
||||
```
|
||||
|
||||
Relationships: Location 1-n CardLayout, Location 1-1 Forecast (cached), Location 1-1 AirQuality, Location 1-n Alert, Location 1-1 NotificationPref. No user accounts needed (local only).
|
||||
|
||||
## Feature matrix
|
||||
|
||||
See `features.csv`. Must: 18, should: 14, could: 7, skip: 4 (design + widgets raised to must).
|
||||
|
||||
## Out of scope (cannot or should not be cloned)
|
||||
|
||||
- Google's own forecast and nowcasting models (MetNet / NowCast): proprietary. Replace with Open-Meteo (forecast, AQI, pollen, geocoding), DWD / MeteoAlarm (alerts), RainViewer or DWD radar (map).
|
||||
- Gemini-based Weather Brief and personal insights from Calendar/Gmail: Google AI and Google data. A rule- or template-based summary is the replacement, or optionally a local LLM.
|
||||
- Location sync via Google account: deliberately left out.
|
||||
- At a Glance / Pixel launcher integration: a system feature.
|
||||
- Google's illustrations, icons, animations and the "Froggy" art: original assets have to be made from scratch.
|
||||
|
||||
## Size
|
||||
|
||||
Screens 15, flows 9, entities 7. Hard parts: (1) the precipitation map with timeline (tile sources, licences, animation), (2) reliable background notifications/alerts without Play Services (WorkManager, Doze), (3) polished animated backgrounds + homescreen widget. Size: M (a few weeks) for a native Android app (Kotlin/Compose).
|
||||
Reference in New Issue
Block a user