{"action":"created","issue":{"url":"https://api.github.com/repos/google/WebFundamentals/issues/2320","labels_url":"https://api.github.com/repos/google/WebFundamentals/issues/2320/labels{/name}","comments_url":"https://api.github.com/repos/google/WebFundamentals/issues/2320/comments","events_url":"https://api.github.com/repos/google/WebFundamentals/issues/2320/events","html_url":"https://github.com/google/WebFundamentals/issues/2320","id":120414899,"number":2320,"title":"Create guidance for Progressive Web Apps","user":{"login":"PaulKinlan","id":45510,"avatar_url":"https://avatars.githubusercontent.com/u/45510?v=3","gravatar_id":"","url":"https://api.github.com/users/PaulKinlan","html_url":"https://github.com/PaulKinlan","followers_url":"https://api.github.com/users/PaulKinlan/followers","following_url":"https://api.github.com/users/PaulKinlan/following{/other_user}","gists_url":"https://api.github.com/users/PaulKinlan/gists{/gist_id}","starred_url":"https://api.github.com/users/PaulKinlan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PaulKinlan/subscriptions","organizations_url":"https://api.github.com/users/PaulKinlan/orgs","repos_url":"https://api.github.com/users/PaulKinlan/repos","events_url":"https://api.github.com/users/PaulKinlan/events{/privacy}","received_events_url":"https://api.github.com/users/PaulKinlan/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"PaulKinlan","id":45510,"avatar_url":"https://avatars.githubusercontent.com/u/45510?v=3","gravatar_id":"","url":"https://api.github.com/users/PaulKinlan","html_url":"https://github.com/PaulKinlan","followers_url":"https://api.github.com/users/PaulKinlan/followers","following_url":"https://api.github.com/users/PaulKinlan/following{/other_user}","gists_url":"https://api.github.com/users/PaulKinlan/gists{/gist_id}","starred_url":"https://api.github.com/users/PaulKinlan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PaulKinlan/subscriptions","organizations_url":"https://api.github.com/users/PaulKinlan/orgs","repos_url":"https://api.github.com/users/PaulKinlan/repos","events_url":"https://api.github.com/users/PaulKinlan/events{/privacy}","received_events_url":"https://api.github.com/users/PaulKinlan/received_events","type":"User","site_admin":false},"milestone":null,"comments":10,"created_at":"2015-12-04T14:44:41Z","updated_at":"2015-12-18T09:12:14Z","closed_at":null,"body":"#### Goals\r\n\r\nThe developers will learn:\r\n\r\n* What progressive web apps are and the core concepts behind them\r\n  * It should be clear that these experiences work everywhere but are accelerated in modern browsers.\r\n* Examples of what we believe are great progressive web apps that they can use as a starting reference\r\n  * Expand on the case studies with deep technical dives.\r\n* The best ways to think about structuring my app to be a progressive web app.\r\n  * There are several valid ways of building a prog-web-app, we should enumerate them and present the best practice for each.\r\n* How to start apps from a complete, working scaffold and evolve it as needed.\r\n* How to create a bespoke App/Shell application from scratch.\r\n* How to layer on more advanced experiences\r\n  * Push Notifications, BLE, Physical Web etc.\r\n* How to add progressive web app capabilities to my existing codebase.\r\n\r\n#### Tasks\r\n\r\nThis is bit below is being worked on.\r\n\r\n* [X] Create a landing page: \r\n  * [X] A clear definition of progressive web app’s \r\n  * [ ] Point to live examples.\r\n  * [ ] An overview of all of the platform pieces involved in a progressive web app. What they provide, what their browser support looks like, and how they fit together.\r\n     * [ ]  Guidance for Service Worker and Offline\r\n       * [ ] Udacity Course\r\n       * [ ] Web Fundamentals explainer (it never landed)\r\n     * [ ] Guidance for Add to Homescreen and installability\r\n       * [ ] Udacity Course\r\n       * [ ] Web Fundamentals explainer (it needs to be tidied)\r\n     * [ ] Guidance for Server Rendering\r\n     * [ ] Guidance for Progressive Enhancement\r\n     * [ ] Guidance for RAIL - weave existing docs and guidance in.\r\n     * [ ] Guidance for Native Interactions (Sharing for example)\r\n       * [ ] Udacity Course\r\n       * [ ] Web Fundamentals explainer \r\n     * [ ] Guidance for TLS - this already exists on /web/fundamentals to an extent, needs to be updated and referenced\r\n\r\n* [ ] Create a Your First Progressive Web Apps guide (#2375)\r\n \r\n* [ ] Create Canonical Apps and case studies\r\n  * [ ] A handful of case-studies with different verticals and use-cases.\r\n  * [ ] A complete demo applications that people can play with on a mobile device. \r\n  * [ ] A walkthrough that points out each of the progressive web app-specific features of this demo.\r\n\r\n* [ ] Create a section on How to structure your app to be a progressive web app.\r\n  * [ ] An overview of what the goals of the app-shell architecture are, and how it relates to SW & progressive web app. (strongly highlight the progressive nature).\r\n  * [ ] A few specific examples of App/Shell-compliant structures, and their strengths/weaknesses.\r\nLearn what my options are for getting started.\r\n  * [ ] Testing strategies locally and in staging environments\r\n  * [ ] Complete list of tools, templates, and examples available to me, and what they provide. Should call out a clear starting point.\r\n\r\n* [ ] Create 5 minutes starter pack and guide: Start building from a complete, working scaffold and evolve it as needed. (App Shell project + Guidance)\r\n  * [ ] A codelab/step-by-step docs that arrive at a basic set of components/boilerplate for a working Progressive Web App.\r\n  * [ ] A complete, out-of-the-box working kit that I can download and get something visible in 5 mins, that looks kind of like the thing I want to build.\r\n  * [ ] Examples and Guidance for verticals:\r\n    * [ ] E-Commerce - a shopping app a la Flipkart\r\n    * [ ] Publishing? - a blog/news type app\r\n    * [ ] Media? - a Podcast player / video player?\r\n    * [ ] Gaming? - lots of web games, they need push, offline etc.\r\n  * [ ] Build Components that provide declarative surface area to meet the application requirements of the toolkits they are used in, for handling the breadth of progressive web app features.\r\nShould be able to “fall away” to just the libraries if the developer wants to go “off the rails” with a toolkit. The mapping of features from component ⇒ library API should be relatively straightforward.\r\n  * [ ] UI components that come with the toolkit that I can use to customize by app’s UI, that work seamlessly with the SW architecture.\r\n\r\n* [ ]  Create a how to build a more bespoke App/Shell application from scratch guide.\r\n  * [ ]  Common challenges in building with this model. What big issues am I going to run into? How can I get through them?\r\n  * [ ]  Libraries to help smooth over the rough edges identified above.\r\n  * [ ]  Template(s) to serve as jumping-off points for how to leverage the libraries.\r\n\r\n* [ ] Create a section on upgrading an existing codebase to be a progressive web app\r\n  * [ ]  App Cache to Service Worker\r\n    * [ ] Library\r\n    * [ ] Rationale, Guidance and best practice\r\n  * [ ]  Best practice guidance on how to do it for React, Polymer, MDL etc.  Hints and tips of things that we have found that work well.\r\n  * [ ]  Case studies from developers who have already done this step.\r\n  * [ ]  Create Blog posts or annotated pull requests showing what changes were made to an existing React, Angular, Polymer, MDL, etc. site to restructure it into a progressive web app."},"comment":{"url":"https://api.github.com/repos/google/WebFundamentals/issues/comments/165719722","html_url":"https://github.com/google/WebFundamentals/issues/2320#issuecomment-165719722","issue_url":"https://api.github.com/repos/google/WebFundamentals/issues/2320","id":165719722,"user":{"login":"PaulKinlan","id":45510,"avatar_url":"https://avatars.githubusercontent.com/u/45510?v=3","gravatar_id":"","url":"https://api.github.com/users/PaulKinlan","html_url":"https://github.com/PaulKinlan","followers_url":"https://api.github.com/users/PaulKinlan/followers","following_url":"https://api.github.com/users/PaulKinlan/following{/other_user}","gists_url":"https://api.github.com/users/PaulKinlan/gists{/gist_id}","starred_url":"https://api.github.com/users/PaulKinlan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PaulKinlan/subscriptions","organizations_url":"https://api.github.com/users/PaulKinlan/orgs","repos_url":"https://api.github.com/users/PaulKinlan/repos","events_url":"https://api.github.com/users/PaulKinlan/events{/privacy}","received_events_url":"https://api.github.com/users/PaulKinlan/received_events","type":"User","site_admin":false},"created_at":"2015-12-18T09:12:14Z","updated_at":"2015-12-18T09:12:14Z","body":"@paullewis will add this in.  @jaisanth agreed.  will add it into task list and assign to @paullewis to work out what to do. :)"}}