---
# System prepended metadata

title: Golf Galaxy Home Page Planning Doc

---

# Golf Galaxy Home Page Planning Doc
[TOC]

# Overview
    This is to ouline the Golf Galaxy white label app Home page implemantation planning.
    

## Open Questions

1. Do we need to create Home as package manager for Home Tab?


## Shop Tab

## Hero Carousel
:::info
  Hero Carousel going to contain View's, models, network request. This is going to be in SwiftUI component. 
  
  Data Comes from Homr
:::
  

**Assumptions:**
  - Hero Carousel going to be part of Home package with its own folder structure.

## Taxo 
::: info 
 Taxo with shop by Category header going to part of Home package.
 It contains view, viewModels, network request.
 
 Data Comes from Homr
:::

* Notes: 
- Shop by Category header is not clickable until future story

## Account Snapshot
::: info
This has two states 
 - Signed In
     - It contains collapsible/expandable part of scorecard progress.
 - Guest 
     - It contains Imageview and SignIn or Create account and My Favorites. It's not expandable/collapsible
:::

**Questions:**
- Is Signed in state part of this iteration?

## My Lists

Question:
- Is this part of MVP?

## Recently Viewed and Recommended Just for You
:::info
 This going to contain viewModels, network request.
 
 Data Comes from Certona
:::

Notes:
- View should be reusable component. 
- Need to check implementation of SAYT Top product View component. 

### Questions
- Do we need to have Reusable component package?

**Notes:**
- Firebase remote configurations for configuring order of cards.
- Firebase Feature flag for showing/hiding cards.
- On Error state, Hide the card (Ghosting state)

---------------------
## Discover Tab 

::: info
It going to have 3 types of UI cards differentiated by value coming from HomR.

:::

**Notes:**
- Create Reusable components in package.
- Dead links until future iterations.


------------------
## My Store Tab

:::info
This will be a store locator implementation utilizing the Brandify API.
:::

- If location services have been enabled, we will show the closest stores within 100 miles.
- Will be using MapKit

**Notes:** 
- We will require a location manager
- Data will come from Brandify API. This should be abstracted for when we decide to move away from brandify and start using our internal EAT services.
- UI building blocks for store list and store details.
- Store Details will have dead links until future iteration.

**Design Questions:**
- 100 mile radius for stores; is this too big?
- There's a chevron on the "call" cell instead of of just a button
- We will need to know more information regarding the "enabled location" map: How will users/stores be represented?
- Store cells returned from search all have "Store info" instead of chevron
- In the figma, the Select Store button is missing for permission enabled store list. 

Example cURL for brandify API:
```cURL= 
curl --location --request POST 'https://hosted.where2getit.com/dickssportinggoods/rest/locatorsearch' \
--header 'User-Agent: DSG.ScoreCardConsumerApp/4.8.7 (com.dsg.qa.mobile.consumer; build:850; iOS 13.3.0) Alamofire/4.8.1' \
--header 'Accept-Encoding: gzip;q=1.0, compress;q=0.5' \
--header 'Content-Type: application/json' \
--header 'X-acf-sensor-data: 1,i,scUXdLRr9eSsVj5ObvBduziyAMEIZJTcHIdgxy6rg5kplhSOjhlnng8bcHuJlD+wywve+F6dJnB2slqeSs/85cTDFf1897aJa6dsOKuP9b61Yvzn9sy2mp4kbTPZnHhzQCrrJIKdWjRSFVc4Vk+Y7oDFjlDcGqjR9k2YLHTKWqw=,rhnb2AnJw4GRNoU7mytODc14imLxWYUvDyu+a750AWwl3hZyHykYbgkWEMnjiU8o0GUK7w0PHcKrYf4tmPs4jy//oB/SsNHGaI51tCGt4U3zxbwZwzOsCKkNUWVbSg+y1XB+mZEtZ9Ae1MMNSGf3CsudWKcc5q1IHo690IxytSw=$5OJ+772SAF5zUJIf5KuqTRUxUCLCDCiwj+7h/Ws+nU1x0uTYjBjLO3AVTJsUKOyIvQnyzfGK9sfzmnM9GeA8HD9lwLNNrRaFPUdUZW9Svh2puU0hfVn/lSnby9sB4hnXBMGtvej5GthTPAhY0l5qud+imS8CCyXEiN2PbeHah7jM3mBTi7Fde37C4hEIxjoypUkYlWU9a1CRFEWsM5vxfc/uqqdS/RzINaooGTxYK09MX8ZlbUR8szQ2mNKu6cTKscrE7eDpRyMU9uM899UvDc+QNic1lMh7NpuGgkPXsK5T6g68F5H0wXfaYNBu0DQlGpO0/y7/WjvkEwzKYVL30AP2EtLTi91O5f1+aqxi9WOqqIlBL7zNTTA7U54kBco1RksYRMLs01dsFq1uZdo1I8vz8uYzaqqjtiHyEhWz1B4CDYvXYzsWGtHFv0LaJnFuOCMbUU8xgMe6td0LsyCmVMXVHrHAFcKZRCeq/Qh6WhEgUkb6Zhl1Q/86vfK+qKtfvqm562t0b6fYI/ewaJW5Yts4t+38gUGHFXyi2SEYLVrL340N0fnIonJP0LbGQNfmfWZloRzoVOcrWCifP/SrUZHYxrGqwB20NuLNHW4YoYBSLsIu/SPpTDwJE/paYk9JGGyjjE+7Lvm0SApPn86IqHcaca4qia1Ykq57wcheiMFjW7xqy6OUvNr+tJ+kohhl3PCjKTv3gRtZL3O0ky4WD+ltKY80jxXRfWsUGL+MrPznVZI021mFmjoJBeiPpY+nv1rLII6hPUXbKLrE7BFmAzdn6MpRtJlIUkvdrQeoJEwCy0b35dqnFaOV9xjhWElq$8,7,6' \
--header 'Accept-Language: en;q=1.0' \
--data-raw '{"request":{"geoip":0,"appkey":"17E8F19C-098E-11E7-AC2C-11ACF3F4F7A7","formdata":{"where":{"brandname":{"eq":"Dicks Sporting Goods"}},"limit":15,"searchradius":"100","atleast":1,"geolocs":{"geoloc":[{"country":"US","addressline":"15106","latitude":"","longitude":""}]},"dataview":"store_default"}}}'
```
--------------
### Open Questions 
- What is the data refresh rule for firebase and all other API's?
- What is the API's to get shop categories?
- Why does Shop Landing View contain tabs? (Shop discover and mystore) How will our framework communicated with the other framework? Delegate?


------------
Proposed Architecture:

```graphviz
digraph hierarchy {

                nodesep=.5 // increases the separation between nodes

                node [color=Red,fontname=Courier,shape=box] //All nodes will this shape and colour
                edge [color=Blue, style=dashed] //All the lines look like this

                HomeView->{Shop Discover MyStore}
                Shop->{HeroCarousel Taxo Snapshot MyList RecentlyViewed RecommendedForYou}
                Discover->{HeroList}
                MyStore->{StoreList StoreDetails}
}
```

- Shell app contains setTapped method
- HomeView would be main view that contains the Shop, discover, and my store views. It would also contain conditional logic based on selected tab. 
- We could add binding for the selectedTab from the shell app.
    - This could define the view that is shown



---
__Setup of binding for selected tab__
```mermaid
classDiagram

class ShellApp {
- SelectedTab (State)
}
class HomeView {
- SelectedTab (Binding)
}

ShellApp --> HomeView

HomeView --> SelectedTab

SelectedTab --> Shop
SelectedTab --> Discover
SelectedTab --> MyStore
Shop --> ShopView
Discover --> DiscoverView
MyStore --> MystoreView
```

### Hackmd Meeting Notes:
- Cautious of shop framework usage
- WORK TO DO: New repo, branch off of that repo, merge work into repo (Keep folder structure completely separate)
    - Create folder for tests
    - Theme project only 