diff --git a/Design.md b/Design.md index 842ad1b..b671c25 100644 --- a/Design.md +++ b/Design.md @@ -2,14 +2,25 @@ To allow users to enter up to 8 locations based on zip codes or lat/long and have the highs and lows display on a Celtic Wheel type layout based on the movement of the sun and seasons of the year. +# Components + +## 1. Front End + +Developer: Hyperling + +Language/Framework: Flutter + +### High-Level Description + +Simple UI with a clock-like display. +8 clickable pie wedges allow the user to choose a location for weather to be fetched. + | | SS | CQ | | | --- | --- | --- | --- | | CQ | | | FE | | SE | | | CQ | | | CQ | WS | | -## Explanation - SS = Summer Solstice, CQ = Cross Quarter, FE = Fall Equinox, @@ -26,18 +37,33 @@ The day is an estimate which typically actually spans between the 21st and 24th. Cross quarters are calculated to be `month = (3*X)-1`, `day = 1`. An example is Samhein which is typically November 1. -# Components - -## 1. Front End - -Developer: Hyperling - -Language/Framework: Flutter - -### Description - ### Requirements +#### Pages + +1. Main Page + - Clock-like interface which has a pointer hand going towards the current date. + - 12:00 is summer cross quarter, August 1. +1. Location Entry + - Opens when a pie wedge is clicked. + - Allows the user to enter a zip_code OR lat_num + long_num. Not both. + - Allows the user to enter a location_nickname for local use only. + - Saves these fields in simple cache. Data stays local. +#: 1. Settings? [TBD: Maybe a future version? KISS for now.] + +### Test Cases + +1. App opens and displays any previously entered locations. + - Screenshot of app + +1. App loads weather data, choosing the DB cache first. + + +1. If the DB is down, app accesses weather API directly. + - Take down the DB, or put in an incorrect URL/port. + - Open app and note a few temps and the last_update_date. + - After the update takes place, note the new temps and last_update_date. + ## 2. Database @@ -46,14 +72,37 @@ Language/Framework: Flutter ### Requirements +### Test Cases + ## 3. Weather Fetcher ### Description ### Requirements +### Test Cases + ## 4. Response API ### Description ### Requirements + +Handles request from frontend devices, such as: + +```json +{ + "locations": [ + { "type": "zip", "zip": "47715" }, + { "type": "coords", "lat": "-36", "long": "111" }, + { "type": "zip", "zip": "87519" }, + { "type": "zip", "zip": "85743" }, + { "type": "coords", "lat": "-35", "long": "110" }, + { "type": "coords", "lat": "-37", "long": "112" }, + { "type": "zip", "zip": "86004" }, + { "type": "zip", "zip": "86001" }, + ], +} +``` + +### Test Cases