myweather / DOCUMENTATION← Back to website
DOCUMENTATION / TRD

Technical Requirements Document

How the MyWeather Android application is structured, what it depends on, and how its release should be built and verified.

Version 1.0 · DraftNovember 8, 2026MyWeather / Android

01 Technical summary

MyWeather Motion is a hybrid Android application authored in MIT App Inventor. Native AI2 components handle location services, HTTP requests, persistence and timing, while the visual dashboard is bundled as HTML/CSS/JavaScript and rendered in a WebViewer.

Source of truth

Technical facts are based on the preserved MyWeather_PROJECT_RENAMED.aia snapshot. Runtime behavior and Play publication status still require end-to-end verification.

02 Project & build metadata

FieldValue from project
ProjectMyWeather
Packageappinventor.ai_renzterrie.MyWeather
Display app name in snapshotMyWeather Motion
Source version4.0 (version code 4)
FrameworkMIT App Inventor (AI2, blocks)
UI renderingHTML + CSS + JS inside WebViewer
Core providerOpen-Meteo Forecast and Geocoding APIs
Responsive settingResponsive
App theme metadataLight NoActionBar; dark UI styled separately

The project’s editable properties may change before release. Confirm actual signed build metadata rather than assuming the stored snapshot matches the uploaded Play version.

03 System architecture

Android UI / App Inventor Screen
↕ WebViewer bridge
Local weather_motion.htmlHTML + CSS animations + JavaScript rendering
↕ structured payload / events
AI2 block logicLocationSensor · Web · Clock · TinyDB · Notifier
↕ HTTPS
Open-Meteo forecast & geocoding APIs

Presentational code runs locally in the bundled asset, while AI2 handles device integration. The Android app therefore has no requirement for a custom backend server to fetch forecast data.

04 Native components & responsibilities

Component found in sourcePurpose
WebViewerMotionDisplays the local HTML interface
LocationSensor1Obtains coordinates after user permission
Web1Requests Open-Meteo forecast JSON
WebCitySearches city names through geocoding API
Clock1Time-based refresh / scheduling support
TinyDB1Saves selected values and preferences locally
Notifier1Presents native alerts / feedback when used

05 Weather & geocoding APIs

Current and daily forecast

GET https://api.open-meteo.com/v1/forecast with latitude, longitude, current fields, daily fields, 3-day horizon, timezone and requested temperature units.

current=temperature_2m,relative_humidity_2m,
  apparent_temperature,is_day,precipitation,
  weather_code,wind_speed_10m

daily=temperature_2m_max,temperature_2m_min,
  precipitation_probability_max,weather_code,
  sunrise,sunset,uv_index_max

forecast_days=3&timezone=auto

Search a city

GET https://geocoding-api.open-meteo.com/v1/search?name=.... The input must be URL-encoded; use a selected result’s coordinates to request forecasts.

API practices

Use HTTPS, validate error status and response shape, avoid overly frequent refreshes and show sensible UI states if an API endpoint cannot be reached. Consult provider terms and attribution guidance before a production release.

06 Data model & storage

Data groupFields / examplesStorage
Selected locationCity, latitude, longitudeIn-memory; saved-city support in TinyDB
PreferencesTemperature unitTinyDB local preference
Current forecastTemp, feels-like, humidity, wind, code, precipitationRuntime response
Daily forecastHigh/low, weather code, rain probability, sunrise/sunset, UVRuntime response
UI stateLoading, error, last updatedRuntime / WebViewer

Do not claim no personal data processing solely from local preference storage. Complete a data-flow review and accurate privacy disclosures before publication.

07 WebViewer data flow

  1. The user requests GPS, searches a city, switches units or refreshes.
  2. AI2 blocks receive the action and resolve a location when needed.
  3. Web1 performs the forecast request and parses the returned JSON.
  4. Relevant values are passed into the embedded weather dashboard.
  5. The JavaScript UI updates text, forecast tiles and condition-driven effects.
  6. A failure state is surfaced and allows another attempt.

App Inventor’s block-to-WebViewer contract should be maintained as a typed, documented message structure. Sanitize dynamic text before rendering it in HTML and avoid injecting untrusted scripts or markup.

08 Permissions & security

  • Location: used for optional current-location weather. Denial should not block city search.
  • Internet: needed for API requests, search and forecast refresh.
  • Local preference storage: TinyDB retains app choices on the device.
  • APK distribution: serve release builds over HTTPS and publish hash/signing details for independent integrity checks where practical.
  • WebViewer: render the bundled local HTML and restrict unnecessary external navigation, scripting bridges and untrusted content.

The privacy policy and Google Play Data safety declarations must reflect the tested, final APK/AAB, platform SDKs and actual network behavior.

09 Nonfunctional technical requirements

CategoryEngineering requirement
PerformanceKeep UI responsive while requests execute; avoid duplicate refreshes
ResilienceHandle timeouts, empty geocoding results and malformed responses
ResponsivenessTest Android portrait layout across narrow and wide screens
AccessibilityMeaningful labels, clear focus/tap states, readable text contrast
AnimationsPrefer transform/opacity; avoid heavy continuous main-thread work
ObservabilitySurface last-updated and error information without exposing sensitive coordinates unnecessarily
MaintainabilityKeep weather-code mapping, display logic and native API logic reasonably separated

10 Build, package & distribution

  1. Open the .aia project in MIT App Inventor and review Screen1 components/blocks.
  2. Confirm project name MyWeather, version code, signing strategy, and package appinventor.ai_renzterrie.MyWeather.
  3. Use the appropriate MIT App Inventor build command to produce an APK for direct download or an AAB for Play Console. They are not interchangeable.
  4. Test the signed release build on supported Android versions before posting download links.
  5. For direct download, host the actual APK under releases/MyWeather.apk (or a trusted HTTPS URL) and update the website config.js.
  6. For Google Play, only link a confirmed live listing after the app is available.
Publishing distinction

Uploading an AAB to Play Console does not automatically make a standalone installable APK available on this website.

11 Verification matrix

TestExpected result
Startup with GPS enabledLocation resolved; conditions displayed
GPS permission deniedManual city search remains available
Valid international cityCoordinates resolved; values update
Empty/invalid cityHelpful message; no crash
Offline networkRequest error visible; retry option works
Toggle °C ↔ °FValues/labels consistent; preference persists
Different weather codesAppropriate conditions and effects shown
Three-day outlookDates, icons and temperatures consistent
Background/resumeNo stale or duplicate requests / UI lock
Release APK and AABCorrect package/version, successful installation & launch

These are proposed checks. Record device, Android release, result, evidence and defect reference during testing.

12 Known risks & future engineering

  • MIT App Inventor platform updates may alter component versions and build behavior.
  • Provider API changes or unexpected weather-code values may require parsing and display adjustments.
  • WebViewer behavior can vary by Android WebView version.
  • Store compliance, SDK requirements and privacy disclosures should be rechecked at submission time.
  • Potential enhancements: stronger caching, request debouncing, a clearer typed bridge contract and an automated regression checklist.
✦End of TRD

MyWeather — weather in motion.

Return to MyWeather →