# 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