├── .github └── CODEOWNERS ├── .gitignore ├── README.md ├── data ├── articles │ ├── 3-reasons-why-chromebooks-might-be-good.html │ ├── 4-ways-to-keep-your-nonprofit-safe.html │ ├── a-new-way-to-search-for-content-in-your.html │ ├── a-nonprofits-guide-to-online-security.html │ ├── android-pay-now-in-uk-new-countries-on.html │ ├── android-pay-partners-visa-checkout-and-masterpass.html │ ├── android-pay-says-nei-hou-hong-kong.html │ ├── chrome-faster-and-more-battery-friendly.html │ ├── chrome-on-android-do-more-on-every.html │ ├── competing-for-better-more-inclusive.html │ ├── could-machine-learning-save-sea-cow.html │ ├── experience-daydream-today.html │ ├── experience-virtual-reality-art-in-your.html │ ├── from-hoverboards-to-adult-onesies-gifts.html │ ├── from-la-to-tokyo-youtube-spaces-opens.html │ ├── get-front-row-seat-to-fashion-week-with.html │ ├── get-polling-place-and-ballot-information-quickly-and-easily.html │ ├── get-practical-ideas-innovating-schools-education-air-dec-3rd.html │ ├── getting-college-information-hands-those-who-need-it.html │ ├── gmail-and-google-calendar-get-a-whole-lot-better-on-ios.html │ ├── go-bananas-for-2016-doodle-fruit-games.html │ ├── google-and-youtube-can-help-keep-you-informed-election-day.html │ ├── google-cast-is-now-built-in-to-chrome.html │ ├── google-cloud-platform-tokyo-region-now-open-for-business.html │ ├── happy-13th-birthday-google-ad-grants.html │ ├── honoring-veterans-day-google-expeditions.html │ ├── how-love-chromecast-lot.html │ ├── introducing-chrome-music-lab.html │ ├── introducing-new-donation-tool-on.html │ ├── introducing-the-new-google-play-music.html │ ├── it-takes-teacher-bring-real-world-classroom.html │ ├── it-takes-teacher.html │ ├── keeping-it-un-real-todays-doodle-japan.html │ ├── learning-work-future.html │ ├── look-beyond-surface-celebrating-freuds.html │ ├── onedayiwill-on-international-womens-day.html │ ├── runway-pixel-jeremy-scott-live-case.html │ ├── saving-magic-cat-academy-catastrophe.html │ ├── search-is-jack-of-all-trades.html │ ├── search-results-are-officially-ampd.html │ ├── start-sketching-what-you-see-for-future.html │ ├── tap-pay-uk.html │ ├── tap-pay-yes-android-pay-welcomes-chase.html │ ├── technology-help-teachers.html │ ├── testing-testing-one-two-hands-free.html │ ├── transvoices.html │ ├── unlocking-your-nonprofits-data-insights.html │ └── what-girls-are-good-for-happy-birthday.html ├── chrome.json ├── doodles.json ├── images │ ├── 3-reasons-why-chromebooks-might-be-good.jpg │ ├── 4-ways-to-keep-your-nonprofit-safe.jpg │ ├── a-new-way-to-search-for-content-in-your.jpg │ ├── a-nonprofits-guide-to-online-security.jpg │ ├── android-pay-now-in-uk-new-countries-on.jpg │ ├── android-pay-partners-visa-checkout-and-masterpass.jpg │ ├── android-pay-says-nei-hou-hong-kong.jpg │ ├── chrome-faster-and-more-battery-friendly.jpg │ ├── chrome-on-android-do-more-on-every.jpg │ ├── competing-for-better-more-inclusive.jpg │ ├── could-machine-learning-save-sea-cow.jpg │ ├── experience-daydream-today.jpg │ ├── experience-virtual-reality-art-in-your.jpg │ ├── from-hoverboards-to-adult-onesies-gifts.jpg │ ├── from-la-to-tokyo-youtube-spaces-opens.jpg │ ├── from-la-to-tokyo-youtube-spaces-opens.png │ ├── get-front-row-seat-to-fashion-week-with.jpg │ ├── get-polling-place-and-ballot-information-quickly-and-easily.jpg │ ├── get-practical-ideas-innovating-schools-education-air-dec-3rd.jpg │ ├── getting-college-information-hands-those-who-need-it.jpg │ ├── gmail-and-google-calendar-get-a-whole-lot-better-on-ios.jpg │ ├── go-bananas-for-2016-doodle-fruit-games.jpg │ ├── google-and-youtube-can-help-keep-you-informed-election-day.jpg │ ├── google-cast-is-now-built-in-to-chrome.jpg │ ├── google-cloud-platform-tokyo-region-now-open-for-business.jpg │ ├── happy-13th-birthday-google-ad-grants.jpg │ ├── honoring-veterans-day-google-expeditions.jpg │ ├── how-love-chromecast-lot.jpg │ ├── introducing-chrome-music-lab.jpg │ ├── introducing-new-donation-tool-on.jpg │ ├── introducing-the-new-google-play-music.jpg │ ├── it-takes-teacher-bring-real-world-classroom.jpg │ ├── it-takes-teacher.jpg │ ├── keeping-it-un-real-todays-doodle-japan.jpg │ ├── learning-work-future.jpg │ ├── look-beyond-surface-celebrating-freuds.jpg │ ├── onedayiwill-on-international-womens-day.jpg │ ├── runway-pixel-jeremy-scott-live-case.jpg │ ├── saving-magic-cat-academy-catastrophe.jpg │ ├── search-is-jack-of-all-trades.jpg │ ├── search-results-are-officially-ampd.jpg │ ├── start-sketching-what-you-see-for-future.jpg │ ├── tap-pay-uk.jpg │ ├── tap-pay-yes-android-pay-welcomes-chase.jpg │ ├── technology-help-teachers.jpg │ ├── testing-testing-one-two-hands-free.jpg │ ├── transvoices.jpg │ ├── unlocking-your-nonprofits-data-insights.jpg │ └── what-girls-are-good-for-happy-birthday.jpg ├── nonprofits.json ├── search.json ├── shopping_payments.json └── top_stories.json ├── gulpfile.js ├── images ├── news-icon-128.png ├── news-icon-192.png ├── news-icon-32.png └── news-icon-512.png ├── index.html ├── manifest.json ├── package-lock.json ├── package.json ├── polymer.json ├── push-manifest.json ├── server ├── app.yaml ├── package-lock.json └── package.json ├── service-worker.js ├── src ├── lazy-resources.js ├── news-analytics.js ├── news-app.js ├── news-article-cover.js ├── news-article.js ├── news-data.js ├── news-drawer.js ├── news-gpt-ad.js ├── news-header.js ├── news-icons.js ├── news-img.js ├── news-list-featured-item.js ├── news-list-item.js ├── news-list.js ├── news-nav.js ├── news-network-warning.js ├── news-path-warning.js ├── news-side-list.js └── news-snackbar.js └── sw-precache-config.js /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @keanulee @frankiefu 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # NEWS 2 | 3 | ## Setup 4 | ```bash 5 | $ git clone https://github.com/polymer/news.git 6 | $ cd news 7 | $ npm i 8 | $ npm start 9 | ``` 10 | 11 | ## Build 12 | ```bash 13 | $ npm run build 14 | ``` 15 | 16 | ## Test the build 17 | To test prpl-server build: 18 | ```bash 19 | $ npm run serve:prpl-server 20 | ``` 21 | To test static build: 22 | ```bash 23 | $ npm run serve:static 24 | ``` 25 | 26 | ## Deploying 27 | 28 | Our [production deployment of NEWS](https://news.polymer-project.org/) is hosted on App Engine with Node.js. It can be deployed with [the same steps as PWA Starter Kit](https://polymer.github.io/pwa-starter-kit/building-and-deploying/#deploying-prpl-server). 29 | -------------------------------------------------------------------------------- /data/articles/a-new-way-to-search-for-content-in-your.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
We use apps to call friends, send messages or listen to music. But sometimes, it’s hard to find exactly what you’re looking for. Today, we’re introducing a new way for you to search for information in your apps on your Android phone.

61 |

With this new search mode, called In Apps, you can quickly find content from installed apps. To access this feature, go to the Google app on your Android phone and find the In Apps tab.

62 |
63 |
64 | 65 | 66 | 67 | 68 |
69 |
70 | 71 | 72 | 73 | 74 | 75 | IPA Name Search Demo - Nexus (FB Messenger).gif 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 |
84 |
A new search mode in the Google app, showing current and upcoming apps
85 |
86 | 87 |
88 |
89 | 90 | 91 | 92 | 93 |
94 |
Here are a few examples of what you can do with this new search mode:
95 |
    96 |
  • Find your contacts and messages. Easily find the friend you want to catch up with, or the name of the new sushi place that your friend told you about last month — just search for [sushi] and find the message.
  • 97 |
  • Listen to your favorite running song or watch that sneezing panda video for the 15th time — all in one place.
  • 98 |
  • Stay organized with your tasks and notes. Want to check off items on your grocery list? No problem, just search for [groceries].
  • 99 |
Today this experience works with apps like Gmail, Spotify and YouTube. In the coming months, we’ll also be adding more apps, including Facebook Messenger, LinkedIn, Evernote, Glide, Todoist and Google Keep. Searching your personal results happens 100 | entirely on your phone, so you can search even when you're not connected to WiFi or cellular data. Only you can see your personal results, and you can control what apps appear by going to Settings within the Google app.

And with the upcoming 101 | LG V20 phone, you'll be able to access the new In Apps mode directly with a dedicated shortcut on the homescreen and Second Screen. The LG V20 will be the first smartphone with this dedicated shortcut. In addition to searching apps you have 102 | downloaded, on the new LG V20 you’ll also be able to search LG’s pre-installed apps.
103 |
104 | 105 | 106 | 107 | 108 |
109 |
110 | 111 | 112 | 113 | 114 | 115 | IPA 0P Demo - LG.gif 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 |
124 |
A new search mode in the Google app, showing current and upcoming apps
125 |
126 | 127 |
128 |
129 | 130 | 131 | 132 | 133 |
134 |
135 |

So whether you’re using the new LG V20 or the Google app on your Android phone, finding your favorite tune, that long-lost email or your to-do list is easier than ever before.

136 |
137 |
138 | 139 | 140 |
141 |
142 | 143 | 144 | 145 | -------------------------------------------------------------------------------- /data/articles/chrome-faster-and-more-battery-friendly.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
61 |

Last week, we released a new version of Chrome that includes new payment features and performance improvements. In fact, over the last year Chrome has seen double-digit improvements in speed and battery life. These improvements help you get 62 | more done, faster, and we thought you’d like an update.

63 |

Speed has always been a priority for Chrome. People spend so much time in the browser that even tiny page delays can add up to minutes of lost time every day. When measured with tools like Speedometer, 64 | improvements over the last year have made Chrome more than 15 percent faster on both desktop and Android.  That’s good news if you’re working against a deadline or trying to place a last-minute order.

We also know that you want to 65 | get as much browsing time out of your laptop’s battery as possible. So Chrome now uses less battery for sites that people visit the most. For example, Chrome for Windows lets you watch more video on sites like Vimeo, Facebook and YouTube than 66 | it did a year ago. 67 |

68 |
69 |
70 | 71 | 72 | 73 | 74 | 75 | 92 | 93 | 94 | 95 | 96 |
97 |
98 |

Of course, people use their browsers for more than just video. That’s why we’ve been improving battery life across the board, tracking progress using power measurement tools. 99 | As one example, Chrome for Mac now uses 33 percent less power for everything from videos and images to simple page scrolling. Whether you’re planning a vacation or getting work done, you now get more browsing time from a single battery charge.


100 |

We don’t just want Chrome to run faster, we want to help you get things done faster. That’s why we’ve also brought fast, seamless payments to Chrome on Android, including support for Android Pay, by adding support for the PaymentRequest web 101 | standard. So now when shopping online, you can check out with as little as a single tap.

102 |
103 |
104 | 105 | 106 | 107 | 108 |
109 |
110 | 111 | 112 | 113 | 114 | 115 | New Payments at Groupon 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 |
124 |
New Payments at Groupon
125 |
126 | 127 |
128 |
129 | 130 | 131 | 132 | 133 |
134 |
135 |

Faster browsing, faster checkouts, and longer battery life — we think you’ll enjoy the latest release of Chrome.

136 |
137 |
138 | 139 | 140 |
141 |
142 | 143 | 144 | 145 | -------------------------------------------------------------------------------- /data/articles/competing-for-better-more-inclusive.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
61 |

When athletes from around the world come together, some of them compete for the glory of winning. When the 6,500 athletes from across the globe competed at the 2015 Special Olympics World Games, they were playing for so much more — acceptance 62 | and inclusion of people with intellectual disabilities.   

63 |
64 |
65 | 66 | 67 | 68 |
69 |
70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | Special Olympics 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
97 |
98 | 99 | 100 | 101 | 102 |
103 |
In order to bring together thousands of athletes, tens of thousands of volunteers, half a million spectators, and tens of millions of dollars in donations, the World Games Organizing Committee had a herculean task ahead of them. They needed technology 104 | that could keep up with their ambitious goals.  105 |


Growing an audience for the World Games was paramount. With Google Ad Grants to run an AdWords campaign and Google Analytics to track behavior on their site, they were able to get their message in front of millions of people. Instead of 106 | flying around the world to train their many volunteers, they relied on Google Hangouts to efficiently and cost-effectively spread their knowledge. Twenty-five different sporting events means a lot of things to keep track of. They used Google 107 | Sheets to ensured everyone stayed on the same page and Google Sites to publicize the transportation schedule. 

As Patrick McClenahan, President & CEO of the 2015 Special Olympics World Games says, “When people are educated, 108 | inspired and engaged, hearts and minds are changed.” Carrying their message further means a more inclusive world for us all. 

109 |

Watch members of the World Games explain how they used Google tools here.

110 |

111 |
112 |
113 | 114 | 115 |
116 |
117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /data/articles/experience-virtual-reality-art-in-your.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
Two weeks ago, we introduced Tilt Brush, a new app that enables artists to use virtual reality to paint the 3D space around them. Part virtual reality, part physical reality, 61 | it can be difficult to describe how it feels without trying it firsthand. Today, we bring you a little closer to the experience of painting with Tilt Brush using the powers of the web in a new Chrome Experiment titled Virtual Art Sessions.
62 | 63 |
64 |
65 | 66 | 67 | 68 |
69 |
70 | 71 | 72 | 73 | 74 | 75 | 76 | VR Art COMPILATION.gif 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 |
85 |
86 | 87 | 88 | 89 | 90 |
91 |
Virtual Art Sessions lets you observe six world-renowned artists as they develop blank canvases into beautiful works of art using Tilt Brush. Each session can be explored from start to finish from any angle, including the artist’s perspective 92 | – all viewable right from the browser.
93 |
Participating artists include illustrator Christoph Niemann, fashion illustrator Katie Rodgers, 94 | sculptor Andrea Blasich, installation artist Seung Yul Oh, automotive concept designer 95 | Harald Belker, and street artist duo Sheryo & Yok. The artists’ unique approaches 96 | to this new medium become apparent when seeing them work inside their Tilt Brush creations. Watch this behind-the-scenes video to hear what the artists had to say about their experience:
Virtual Art Sessions makes use of Google Chrome’s 97 | V8 Javascript engine for high-performance processing power to render large volumes of data in real time. This includes point cloud data of the artist’s physical form, 3D geometry data of the artwork, 98 | and position data of the VR controllers. It also relies on Chrome’s support of WebM video and WebGL to produce the 360° representations of the artists 99 | and artwork – the artist portrayals alone require the browser to draw over 200,000 points at 30 times a second. For a deeper look, read the technical case study or browse the project code that is available open source from the site’s tech page.
100 |
101 |

102 | We hope this experiment provides a window into the world of painting in virtual reality using Tilt Brush. We are excited by this new medium and hope the experience leaves you feeling the same. Visit g.co/VirtualArtSessions to start exploring.

103 |
104 |
105 | 106 | 107 |
108 |
109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /data/articles/get-front-row-seat-to-fashion-week-with.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
61 |

Fall fashion season is here — from New York to London, Milan and Paris, the big trends are about to debut at Fashion Weeks around the world. And this year in Google Search on your mobile phone, you can see the latest styles straight from the 62 | runway, hear directly from the designers, shop your favorite looks, see the schedule of events, find related news and follow the action like you’re sitting in the front row — or even backstage.

63 |
64 |
65 | 66 | 67 | 68 |
69 |
70 | 71 | 72 | 73 | 74 | 75 | 76 | fashion week 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 |
85 |
86 | 87 | 88 | 89 | 90 |
91 |
92 |

Straight from the runway and beyond


With partners like BFA and firstVIEW, we’ll not only be showing looks from the runways, but highlights from the entire spectacle, right in Search. From backstage snapshots of the biggest shows, front-row images of your favorite celebs, street 93 | scenes, and of course, the parties, you won’t miss a moment.

94 |

Hear from the designers


95 |

Fashion Week is all about the designers: their inspiration, their creativity and their new collections. As part of an experimental feature, dozens of international designers and brands like Marc Jacobs and Stella McCartney will be posting on 96 | Google Search, sharing inside information before, during and after the shows.

97 |
98 |
99 | 100 | 101 | 102 |
103 |
104 |

Shop your favorite looks


You'll also be able to shop the latest styles from Fashion Week in Search. Not only can you buy directly off the runway from designers like Burberry and Tom Ford, you can shop the current season by Prada, Christopher Kane and others. And 105 | you’ll be able to get inspiration on what to wear from images of front row looks, runway shots and insiders attending the shows.

As Fashion Week ramps up over the next week, you’ll start to see these fashion experiences appear in Search.

106 |

So this year, let Google be your “ticket” to Fashion Week, right on your mobile phone.

107 |
108 |
109 | 110 | 111 |
112 |
113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /data/articles/get-practical-ideas-innovating-schools-education-air-dec-3rd.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 | 56 |
57 | 58 |
59 | 60 |
61 |
62 |

Editor’s Note: As part of the #ItTakesATeacher movement, we’re hosting a free, online conference on December 3 - Education on Air: It Takes a Teacher - to celebrate educators around the world and allow teachers to learn from each other. Register today.

63 |

At Education on Air: It Takes a Teacher, 64 | we’ll be celebrating educators and exploring the future of education and technology. Here’s a glimpse at the sessions we’ve lined up for December 3rd:

65 |

Keynotes from change makers and thought leaders around the globe

66 |

Tune in to hear a welcome from Eric Schmidt, the executive chairman of Alphabet and Dr. Jill Biden, the Second Lady of the United States. Learn the story of how Jahana Hayes became the 2016 US National Teacher of the Year, and get tips on how 67 | she keeps her students engaged.

68 |

You’ll hear from Julia Gillard, 27th Prime Minister of Australia and chair of the Global Partnership for Education, who will talk about the importance of teaching and change, and Linda-Darling Hammond, President and CEO of the Learning Policy 69 | Institute and Stanford University Professor, will present research on the impact of technology in the classroom.

These are just some of the amazing speakers. You can check out the full schedule here.

70 |

Breakout sessions, led by educators for educators

71 |

72 |

Regardless of the age of the students you teach, you'll learn practical tips and tricks from other educators that you can apply right away. Here are just a few of the over 100 sessions for educators:

73 |
    74 |
  • 75 |

    “Fantastic feedback tools for Google Docs” led by Eric Curts, Technology Integration Specialist at SPARCC

    76 |
  • 77 |
  • 78 |

    “Meeting the needs of 21st Century learners - Google Classroom, Learner Agency and Universal Design for Learning” led by Claire Hobson,Deputy Principal, Hobsonville Point Secondary School

    79 |
  • 80 |
  • 81 |

    “Explore your world with Expeditions” led by Jennifer Holland, Google for Education program manager

    82 |
  • 83 |
  • 84 |

    “A chromebook for every student at Wheatley Park School” led by Chris Bateman, Head of Technology & Enterprise at Wheatley Park School

    85 |
  • 86 |
87 |

Get PD credit

88 |

After the event, you can fill out a form to receive a certificate that verifies your attendance at Education on Air, which you can use to apply for PD credit in your state or region.

89 |

We hope these sessions get you excited for Education on Air. Even if you can’t make the whole conference, register now and we’ll let you know when the recordings are available.

90 |
91 |
92 | 93 |
94 | 95 |
96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /data/articles/go-bananas-for-2016-doodle-fruit-games.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
61 |

The summer just got sweeter. Today marks the season opener of the 2016 Doodle Fruit Games. For the next couple of weeks in 62 | the latest Google app for Android and iOS, 63 | journey to an otherwise unassuming fruit stand in Rio, where produce from all over the market are ripe to compete for the title of freshest fruit. 

64 |

The name of today’s featured game is to see who’s the fastest fruit on the track in this berry special race. Don’t be MELONcholy if your sprint turns into more of a smoothie. 

65 |
66 |
67 | 68 | 69 | 70 | 71 |
72 |
73 | 74 | 75 | 76 | 77 | 78 | 08_04_-_Doodle_Fruit_Steps.gif 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
87 |
88 | 89 | 90 | 91 | 92 |
93 |
94 |

If you like the taste of that, be sure to weave your way through the ice cooler to see if you’re the chillest lemon around. Remember: No one likes sour losers!

95 |
96 |
97 | 98 | 99 | 100 | 101 |
102 |
103 | 104 | 105 | 106 | 107 | 108 | 08_04_-_Doodle_Fruit_Lemon.gif 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 |
117 |
118 | 119 | 120 | 121 | 122 |
123 |
124 |

We hope you find these fruits as apPEELing as we do. And don’t forget to share your cherry impressive results with friends to see who claims the top seed. These two games are just a taste of what's in store, so come back to the Google app throughout 125 | the week to catch the featured game of the day.

126 |
127 |
128 | 129 | 130 | 131 | 132 |
133 |
134 | 135 | 136 | 137 | 138 | 139 | 8_4 Combo_Fruit.gif 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 |
148 |
149 | 150 | 151 | 152 |
153 |
154 | 155 | 156 | 157 | -------------------------------------------------------------------------------- /data/articles/google-cast-is-now-built-in-to-chrome.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
61 |

Two years ago we launched Google Cast, an extension for Chrome that allowed you to show content from your favorite websites on the best screen 62 | in your home — your TV — using Chromecast.  Whether watching your favorite show on Netflix, or sharing a photo slideshow at a family gathering, Google Cast makes 63 | it easy to extend the web to the big screen.  

64 |

Since we launched Chromecast, we’ve been working to make casting even better. We've launched new Cast devices like Chromecast Audio and partnered with other 65 | manufacturers to make Cast-enabled TVs and speakers. 66 |  We’ve also made significant improvements in quality, with the vast majority of casting sessions now in HD.

67 |

Casting from Chrome has become incredibly popular: In the past month alone, people have casted more than 38 million times from Chrome, watching and listening to more than 50 million hours of content.

68 |

Today we’re happy to announce that Google Cast is now built fully into Chrome, and anyone can now Cast without having to install or configure anything.  When you’re on websites that are integrated with Cast, 69 | you’ll see the Cast icon appear when you’re on the same network as a Cast device — and with a couple of clicks you can view your content on your TV or listen to music on your speakers:

70 | 72 |

You can also view websites that are not integrated with Cast on your TV by selecting the “Cast…” menu item from the Chrome menu:

74 |

And you can now cast to even more places — including sharing with participants on a video call in Google Hangouts and the Cast for Education app, which we announced recently.  Now 75 | you can share your presentation with your coworkers during a Hangout or to your peers in the classroom.

With Google Cast and Chrome, you can share what you love to watch with those around you. We’re excited to make this available to everyone. 76 |  To get the new built-in Cast functionality all you need to do is make sure you have the latest version of Chrome.
77 |
78 | 79 | 80 |
81 |
82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /data/articles/happy-13th-birthday-google-ad-grants.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
Happy 13th birthday, Google Ad Grants! We launched Ad Grants 13 years ago to offer nonprofits a free online advertising solution to share their causes with the world. 

61 |

Over the years, we’ve learned a lot together about what it means to be a nonprofit in the digital age. And as the industry landscape has changed, we’ve aimed to ensure that AdWords consistently helps to deliver your mission online. 

62 |


We’ve celebrated the ability of groups to change the world — one day, one person, one place at a time. At the same time, we’ve also come to understand the challenges of the nonprofit sector by both listening to your stories, 63 | as well as working directly alongside you. In doing so, we recognized that nonprofits struggle to find the time or resources to manage an AdWords account. So in 2015, we launched AdWords Express for Ad Grants as a part of Google for Nonprofits. 64 | 65 |

66 |
67 |
68 | 69 | 70 | 71 |
72 |
73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | AdGrantsInfographic.width-495.png 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
98 |
99 | 100 | 101 | 102 | 103 |
104 |
With nonprofits’ limited time and resources in mind, we created AdWords Express to be an automated advertising solution that serves the same effective ads on Google Search as standard AdWords. AdWords Express requires less ongoing maintenance 105 | than AdWords, while still delivering an exceptional experience for Ad Grantees.  106 |


With AdWords Express, your nonprofit can create an online ad quickly and easily, attracting more users to your website. There’s minimal ongoing management necessary, and AdWords Express runs and automatically optimizes your ads for you. 107 | Much like AdWords though, you can still reach customers on desktop computers and mobile devices (such as smartphones and tablets), as well as review the effectiveness of your ads in your dashboard. 

108 |


Sign up for Google Ad Grants here. For more information on AdWords Express, how to get started, and country availability, please visit our Ad Grants Help Center

109 |
110 |

To see if your nonprofit is eligible to participate, review the Google for Nonprofits eligibility guidelines. Google for Nonprofits offers organizations like yours free access 111 | to Google tools like Gmail, Google Calendar, Google Drive, Google Ad Grants, YouTube for Nonprofits and more. These tools can help you reach new donors and volunteers, work more efficiently, and tell your nonprofit’s story. Learn more and 112 | enroll here

113 |

114 |
115 |
116 | 117 | 118 |
119 |
120 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /data/articles/honoring-veterans-day-google-expeditions.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 | 56 |
57 | 58 |
59 | 60 | 61 |
62 |
63 |

Editor’s Note: Google Expeditions has a number of lessons to help students learn about our military history this Veterans Day. Students can experience the history of World War I, World War II, and the Civil War, understand the key events that shaped those moments, and visit the memorials that commemorate them. Other Expeditions, such as the Artifacts of the Tuskegee Airmen and Pearl Harbor, let students explore planes, submarines, and ships from these historical periods. In addition to these Expeditions, Google Arts & Culture has a dedicated online collection of artifacts, archives, locations and dozens of stories related to World War II, including an online exhibition, Veterans Day: Reflections on Service, where students can hear stories from our veterans.

64 |

My days as a history instructor at the United States Military Academy are filled with reflections on military history. Having spent 12 years in the United States Army, I find that the lessons we teach can be deeply personal for me.

65 |

Each year in my History of Military Arts course, the students spend time learning about the history of the Civil War. The cadets work through a writing exercise that follows a brigade through a Civil War battle using primary sources. This year, 66 | to culminate the project, I incorporated Google Expeditions into the lesson. With Expeditions, the cadets were able to visit key locations in the Battle of Antietam and immerse themselves 67 | in the physical locale, all while learning key facts about the event. Reading accounts of a battle is always powerful, but showing my students the battlefield helped to paint a richer picture of this important piece of history. The cadets 68 | gained an understanding of the role of terrain in the battle that isn’t possible from written sources alone. Seeing historical images of the battlefield in the immediate aftermath of the battle, side-by-side within the current-day, 360-degree 69 | panorama, was especially powerful.

70 |
71 |
72 | 73 | 74 | 75 | 76 |
77 |
78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | [edu] veterans day 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 |
107 |
108 | 109 | 110 | 111 | 112 |
113 |
114 |

I remember the emotional impact of visiting Arlington National Cemetery on a past Veterans Day. Visiting the graves of over 400,000 active duty service members, veterans, and their families on a day of remembrance brought out a profound feeling 115 | of connection. It made me realize how powerful these hallowed places are for our cultural heritage. This year, with the help of Google Expeditions, students learning about our history and honoring those who have served will also be able to 116 | experience the poignancy of battlefields and landmarks memorializing those who sacrificed so much for our country.

117 |
118 |
119 | 120 | 121 |
122 | 123 |
124 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /data/articles/introducing-chrome-music-lab.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
This year, for Music in Our Schools Month, we wanted to help make learning about music a bit more accessible to everyone by using technology that’s open to everyone: the web. We built a set of 61 | experiments that let anyone explore how music works. It’s called Chrome Music Lab, and you can check it out at g.co/musiclab.
62 | 63 | 64 |
You can play with sound, rhythm, melody, and more. Chrome Music Lab is all built for the web, so you can start playing instantly, whether you’re on a tablet, phone, or laptop. Just like today’s Clara Rockmore doodle, 65 | the experiments are all built with the Web Audio API, a freely-accessible, open web standard that lets developers create and manipulate sound right in the browser. We’re also providing open-source code so that others can build new experiments 66 | based on what we’ve started.
67 | 68 |
Exploring music can help spark curiosity in all kinds of ways. We hope these experiments inspire you – whether they give you a new perspective on music, make you more curious about math and science, or even make you think of new ways to 69 | teach or code.  70 |


71 |

72 | 73 | So crank up the volume and start playing at g.co/musiclab.

74 |

75 |
76 |
77 | 78 | 79 |
80 |
81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /data/articles/introducing-new-donation-tool-on.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
YouTube has over a billion users. That’s almost one-third of all people on the Internet. And everyday those users watch hundreds of millions of hours of video, racking up billions of views – which are now billions of opportunities to do good. 61 |
62 |
63 |

64 | We’re excited to announce a brand new tool that U.S. nonprofits can utilize — donation cards on YouTube! Donation cards make it even simpler to raise money for your cause by allowing your viewers to donate directly from your YouTube video. Even better 65 | — Google covers the processing fees, so your organization will receive 100% of the money donated. Donation cards on YouTube are currently available for U.S. nonprofits and creators, but we look forward to expanding into other countries, so 66 | nonprofits and creators can digitally fundraise across the globe. 

67 |
68 |
69 | 70 | 71 | 72 |
73 |
Using donation cards, YouTube creators can also now raise money through their content to both support your cause and make their videos more impactful! Donation cards for creators in the U.S. enable their subscribers and viewers to donate directly 74 | from their videos. Creators can choose any United States, IRS-validated 501(c)3 public nonprofit organization. Your nonprofit will receive 100% of the money donated.

75 |

Want to see donation cards in action? Check out this video from Madison Beer. 

76 |
77 |
78 | 79 | 80 | 81 | 82 | 83 |
84 |
85 |
86 | 87 |
88 | 89 |
90 | 91 | 92 | 93 | 94 |
95 |
Now it’s your turn. To help you get started, we’ve put together an outreach toolkit – including email templates, social media templates, and fundraising 96 | best practices – to help your nonprofit share the news about donation cards with your supporters and other YouTube creators. With these tools, we hope you’ll empower as many people as possible to learn about your nonprofit and fuel fundraising 97 | on your behalf. 

To see if your nonprofit is eligible to participate in the YouTube for Nonprofit Program, review the Google for Nonprofits eligibility guidelines. 98 | Google for Nonprofits offers organizations like yours free access to Google tools like Gmail, Google Calendar, Google Drive, Google Ad Grants, YouTube for Nonprofits and more. These tools can help you reach new donors and volunteers, work more 99 | efficiently, and tell your nonprofit’s story. Learn more and enroll here.

If you are a U.S. nonprofit looking to add donation cards to your YouTube videos, learn more  100 | here.
If you are a U.S. YouTube creator looking to fundraise for your favorite cause, learn more here

102 |

Nonprofits aren't endorsed by YouTube or Google

103 |
104 |
105 | 106 | 107 |
108 |
109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /data/articles/keeping-it-un-real-todays-doodle-japan.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
Today on our Japan homepage we pay homage to Takizo Iwasaki, the man who has helped many a diner decide what to order at the restaurant, 61 | thanks to his re-invention of wax and plastic replica foods.

62 |

The practice of creating sampuru — derived from the English word "sample"— dates back to the 1920s. Takizo Iwasaki, however, is credited with making the plastic truly fantastic 63 | with his creation of a perfectly “cooked” omelet made of wax in the 1930s. Urban legend has it that when Takizo presented his creation to his wife, she couldn't tell the difference between the sampuru and the real thing!

64 |
65 |
66 | 67 | 68 | 69 | 70 |
71 |
72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | Takizo Iwasaki doodle 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 |
101 |
102 | 103 | 104 | 105 | 106 |
107 |
Many of the world’s replica food continues to be made in Takizo’s home city of Gifu. The visual feasts continued to be handmade to maintain the quality of the sampuru and the unique dishes 108 | that each restaurant requests — although plastic rather than wax is now the material of choice.

Today's Doodle features the original omelet which changed the landscape of sampuru forever and marks what would have been Takizo Iwasaki’s 109 | 121st birthday. 110 |


111 |
112 |
113 | 114 | 115 |
116 |
117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /data/articles/saving-magic-cat-academy-catastrophe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
61 |

Hi, I’m Momo, a student at the illustrious Magic Cat Academy. Heading to class this morning, I thought it would be just like any other day: learn a few new spells, drink some milk, and hang out with my awesome animal and vegetable pals. To my 62 | Halloween horror, hundreds of angry ghosts have invaded the halls of my beloved school — fur real! And now, I ask you to join me to try your hand (or paw!) at fending off these ghastly ghosts with today’s Halloween Google Doodle.

63 |
64 |
65 | 66 | 67 | 68 | 69 |
70 |
71 | 72 | 73 | 74 | 75 | 76 | halloweengif 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 |
85 |
86 | 87 | 88 | 89 | 90 |
91 |
92 |

With a swipe of your paw (or should I say wave of your wand), you can help turn these Halloween tricks into a real treat. But be warned, your spell casting must be quick and precise. To send these ghouls into a tailspin, you must draw the symbols 93 | that appear above the ghosts’ heads on your screen. Wow! Meow!

94 |
95 |
96 | 97 | 98 | 99 | 100 |
101 |
102 | 103 | 104 | 105 | 106 | 107 | game demo 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 |
116 |
117 | 118 | 119 | 120 | 121 |
122 |
123 |

That’s not all: show your friends who’s the real expurrrrrt at casting spells by sharing your score after your sorcery is complete. After all, Halloween festivities are always more fun with your full litter!

124 |
125 |
126 | 127 | 128 | 129 | 130 |
131 |
132 | 133 | 134 | 135 | 136 | 137 | goodwork 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 |
146 |
147 | 148 | 149 | 150 |
151 |
152 | 153 | 154 | 155 | -------------------------------------------------------------------------------- /data/articles/search-is-jack-of-all-trades.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
Today we’re dealing two new hands from the Google Search deck: solitaire and tic-tac-toe. Now you can play two of the oldest and most popular games for all ages, on desktop and in the Google app.

61 |

It’s been said solitaire’s roots are in fortune telling. If that’s true, today your fate rests on your quick wit and the luck of the draw. When you search for “solitaire” 62 | on Google, the familiar patience game may test yours!

63 |
64 |
65 | 66 | 67 | 68 | 69 |
70 |
71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | solitaire.png 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
98 |
99 | 100 | 101 | 102 | 103 |
104 |
105 |

If you’re looking for something a bit simpler, tic-tac-toe is your best bet. In this 106 | game of naughts and crosses, you can select your level of difficulty or even go head to head against a friend. Xs and Os to the winner (hugs and kisses, that is!).

107 |
108 |
109 | 110 | 111 | 112 | 113 |
114 |
115 | 116 | 117 | 118 | 119 | 120 | tictactoe.gif 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 |
129 |
130 | 131 | 132 | 133 | 134 |
135 |
For some other fun tips, try asking Google, “what sound does a pig make?” Or if you’re looking to settle a bet and feeling lucky, “flip a coin” may come in handy.

136 |

These are just a sample of the delightful surprises that await you on Google. After all, Search is for so much more than research and practical matters -- it’s for fun, too!

137 |
138 |
139 | 140 | 141 |
142 |
143 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /data/articles/search-results-are-officially-ampd.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
Along with many others in the open source Accelerated Mobile Pages Project, we’ve been working to make the mobile web experience faster. In February, we launched AMP in the “Top Stories” section of 61 | Google Search, delivering news in a fast and reliable way. In August, we previewed linking to AMPs across the entire mobile search results 62 | page. Today we’re excited to announce that we’re rolling out that faster experience to users across the world.

63 |

Now when you search on your mobile device, you’ll see a label that indicates a page is AMP’d. This doesn’t change Search results but will show you which sites have pages that are ready to load lightning fast.

64 |
65 |
66 | 67 | 68 | 69 | 70 |
71 |
72 | 73 | 74 | 75 | 76 | 77 | AMP-Result-v3-CellPhoneCase.gif 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 |
86 |
87 | 88 | 89 | 90 | 91 |
92 |
Today, the median time it takes for an AMP page to load from Google Search is less than one second. Beyond just saving you time with fast loading pages, AMP will also save you data -- AMP pages on Search use 10 times less data than the equivalent 93 | non-AMP page.

To date we have over 600 million AMP documents created by sites such as eBay (US),Reddit (US), Shopify (CA),  94 | Konga (Nigeria), WikiHow (US), Cybercook (Brazil),Skyscanner (UK), and many 96 | more from all over the world (232 locales and 104 languages). These pages cover retail, travel, recipe, general knowledge and entertainment. That’s a lot of fast-loading pages!

97 |

To find out more about AMP, check out ampproject.org.

98 |
99 |
100 | 101 | 102 |
103 |
104 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /data/articles/start-sketching-what-you-see-for-future.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
61 |

If it ain’t Baroque, don’t fix it: your favorite art contest is back! Today we’re kicking off the 2016 Doodle 4 Google contest, 62 | where art-loving K-12 students from across the U.S., Guam and Puerto Rico are invited to bring their imagination to life in a doodle of the Google logo, using any medium they choose. The winning masterpiece will hang on the Google homepage 63 | for a day, where millions will enjoy it.

64 |
65 |
66 | 67 | 68 | 69 | 70 |
71 |
72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | Doodle 4 Google 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 |
101 |
102 | 103 | 104 | 105 | 106 |
107 |
We like to think about what’s next. So we’re asking kids to imagine what awaits them in the years to come and represent that vision of this year’s theme: “What I see for the future…” Yes, that means anything they see — even if it includes 108 | flying dogs, living on a shooting star, the trip of their dreams, or for the true Futurists out there — perhaps a distant world filled with dazzling new technology of all shapes 109 | and sizes.

110 |

This year’s contest is going to be one for the record books; the future and the ways to depict it are limitless. That’s why we’ll have an all-star group of judges including our very own Google Doodlers help select the National Winner. In addition 111 | to the homepage showcase, the winner will receive $30,000 towards a college scholarship, and the opportunity to work with the Doodle team at the Googleplex in Mountain View. As an added bonus: Their home school will get to spend $50,000 on 112 | technology to help foster the next generation of professionals (and who knows, maybe future Googlers, too!).

113 |
114 |
115 | 116 | 117 | 118 | 119 | 120 |
121 |
122 |
123 | 124 | 125 | Doodle for Google - Share Your Imagination 126 | 127 | 128 |
129 | 130 | 131 | 132 |
133 | 134 |
135 | 136 | 137 | 138 | 139 |
140 |
Submissions are open until December 2, 2016. So for you parents, teachers, babysitters, camp counselors or non-profit leaders out there: Encourage your kids and students to apply. We can’t wait 141 | to see what wonders await in their dreams for the future.

142 |

And now, we bid you farewell as we’re Van Goghing, Goghing, Gone.

143 |
144 |
145 | 146 | 147 |
148 |
149 | 150 | 151 | 152 | -------------------------------------------------------------------------------- /data/articles/transvoices.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 52 | 53 | 54 | 55 | 56 |
57 | 58 |
59 | 60 |
61 |
62 |

Here’s a Google hot-tip: if the quiz night question starts: “In what year did…”? The answer is probably 2016. For the transgender community 2016 was the year that trans storylines broke into mainstream US cinema and TV, and Jeffrey Tambor celebrated 63 | his Emmy by hoping that it would be the last time a trans-female role was played by a non-trans actor. 2016 saw the first transgender person to address a major party convention, and another take a staff role in the White House. The trans movement 64 | has come a long way on the back of tireless individuals making the case for trans-equality and visibility. That activism has been reflected in the response of people around the world, who have chosen to tune in and pay attention.

65 |

However, we are also reminded of the many struggles that continue for the transgender community. 2016 is also the most deadly year on record for transgender people with 23 reported murders in the USA and counting. This year also saw non-transgender 66 | legislators begin to pass laws about where transgender people can use a bathroom.

67 |

At the start of Transgender Awareness Week, we both celebrate the progress that has been made and reflect on the important work that must continue. To help share stories of transgender people as regular people, doing regular things, while also 68 | shining a light on the extraordinary daily challenges that community still faces we created #transvoices. This is a series of short films showcasing three remarkable individuals: Mara Kiesling, Evan Young and Jasmine Morrell, who are all using 69 | technology to support their communities, build their businesses, and help improve the lives of trans people.

70 |
71 |
72 | 73 | 74 | 75 | 76 | 77 |
78 |
79 |
80 | 81 | 82 | #transvoices: Transgender American Veterans Association 83 | 84 | 85 |
86 | 87 | 88 | 89 |
90 | 91 |
92 | 93 | 94 | 95 | 96 |
97 |
98 |

Click to see Jasmine’s and Mara’s stories

99 |

There are many trans-people that work at Google as well. 2016 saw the first internal trans-conference in New York and trans-Googlers and their allies even created a Trans@Google education program for non-trans employees. As a transitioning Googler 100 | people tell me I'm brave, but really I am very lucky to be  surrounded by supportive colleagues in an organization committed to creating a workplace where you can bring your whole self to work - even when you're learning who that self 101 | is.

102 |

In making our films we wanted to give the stories an authentic voice so #transvoices has a trans Director and Consulting Producer in Rhys Ernst and Zackary Drucker, who are well known for their trailblazing work on the set of Transparent. Many 103 | of the crew who worked behind-the-scenes in making the films for #transvoices identify as transgender.

104 |

We also skipped the normal focus on transition. Transitioning is a crazy, difficult period in any trans person’s life, but just like you, trans people would far rather be remembered for their work, for the families they nurture, and the businesses 105 | that they build. In #transvoices we showcase three of those (unusually awesome) everyday lives.

106 |

Nov 14-20 is Transgender Awareness Week. Please take a moment to watch, or to find out more about trans lives. We hope that Mara, Evan and Jasmine’s #transvoices stories can inspire you and yours, as much as they inspire us, and we are really 107 | proud that Google’s products have been able to play some part in helping them on their journey.

108 |
109 |
110 | 111 |
112 | 113 |
114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /data/chrome.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "title": "Experience virtual reality art in your browser", 3 | "time": "Tue, 19 Apr 2016 18:50:00 +0000", 4 | "author": "Jeff Nusz", 5 | "category": "Google Chrome", 6 | "id": "experience-virtual-reality-art-in-your", 7 | "link": "https://blog.google/products/chrome/experience-virtual-reality-art-in-your/", 8 | "imgSrc": "images/experience-virtual-reality-art-in-your.jpg", 9 | "placeholder": "data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYwNjMwQThFQTQxODExRTY5NjdCRDcxN0ZDQzkwNzU3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYwNjMwQThEQTQxODExRTY5NjdCRDcxN0ZDQzkwNzU3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NDY0MDU4NjRBNDEwMTFFNjk2N0JENzE3RkNDOTA3NTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NDY0MDU4NjVBNDEwMTFFNjk2N0JENzE3RkNDOTA3NTciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAmQWRvYmUAZMAAAAABAwAVBAMGCg0AAATaAAAE/QAABTMAAAVg/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wgARCAAFAAoDAREAAhEBAxEB/8QAggABAQAAAAAAAAAAAAAAAAAABAcBAQEAAAAAAAAAAAAAAAAAAAABEAADAQAAAAAAAAAAAAAAAAAAEBMBEQACAwAAAAAAAAAAAAAAAAAQARExQRIBAAAAAAAAAAAAAAAAAAAAEBMAAQQBBQEAAAAAAAAAAAAAAQAQETEh8FFhkbHR/9oADAMBAAIRAxEAAAGcgU//2gAIAQEAAQUC2cz/2gAIAQIAAQUCX//aAAgBAwABBQJf/9oACAECAgY/Aj//2gAIAQMCBj8CP//aAAgBAQEGPwJVOD//2gAIAQEDAT8hsAM63HK+r//aAAgBAgMBPyEN/9oACAEDAwE/IS3/2gAMAwEAAhEDEQAAEE//2gAIAQEDAT8QI8IGQGjaBdrrTxf/2gAIAQIDAT8Qg3//2gAIAQMDAT8Qk3//2Q==", 10 | "summary": "Virtual Art Sessions lets you observe six world-renowned artists as they develop blank canvases into beautiful works of art using Tilt Brush.", 11 | "contentLength": 3584 12 | }, { 13 | "title": "It takes a teacher", 14 | "time": "Wed, 05 Oct 2016 15:00:00 +0000", 15 | "author": "Rajen Sheth", 16 | "category": "Google Chrome", 17 | "id": "it-takes-teacher", 18 | "link": "https://blog.google/topics/education/it-takes-teacher/", 19 | "imgSrc": "images/it-takes-teacher.jpg", 20 | "summary": "Over the next few months we’ll share a series of teacher stories, building towards a global online gathering of educators in December. Join the movement by sharing what teachers mean to you with #ItTakesATeacher.", 21 | "contentLength": 6746 22 | }, { 23 | "title": "Chrome on Android: Do more on every phone and network", 24 | "time": "Mon, 26 Sep 2016 21:18:00 +0000", 25 | "author": "Rahul Roy-Chowdhury", 26 | "category": "Google Chrome", 27 | "id": "chrome-on-android-do-more-on-every", 28 | "link": "https://blog.google/products/chrome/chrome-on-android-do-more-on-every/", 29 | "imgSrc": "images/chrome-on-android-do-more-on-every.jpg", 30 | "summary": "Chrome’s new features were designed to help you do more on the web, no matter what phone or network you may have.", 31 | "contentLength": 7872 32 | }, { 33 | "title": "Chrome: Faster and more battery-friendly", 34 | "time": "Tue, 06 Sep 2016 12:00:00 +0000", 35 | "author": "Chris Cameron", 36 | "category": "Google Chrome", 37 | "id": "chrome-faster-and-more-battery-friendly", 38 | "link": "https://blog.google/products/chrome/chrome-faster-and-more-battery-friendly/", 39 | "imgSrc": "images/chrome-faster-and-more-battery-friendly.jpg", 40 | "summary": "Over the last year Chrome has seen double-digit improvements in speed and battery life.", 41 | "contentLength": 3589 42 | }, { 43 | "title": "Google Cast is now built in to Chrome", 44 | "time": "Mon, 29 Aug 2016 10:00:00 +0000", 45 | "author": "Stephen Konig", 46 | "category": "Google Chrome", 47 | "id": "google-cast-is-now-built-in-to-chrome", 48 | "link": "https://blog.google/products/chrome/google-cast-is-now-built-in-to-chrome/", 49 | "imgSrc": "images/google-cast-is-now-built-in-to-chrome.jpg", 50 | "summary": "With a couple of clicks you can view content on your TV or listen to music on your speakers, right from Chrome.", 51 | "contentLength": 3586 52 | }, { 53 | "title": "3 Reasons why Chromebooks might be a good fit for your nonprofit", 54 | "time": "Thu, 11 Aug 2016 09:59:00 +0000", 55 | "author": "Lauren Gallegos", 56 | "category": "Google Chrome", 57 | "id": "3-reasons-why-chromebooks-might-be-good", 58 | "link": "https://blog.google/topics/nonprofits/3-reasons-why-chromebooks-might-be-good/", 59 | "imgSrc": "images/3-reasons-why-chromebooks-might-be-good.jpg", 60 | "summary": "With Chromebooks, nonprofits can maximize impact, while saving both time and resources.", 61 | "contentLength": 6744 62 | }, { 63 | "title": "Introducing Chrome Music Lab", 64 | "time": "Wed, 09 Mar 2016 16:44:00 +0000", 65 | "author": "Alex Chen", 66 | "category": "Google Chrome", 67 | "id": "introducing-chrome-music-lab", 68 | "link": "https://blog.google/products/chrome/introducing-chrome-music-lab/", 69 | "imgSrc": "images/introducing-chrome-music-lab.jpg", 70 | "summary": "Explore how music works with the Chrome Music Lab. Turn up your speakers and make some music.", 71 | "contentLength": 1520 72 | }, { 73 | "title": "How to love Chromecast a lot", 74 | "time": "Tue, 29 Sep 2015 09:00:00 +0000", 75 | "author": "Shanna Prevé", 76 | "category": "Google Chrome", 77 | "id": "how-love-chromecast-lot", 78 | "link": "https://blog.google/products/chromecast/how-love-chromecast-lot/", 79 | "imgSrc": "images/how-love-chromecast-lot.jpg", 80 | "summary": "", 81 | "contentLength": 5215 82 | }, { 83 | "title": "Technology to help teachers do what they do best", 84 | "time": "Mon, 27 Jun 2016 16:00:00 +0000", 85 | "author": "Bram Bout", 86 | "category": "Google Chrome", 87 | "id": "technology-help-teachers", 88 | "link": "https://blog.google/topics/education/technology-help-teachers/", 89 | "imgSrc": "images/technology-help-teachers.jpg", 90 | "summary": "Updates and improvements to our tools for the classroom.", 91 | "contentLength": 9082 92 | }] 93 | -------------------------------------------------------------------------------- /data/doodles.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "title": "Saving Magic Cat Academy from catastrophe!", 3 | "time": "Mon, 31 Oct 2016 04:00:00 +0000", 4 | "author": "Momo ", 5 | "category": "Doodles", 6 | "id": "saving-magic-cat-academy-catastrophe", 7 | "link": "https://blog.google/products/search/saving-magic-cat-academy-catastrophe/", 8 | "imgSrc": "images/saving-magic-cat-academy-catastrophe.jpg", 9 | "placeholder": "data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjE4QkNBNzM3QTQwQTExRTY5NjdCRDcxN0ZDQzkwNzU3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjE4QkNBNzM2QTQwQTExRTY5NjdCRDcxN0ZDQzkwNzU3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M0UxQkYxREJBNDA5MTFFNjk2N0JENzE3RkNDOTA3NTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6M0UxQkYxRENBNDA5MTFFNjk2N0JENzE3RkNDOTA3NTciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAmQWRvYmUAZMAAAAABAwAVBAMGCg0AAAToAAAFFAAABUwAAAV+/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wgARCAAFAAoDAREAAhEBAxEB/8QAjAABAAAAAAAAAAAAAAAAAAAABQEAAwEAAAAAAAAAAAAAAAAAAAECAxAAAQUBAAAAAAAAAAAAAAAAEAAREgMUBREAAQMEAwAAAAAAAAAAAAAAAQAhEhFhkdECMgMSAQAAAAAAAAAAAAAAAAAAABATAAICAQQDAAAAAAAAAAAAAAARASFBEPAxcVGBkf/aAAwDAQACEQMRAAABR2Q0n//aAAgBAQABBQKrNB+cv//aAAgBAgABBQIf/9oACAEDAAEFAh//2gAIAQICBj8CP//aAAgBAwIGPwI//9oACAEBAQY/AjECLze1xXC68c+ml//aAAgBAQMBPyGfVsl0YG1qP//aAAgBAgMBPyEo/9oACAEDAwE/IZ0//9oADAMBAAIRAxEAABAf/9oACAEBAwE/EJ6MiJlZEDeOXDPv7+R//9oACAECAwE/EIweh//aAAgBAwMBPxB3bLP/2Q==", 10 | "summary": "In celebration of Halloween, we invite you to join Momo the cat in defeating a ghost invasion of her beloved school, Magic Cat Academy.", 11 | "contentLength": 2333 12 | }, { 13 | "title": "Start sketching what you see for the future", 14 | "time": "Wed, 14 Sep 2016 09:00:00 +0000", 15 | "author": "Ryan Germick", 16 | "category": "Doodles", 17 | "id": "start-sketching-what-you-see-for-future", 18 | "link": "https://blog.google/topics/doodles/start-sketching-what-you-see-for-future/", 19 | "imgSrc": "images/start-sketching-what-you-see-for-future.jpg", 20 | "summary": "We’re asking kids to imagine what awaits them in the years to come and represent that vision of this year’s theme: “What I see for the future…\"", 21 | "contentLength": 4406 22 | }, { 23 | "title": "Keeping it un-real with today’s Doodle in Japan", 24 | "time": "Mon, 12 Sep 2016 03:00:00 +0000", 25 | "author": "Miki Matsushita", 26 | "category": "Doodles", 27 | "id": "keeping-it-un-real-todays-doodle-japan", 28 | "link": "https://blog.google/topics/google-asia/keeping-it-un-real-todays-doodle-japan/", 29 | "imgSrc": "images/keeping-it-un-real-todays-doodle-japan.jpg", 30 | "summary": "Sample Takizo Iwasaki's wax and plastic food creations on the Google Japan homepage today. ", 31 | "contentLength": 2928 32 | }, { 33 | "title": "Go bananas for the 2016 Doodle Fruit Games", 34 | "time": "Fri, 05 Aug 2016 03:01:00 +0000", 35 | "author": "Matt Cruickshank", 36 | "category": "Doodles", 37 | "id": "go-bananas-for-2016-doodle-fruit-games", 38 | "link": "https://blog.google/topics/doodles/go-bananas-for-2016-doodle-fruit-games/", 39 | "imgSrc": "images/go-bananas-for-2016-doodle-fruit-games.jpg", 40 | "summary": "Play the 2016 Doodle Fruit Games in the latest Google app for Android and iOS.", 41 | "contentLength": 2797 42 | }, { 43 | "title": "Look beyond the surface - celebrating Freud’s 160th birthday", 44 | "time": "Fri, 06 May 2016 08:11:00 +0000", 45 | "author": "Lauren Nemroff", 46 | "category": "Doodles", 47 | "id": "look-beyond-surface-celebrating-freuds", 48 | "link": "https://blog.google/topics/google-europe/look-beyond-surface-celebrating-freuds/", 49 | "imgSrc": "images/look-beyond-surface-celebrating-freuds.jpg", 50 | "summary": "We've partnered with the Sigmund Freud Museum in Vienna and the Freud Museum London to bring the stories behind Freud’s life and legacy online, and created a Google Doodle.", 51 | "contentLength": 5193 52 | }, { 53 | "title": "#OneDayIWill: On International Women’s Day, share your dream with the world", 54 | "time": "Mon, 07 Mar 2016 11:23:00 +0000", 55 | "author": "Lydia Nichols", 56 | "category": "Doodles", 57 | "id": "onedayiwill-on-international-womens-day", 58 | "link": "https://blog.google/topics/doodles/onedayiwill-on-international-womens-day/", 59 | "imgSrc": "images/onedayiwill-on-international-womens-day.jpg", 60 | "summary": "For this year’s International Women’s Day, we wanted to celebrate the Doodle-worthy women of the future.", 61 | "contentLength": 7145 62 | }, { 63 | "title": "What Girls are Good For: Happy birthday Nellie Bly!", 64 | "time": "Mon, 04 May 2015 11:24:00 +0000", 65 | "author": "Liat Ben-Rafael", 66 | "category": "Doodles", 67 | "id": "what-girls-are-good-for-happy-birthday", 68 | "link": "https://blog.google/topics/doodles/what-girls-are-good-for-happy-birthday/", 69 | "imgSrc": "images/what-girls-are-good-for-happy-birthday.jpg", 70 | "summary": "", 71 | "contentLength": 6233 72 | }] 73 | -------------------------------------------------------------------------------- /data/images/3-reasons-why-chromebooks-might-be-good.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/3-reasons-why-chromebooks-might-be-good.jpg -------------------------------------------------------------------------------- /data/images/4-ways-to-keep-your-nonprofit-safe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/4-ways-to-keep-your-nonprofit-safe.jpg -------------------------------------------------------------------------------- /data/images/a-new-way-to-search-for-content-in-your.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/a-new-way-to-search-for-content-in-your.jpg -------------------------------------------------------------------------------- /data/images/a-nonprofits-guide-to-online-security.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/a-nonprofits-guide-to-online-security.jpg -------------------------------------------------------------------------------- /data/images/android-pay-now-in-uk-new-countries-on.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/android-pay-now-in-uk-new-countries-on.jpg -------------------------------------------------------------------------------- /data/images/android-pay-partners-visa-checkout-and-masterpass.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/android-pay-partners-visa-checkout-and-masterpass.jpg -------------------------------------------------------------------------------- /data/images/android-pay-says-nei-hou-hong-kong.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/android-pay-says-nei-hou-hong-kong.jpg -------------------------------------------------------------------------------- /data/images/chrome-faster-and-more-battery-friendly.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/chrome-faster-and-more-battery-friendly.jpg -------------------------------------------------------------------------------- /data/images/chrome-on-android-do-more-on-every.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/chrome-on-android-do-more-on-every.jpg -------------------------------------------------------------------------------- /data/images/competing-for-better-more-inclusive.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/competing-for-better-more-inclusive.jpg -------------------------------------------------------------------------------- /data/images/could-machine-learning-save-sea-cow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/could-machine-learning-save-sea-cow.jpg -------------------------------------------------------------------------------- /data/images/experience-daydream-today.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/experience-daydream-today.jpg -------------------------------------------------------------------------------- /data/images/experience-virtual-reality-art-in-your.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/experience-virtual-reality-art-in-your.jpg -------------------------------------------------------------------------------- /data/images/from-hoverboards-to-adult-onesies-gifts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/from-hoverboards-to-adult-onesies-gifts.jpg -------------------------------------------------------------------------------- /data/images/from-la-to-tokyo-youtube-spaces-opens.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/from-la-to-tokyo-youtube-spaces-opens.jpg -------------------------------------------------------------------------------- /data/images/from-la-to-tokyo-youtube-spaces-opens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/from-la-to-tokyo-youtube-spaces-opens.png -------------------------------------------------------------------------------- /data/images/get-front-row-seat-to-fashion-week-with.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/get-front-row-seat-to-fashion-week-with.jpg -------------------------------------------------------------------------------- /data/images/get-polling-place-and-ballot-information-quickly-and-easily.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/get-polling-place-and-ballot-information-quickly-and-easily.jpg -------------------------------------------------------------------------------- /data/images/get-practical-ideas-innovating-schools-education-air-dec-3rd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/get-practical-ideas-innovating-schools-education-air-dec-3rd.jpg -------------------------------------------------------------------------------- /data/images/getting-college-information-hands-those-who-need-it.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/getting-college-information-hands-those-who-need-it.jpg -------------------------------------------------------------------------------- /data/images/gmail-and-google-calendar-get-a-whole-lot-better-on-ios.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/gmail-and-google-calendar-get-a-whole-lot-better-on-ios.jpg -------------------------------------------------------------------------------- /data/images/go-bananas-for-2016-doodle-fruit-games.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/go-bananas-for-2016-doodle-fruit-games.jpg -------------------------------------------------------------------------------- /data/images/google-and-youtube-can-help-keep-you-informed-election-day.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/google-and-youtube-can-help-keep-you-informed-election-day.jpg -------------------------------------------------------------------------------- /data/images/google-cast-is-now-built-in-to-chrome.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/google-cast-is-now-built-in-to-chrome.jpg -------------------------------------------------------------------------------- /data/images/google-cloud-platform-tokyo-region-now-open-for-business.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/google-cloud-platform-tokyo-region-now-open-for-business.jpg -------------------------------------------------------------------------------- /data/images/happy-13th-birthday-google-ad-grants.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/happy-13th-birthday-google-ad-grants.jpg -------------------------------------------------------------------------------- /data/images/honoring-veterans-day-google-expeditions.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/honoring-veterans-day-google-expeditions.jpg -------------------------------------------------------------------------------- /data/images/how-love-chromecast-lot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/how-love-chromecast-lot.jpg -------------------------------------------------------------------------------- /data/images/introducing-chrome-music-lab.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/introducing-chrome-music-lab.jpg -------------------------------------------------------------------------------- /data/images/introducing-new-donation-tool-on.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/introducing-new-donation-tool-on.jpg -------------------------------------------------------------------------------- /data/images/introducing-the-new-google-play-music.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/introducing-the-new-google-play-music.jpg -------------------------------------------------------------------------------- /data/images/it-takes-teacher-bring-real-world-classroom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/it-takes-teacher-bring-real-world-classroom.jpg -------------------------------------------------------------------------------- /data/images/it-takes-teacher.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/it-takes-teacher.jpg -------------------------------------------------------------------------------- /data/images/keeping-it-un-real-todays-doodle-japan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/keeping-it-un-real-todays-doodle-japan.jpg -------------------------------------------------------------------------------- /data/images/learning-work-future.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/learning-work-future.jpg -------------------------------------------------------------------------------- /data/images/look-beyond-surface-celebrating-freuds.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/look-beyond-surface-celebrating-freuds.jpg -------------------------------------------------------------------------------- /data/images/onedayiwill-on-international-womens-day.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/onedayiwill-on-international-womens-day.jpg -------------------------------------------------------------------------------- /data/images/runway-pixel-jeremy-scott-live-case.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/runway-pixel-jeremy-scott-live-case.jpg -------------------------------------------------------------------------------- /data/images/saving-magic-cat-academy-catastrophe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/saving-magic-cat-academy-catastrophe.jpg -------------------------------------------------------------------------------- /data/images/search-is-jack-of-all-trades.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/search-is-jack-of-all-trades.jpg -------------------------------------------------------------------------------- /data/images/search-results-are-officially-ampd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/search-results-are-officially-ampd.jpg -------------------------------------------------------------------------------- /data/images/start-sketching-what-you-see-for-future.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/start-sketching-what-you-see-for-future.jpg -------------------------------------------------------------------------------- /data/images/tap-pay-uk.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/tap-pay-uk.jpg -------------------------------------------------------------------------------- /data/images/tap-pay-yes-android-pay-welcomes-chase.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/tap-pay-yes-android-pay-welcomes-chase.jpg -------------------------------------------------------------------------------- /data/images/technology-help-teachers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/technology-help-teachers.jpg -------------------------------------------------------------------------------- /data/images/testing-testing-one-two-hands-free.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/testing-testing-one-two-hands-free.jpg -------------------------------------------------------------------------------- /data/images/transvoices.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/transvoices.jpg -------------------------------------------------------------------------------- /data/images/unlocking-your-nonprofits-data-insights.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/unlocking-your-nonprofits-data-insights.jpg -------------------------------------------------------------------------------- /data/images/what-girls-are-good-for-happy-birthday.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/data/images/what-girls-are-good-for-happy-birthday.jpg -------------------------------------------------------------------------------- /data/nonprofits.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "title": "Introducing new donation tool on YouTube benefiting nonprofits", 3 | "time": "Tue, 26 Jan 2016 17:21:00 +0000", 4 | "author": "Lexi Cotcamp", 5 | "category": "Google for Nonprofits", 6 | "id": "introducing-new-donation-tool-on", 7 | "link": "https://blog.google/topics/nonprofits/introducing-new-donation-tool-on/", 8 | "imgSrc": "images/introducing-new-donation-tool-on.jpg", 9 | "placeholder": "data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkM2MDlBRkZBQTU0QzExRTY4Q0I0REM2NUZDRDYzNUE3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkM2MDlBRkY5QTU0QzExRTY4Q0I0REM2NUZDRDYzNUE3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Q0I1RkZERjlBNTNFMTFFNkI2OENGNTkxRDQ5M0U2NDEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Q0I1RkZERkFBNTNFMTFFNkI2OENGNTkxRDQ5M0U2NDEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAmQWRvYmUAZMAAAAABAwAVBAMGCg0AAATeAAAFBAAABTYAAAVg/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wgARCAADAAoDAREAAhEBAxEB/8QAhAABAQAAAAAAAAAAAAAAAAAABQYBAQEAAAAAAAAAAAAAAAAAAAECEAACAwAAAAAAAAAAAAAAAAAAEAISFBEAAgIDAAAAAAAAAAAAAAAAQRIAETGBQhIBAAAAAAAAAAAAAAAAAAAAEBMAAQMEAwAAAAAAAAAAAAAAEPARQQABIWExUZH/2gAMAwEAAhEDEQAAAacpBn//2gAIAQEAAQUChXWf/9oACAECAAEFAl//2gAIAQMAAQUCX//aAAgBAgIGPwI//9oACAEDAgY/Aj//2gAIAQEBBj8CDMGvJ5m5/9oACAEBAwE/IVwGgf/aAAgBAgMBPyGw/9oACAEDAwE/IYH/2gAMAwEAAhEDEQAAENP/2gAIAQEDAT8Qz+0y2Tus78Jq/9oACAECAwE/EJD/2gAIAQMDAT8QvwH/2Q==", 10 | "summary": "Donation cards make it even simpler to raise money for your cause by allowing your viewers to donate directly from your YouTube video. ", 11 | "contentLength": 3593 12 | }, { 13 | "title": "A nonprofit's guide to online security: So you want to learn the lingo?", 14 | "time": "Fri, 09 Sep 2016 11:06:00 +0000", 15 | "author": "Lexi Cotcamp", 16 | "category": "Google for Nonprofits", 17 | "id": "a-nonprofits-guide-to-online-security", 18 | "link": "https://blog.google/topics/nonprofits/a-nonprofits-guide-to-online-security/", 19 | "imgSrc": "images/a-nonprofits-guide-to-online-security.jpg", 20 | "summary": "You might have heard of terms like “phishing” or “cookies,” but what do they mean?", 21 | "contentLength": 6000 22 | }, { 23 | "title": "Four ways to keep your nonprofit safe & secure online", 24 | "time": "Wed, 06 Jul 2016 21:32:00 +0000", 25 | "author": "Lexi Cotcamp", 26 | "category": "Google for Nonprofits", 27 | "id": "4-ways-to-keep-your-nonprofit-safe", 28 | "link": "https://blog.google/topics/nonprofits/4-ways-to-keep-your-nonprofit-safe/", 29 | "imgSrc": "images/4-ways-to-keep-your-nonprofit-safe.jpg", 30 | "summary": "How to keep your nonprofit (and the community it serves) safe and secure online.", 31 | "contentLength": 8288 32 | }, { 33 | "title": "Unlocking your nonprofit's data insights: Linking Ad Grants and Google Analytics", 34 | "time": "Fri, 17 Jun 2016 20:02:00 +0000", 35 | "author": "Lexi Cotcamp", 36 | "category": "Google for Nonprofits", 37 | "id": "unlocking-your-nonprofits-data-insights", 38 | "link": "https://blog.google/topics/nonprofits/unlocking-your-nonprofits-data-insights/", 39 | "imgSrc": "images/unlocking-your-nonprofits-data-insights.jpg", 40 | "summary": "Google Analytics is your go-to tool for providing insights into user behavior, which can be used to inform Ad Grants.", 41 | "contentLength": 5169 42 | }, { 43 | "title": "HAPPY 13TH BIRTHDAY, Google Ad Grants", 44 | "time": "Fri, 01 Apr 2016 18:19:00 +0000", 45 | "author": "Lexi Cotcamp", 46 | "category": "Google for Nonprofits", 47 | "id": "happy-13th-birthday-google-ad-grants", 48 | "link": "https://blog.google/topics/nonprofits/happy-13th-birthday-google-ad-grants/", 49 | "imgSrc": "images/happy-13th-birthday-google-ad-grants.jpg", 50 | "summary": "We launched Ad Grants 13 years ago to offer nonprofits a free online advertising solution to share their causes with the world. ", 51 | "contentLength": 3557 52 | }, { 53 | "title": "From LA to Tokyo: YouTube Spaces opens production studios to nonprofits free of charge", 54 | "time": "Wed, 30 Mar 2016 16:44:00 +0000", 55 | "author": "Lexi Cotcamp", 56 | "category": "Google for Nonprofits", 57 | "id": "from-la-to-tokyo-youtube-spaces-opens", 58 | "link": "https://blog.google/topics/nonprofits/from-la-to-tokyo-youtube-spaces-opens/", 59 | "imgSrc": "images/from-la-to-tokyo-youtube-spaces-opens.jpg", 60 | "summary": "All enrolled nonprofits with 1,000 or more subscribers are now eligible to apply for production access at YouTube Spaces. ", 61 | "contentLength": 4338 62 | }, { 63 | "title": "Competing for a better, more inclusive world at the 2015 Special Olympics World Games", 64 | "time": "Thu, 24 Mar 2016 17:04:00 +0000", 65 | "author": "Paige Birnbaum", 66 | "category": "Google for Nonprofits", 67 | "id": "competing-for-better-more-inclusive", 68 | "link": "https://blog.google/topics/nonprofits/competing-for-better-more-inclusive/", 69 | "imgSrc": "images/competing-for-better-more-inclusive.jpg", 70 | "summary": "The World Games Organizing Committee needed technology that could keep up with their ambitious goals. ", 71 | "contentLength": 2847 72 | }] 73 | -------------------------------------------------------------------------------- /data/search.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "title": "Google and YouTube can help keep you informed on Election Day", 3 | "time": "Mon, 07 Nov 2016 07:00:00 +0000", 4 | "author": "Shashi Thakur", 5 | "category": "Search", 6 | "id": "google-and-youtube-can-help-keep-you-informed-election-day", 7 | "link": "https://blog.google/products/search/google-and-youtube-can-help-keep-you-informed-election-day/", 8 | "imgSrc": "images/google-and-youtube-can-help-keep-you-informed-election-day.jpg", 9 | "placeholder": "data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjBFNjk0RkY2QTU0MTExRTZCNjhDRjU5MUQ0OTNFNjQxIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjBFNjk0RkY1QTU0MTExRTZCNjhDRjU5MUQ0OTNFNjQxIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTQ4Nzk2NkFBNDFDMTFFNjk2N0JENzE3RkNDOTA3NTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OTQ4Nzk2NkJBNDFDMTFFNjk2N0JENzE3RkNDOTA3NTciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAmQWRvYmUAZMAAAAABAwAVBAMGCg0AAATmAAAFCgAABUYAAAWA/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wgARCAAKAAoDAREAAhEBAxEB/8QAiQABAQEAAAAAAAAAAAAAAAAAAwAHAQEBAAAAAAAAAAAAAAAAAAAAARAAAQUBAAAAAAAAAAAAAAAAIAAQAQIDEhEAAQUAAAAAAAAAAAAAAAAAEQAQATIDEgEAAAAAAAAAAAAAAAAAAAAgEwABAwMEAwAAAAAAAAAAAAABABARIVGBIPBxoTFhsf/aAAwDAQACEQMRAAAB0uxRJY//2gAIAQEAAQUCnTWF1Z//2gAIAQIAAQUCD//aAAgBAwABBQIP/9oACAECAgY/Ah//2gAIAQMCBj8CH//aAAgBAQEGPwKRmVV//9oACAEBAwE/ITkkB4Miq6U5s/8A/9oACAECAwE/ISof/9oACAEDAwE/IdH/2gAMAwEAAhEDEQAAECpP/9oACAEBAwE/EBWXYEPmATIyvY5h9H//2gAIAQIDAT8QAA0t3ZQu/wD/2gAIAQMDAT8QBpmMX3VSX//Z", 10 | "summary": "Stay up to date with election results with Google and YouTube", 11 | "contentLength": 12944 12 | }, { 13 | "title": "Get polling place and ballot information quickly and easily", 14 | "time": "Thu, 13 Oct 2016 13:00:00 +0000", 15 | "author": "Jacob Schonberg", 16 | "category": "Search", 17 | "id": "get-polling-place-and-ballot-information-quickly-and-easily", 18 | "link": "https://blog.google/products/search/get-polling-place-and-ballot-information-quickly-and-easily/", 19 | "imgSrc": "images/get-polling-place-and-ballot-information-quickly-and-easily.jpg", 20 | "summary": "Now when people search for information on where to vote and who’s on their ballot, Google will display state-by-state information about each query to help American voters find the information they need in the lead up to the election.", 21 | "contentLength": 6390 22 | }, { 23 | "title": "Getting college information into the hands of those who need it, when they need it", 24 | "time": "Fri, 30 Sep 2016 13:00:00 +0000", 25 | "author": "John B. King, Jr. ", 26 | "category": "Search", 27 | "id": "getting-college-information-hands-those-who-need-it", 28 | "link": "https://blog.google/products/search/getting-college-information-hands-those-who-need-it/", 29 | "imgSrc": "images/getting-college-information-hands-those-who-need-it.jpg", 30 | "summary": "U.S. Secretary of Education John B. King, Jr., on making College Scorecard information accessible in Google Search and other efforts to improve college access, affordability and outcomes.", 31 | "contentLength": 5442 32 | }, { 33 | "title": "Search results are officially AMP’d", 34 | "time": "Tue, 20 Sep 2016 12:00:00 +0000", 35 | "author": "David Besbris", 36 | "category": "Search", 37 | "id": "search-results-are-officially-ampd", 38 | "link": "https://blog.google/products/search/search-results-are-officially-ampd/", 39 | "imgSrc": "images/search-results-are-officially-ampd.jpg", 40 | "summary": "Now when you search on your mobile device, you’ll see a label that indicates which sites have pages that are ready to load lightning fast.", 41 | "contentLength": 2613 42 | }, { 43 | "title": "A new way to search for content in your apps", 44 | "time": "Tue, 30 Aug 2016 11:16:00 +0000", 45 | "author": "Timo Mertens", 46 | "category": "Search", 47 | "id": "a-new-way-to-search-for-content-in-your", 48 | "link": "https://blog.google/products/search/a-new-way-to-search-for-content-in-your/", 49 | "imgSrc": "images/a-new-way-to-search-for-content-in-your.jpg", 50 | "summary": "With this new search mode, called In Apps, you can quickly find content — contacts, messages, music, videos and notes — all in one place.", 51 | "contentLength": 3409 52 | }, { 53 | "title": "Get a front row seat to Fashion Week with Google Search", 54 | "time": "Thu, 01 Sep 2016 11:25:00 +0000", 55 | "author": "Cameron Mcknight", 56 | "category": "Search", 57 | "id": "get-front-row-seat-to-fashion-week-with", 58 | "link": "https://blog.google/products/search/get-front-row-seat-to-fashion-week-with/", 59 | "imgSrc": "images/get-front-row-seat-to-fashion-week-with.jpg", 60 | "summary": "See the latest styles straight from the runway, hear directly from the designers, shop your favorite looks, see the schedule of events, and find related news, right in Search.", 61 | "contentLength": 2475 62 | }, { 63 | "title": "Search is a Jack of all trades", 64 | "time": "Thu, 25 Aug 2016 12:49:00 +0000", 65 | "author": "Stephen Cognetta", 66 | "category": "Search", 67 | "id": "search-is-jack-of-all-trades", 68 | "link": "https://blog.google/products/search/search-is-jack-of-all-trades/", 69 | "imgSrc": "images/search-is-jack-of-all-trades.jpg", 70 | "summary": "Now you can play solitaire and tic-tac-toe on desktop Search and in the Google app.", 71 | "contentLength": 3052 72 | }] 73 | -------------------------------------------------------------------------------- /data/shopping_payments.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "title": "Android Pay partners with Visa and Mastercard to bring simple checkout to more places online", 3 | "time": "Mon, 24 Oct 2016 16:00:00 +0000", 4 | "author": "Pali Bhat", 5 | "category": "Shopping & Payments", 6 | "id": "android-pay-partners-visa-checkout-and-masterpass", 7 | "link": "https://blog.google/topics/shopping-payments/android-pay-partners-visa-checkout-and-masterpass/", 8 | "imgSrc": "images/android-pay-partners-visa-checkout-and-masterpass.jpg", 9 | "placeholder": "data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjQ2NDA1ODYxQTQxMDExRTY5NjdCRDcxN0ZDQzkwNzU3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2NDA1ODYwQTQxMDExRTY5NjdCRDcxN0ZDQzkwNzU3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NDQ1MjA5NURBNDBEMTFFNjk2N0JENzE3RkNDOTA3NTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NDQ1MjA5NUVBNDBEMTFFNjk2N0JENzE3RkNDOTA3NTciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAmQWRvYmUAZMAAAAABAwAVBAMGCg0AAATrAAAFEwAABVQAAAWO/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wgARCAAKAAoDAREAAhEBAxEB/8QAjAABAQEAAAAAAAAAAAAAAAAAAwAHAQEBAQAAAAAAAAAAAAAAAAACAAEQAAICAwAAAAAAAAAAAAAAACADEAECEgQRAQAABwEAAAAAAAAAAAAAAAEAEDGRIjIDIxIBAAAAAAAAAAAAAAAAAAAAIBMAAgEEAgMBAAAAAAAAAAAAAREAECExYUFR8JGhwf/aAAwDAQACEQMRAAAB0bdcB0qv/9oACAEBAAEFAsWdVs3ZP//aAAgBAgABBQIP/9oACAEDAAEFAg//2gAIAQICBj8CH//aAAgBAwIGPwIf/9oACAEBAQY/AjzDm1VytGk//9oACAEBAwE/IWbfRBLaLO58XfNf/9oACAECAwE/IQlL1//aAAgBAwMBPyEhGXr/AP/aAAwDAQACEQMRAAAQBk//2gAIAQEDAT8QWIySDckNsJ0+f54xuv8A/9oACAECAwE/ECJrg+bj6j3X/9oACAEDAwE/EHAYOxHV/9k=", 10 | "summary": "Google announces strategic partnerships with Visa and Mastercard to bring Android Pay to more places on the mobile web.", 11 | "contentLength": 5017 12 | }, { 13 | "title": "Android Pay says “Nei hou” to Hong Kong", 14 | "time": "Wed, 19 Oct 2016 21:00:00 +0000", 15 | "author": "Pali Bhat", 16 | "category": "Shopping & Payments", 17 | "id": "android-pay-says-nei-hou-hong-kong", 18 | "link": "https://blog.google/topics/shopping-payments/android-pay-says-nei-hou-hong-kong/", 19 | "imgSrc": "images/android-pay-says-nei-hou-hong-kong.jpg", 20 | "summary": "Starting today, Android Pay is available in Hong Kong to help you speed through purchases in stores and in apps. ", 21 | "contentLength": 11230 22 | }, { 23 | "title": "Tap. Pay. Yes! Android Pay welcomes Chase and more", 24 | "time": "Wed, 07 Sep 2016 10:00:00 +0000", 25 | "author": "Pali Bhat", 26 | "category": "Shopping & Payments", 27 | "id": "tap-pay-yes-android-pay-welcomes-chase", 28 | "link": "https://blog.google/topics/shopping-payments/tap-pay-yes-android-pay-welcomes-chase/", 29 | "imgSrc": "images/tap-pay-yes-android-pay-welcomes-chase.jpg", 30 | "summary": "Starting today, Android Chase customers can add their eligible Chase Visa cards to Android Pay. ", 31 | "contentLength": 7069 32 | }, { 33 | "title": "Android Pay now in the UK, new countries on the way", 34 | "time": "Wed, 18 May 2016 09:00:00 +0000", 35 | "author": "Pali Bhat", 36 | "category": "Shopping & Payments", 37 | "id": "android-pay-now-in-uk-new-countries-on", 38 | "link": "https://blog.google/products/android/android-pay-now-in-uk-new-countries-on/", 39 | "imgSrc": "images/android-pay-now-in-uk-new-countries-on.jpg", 40 | "summary": "Now in the U.K., people can use Android Pay at high street stores like Boots, Starbucks and Waitrose and pay for the Tube, bus and train with Transport for London. ", 41 | "contentLength": 5168 42 | }, { 43 | "title": "Testing, testing — One, two, Hands Free", 44 | "time": "Wed, 02 Mar 2016 16:00:00 +0000", 45 | "author": "Pali Bhat", 46 | "category": "Shopping & Payments", 47 | "id": "testing-testing-one-two-hands-free", 48 | "link": "https://blog.google/topics/shopping-payments/testing-testing-one-two-hands-free/", 49 | "imgSrc": "images/testing-testing-one-two-hands-free.jpg", 50 | "summary": "Imagine if you could rush through a drive-thru without reaching for your wallet, or pick up a hot dog at the ballpark without fumbling to pass coins or your credit card to the cashier.", 51 | "contentLength": 4664 52 | }, { 53 | "title": "From hoverboards to adult onesies: the gifts we’re searching for this holiday", 54 | "time": "Mon, 30 Nov 2015 00:00:00 +0000", 55 | "author": "Brad Johnsmeyer", 56 | "category": "Shopping & Payments", 57 | "id": "from-hoverboards-to-adult-onesies-gifts", 58 | "link": "https://blog.google/topics/shopping-payments/from-hoverboards-to-adult-onesies-gifts/", 59 | "imgSrc": "images/from-hoverboards-to-adult-onesies-gifts.jpg", 60 | "summary": "We took a look at the top gifts trending on Google Search to help you shop smarter.", 61 | "contentLength": 8554 62 | }, { 63 | "title": "Tap. Pay. UK.", 64 | "time": "Wed, 23 Mar 2016 10:00:00 +0000", 65 | "author": "Pali Bhat", 66 | "category": "Shopping & Payments", 67 | "id": "tap-pay-uk", 68 | "link": "https://blog.google/products/android/tap-pay-uk/", 69 | "imgSrc": "images/tap-pay-uk.jpg", 70 | "summary": "In the coming months, we're launching Android Pay in the U.K. to help you pay simply and securely.", 71 | "contentLength": 8234 72 | }] 73 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | 11 | const gulp = require('gulp'); 12 | const rename = require('gulp-rename'); 13 | const replace = require('gulp-replace'); 14 | const del = require('del'); 15 | 16 | /** 17 | * Cleans the prpl-server build in the server directory. 18 | */ 19 | gulp.task('prpl-server:clean', () => { 20 | return del('server/build'); 21 | }); 22 | 23 | /** 24 | * Copies the prpl-server build to the server directory while renaming the 25 | * node_modules directory so services like App Engine will upload it. 26 | */ 27 | gulp.task('prpl-server:build', () => { 28 | const pattern = 'node_modules'; 29 | const replacement = 'node_assets'; 30 | 31 | return gulp.src('build/**') 32 | .pipe(rename(((path) => { 33 | path.basename = path.basename.replace(pattern, replacement); 34 | path.dirname = path.dirname.replace(pattern, replacement); 35 | }))) 36 | .pipe(replace(pattern, replacement)) 37 | .pipe(gulp.dest('server/build')); 38 | }); 39 | 40 | gulp.task('prpl-server', gulp.series( 41 | 'prpl-server:clean', 42 | 'prpl-server:build' 43 | )); 44 | -------------------------------------------------------------------------------- /images/news-icon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/images/news-icon-128.png -------------------------------------------------------------------------------- /images/news-icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/images/news-icon-192.png -------------------------------------------------------------------------------- /images/news-icon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/images/news-icon-32.png -------------------------------------------------------------------------------- /images/news-icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Polymer/news/a6d2946c2bfc479541a82b3c0b5d9e1dc56586ce/images/news-icon-512.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | NEWS 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 73 | 74 | 75 | 76 | 77 | NEWS 78 | 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NEWS", 3 | "short_name": "NEWS", 4 | "icons": [{ 5 | "src": "images/news-icon-128.png", 6 | "sizes": "128x128", 7 | "type": "image/png" 8 | }, { 9 | "src": "images/news-icon-192.png", 10 | "sizes": "192x192", 11 | "type": "image/png" 12 | }, { 13 | "src": "images/news-icon-512.png", 14 | "sizes": "512x512", 15 | "type": "image/png" 16 | }], 17 | "start_url": "/", 18 | "background_color": "#FAFAFA", 19 | "display": "standalone", 20 | "theme_color": "#FAFAFA" 21 | } 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@polymer/news", 3 | "version": "3.0.0", 4 | "contributors": [ 5 | "The Polymer Authors" 6 | ], 7 | "license": "BSD-3-Clause", 8 | "repository": "Polymer/news", 9 | "scripts": { 10 | "start": "polymer serve", 11 | "build": "npm run build:prpl-server && npm run build:static", 12 | "build:prpl-server": "polymer build --auto-base-path && gulp prpl-server", 13 | "build:static": "polymer build", 14 | "serve:prpl-server": "prpl-server --root server/build", 15 | "serve:static": "polymer serve --port 5000 build/es5-bundled" 16 | }, 17 | "dependencies": { 18 | "@polymer/app-layout": "^3.0.0", 19 | "@polymer/app-route": "^3.0.0", 20 | "@polymer/iron-flex-layout": "^3.0.0", 21 | "@polymer/iron-icon": "^3.0.0", 22 | "@polymer/iron-iconset-svg": "^3.0.0", 23 | "@polymer/iron-pages": "^3.0.0", 24 | "@polymer/iron-selector": "^3.0.0", 25 | "@polymer/paper-icon-button": "^3.0.0", 26 | "@polymer/polymer": "^3.0.0", 27 | "@webcomponents/webcomponentsjs": "^2.0.0" 28 | }, 29 | "devDependencies": { 30 | "del": "^3.0.0", 31 | "gulp": "^4.0.0", 32 | "gulp-rename": "^1.3.0", 33 | "gulp-replace": "^1.0.0", 34 | "polymer-cli": "^1.9.11", 35 | "prpl-server": "^1.4.0", 36 | "wct-browser-legacy": "^1.0.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /polymer.json: -------------------------------------------------------------------------------- 1 | { 2 | "entrypoint": "index.html", 3 | "shell": "src/news-app.js", 4 | "sources": [ 5 | "data/**/*", 6 | "images/**/*" 7 | ], 8 | "extraDependencies": [ 9 | "manifest.json", 10 | "node_modules/@webcomponents/webcomponentsjs/**", 11 | "push-manifest.json" 12 | ], 13 | "builds": [ 14 | { 15 | "name": "esm-bundled", 16 | "browserCapabilities": [ 17 | "es2015", 18 | "modules" 19 | ], 20 | "js": { 21 | "minify": true 22 | }, 23 | "css": { 24 | "minify": true 25 | }, 26 | "html": { 27 | "minify": true 28 | }, 29 | "bundle": true, 30 | "addServiceWorker": true 31 | }, 32 | { 33 | "name": "es6-bundled", 34 | "browserCapabilities": [ 35 | "es2015" 36 | ], 37 | "js": { 38 | "compile": "es2015", 39 | "minify": true, 40 | "transformModulesToAmd": true 41 | }, 42 | "css": { 43 | "minify": true 44 | }, 45 | "html": { 46 | "minify": true 47 | }, 48 | "bundle": true, 49 | "addServiceWorker": true 50 | }, 51 | { 52 | "name": "es5-bundled", 53 | "js": { 54 | "compile": "es5", 55 | "minify": true, 56 | "transformModulesToAmd": true 57 | }, 58 | "css": { 59 | "minify": true 60 | }, 61 | "html": { 62 | "minify": true 63 | }, 64 | "bundle": true, 65 | "addServiceWorker": true 66 | } 67 | ], 68 | "moduleResolution": "node", 69 | "npm": true, 70 | "lint": { 71 | "rules": [ 72 | "polymer-3" 73 | ] 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /push-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "/": { 3 | "src/news-app.js": { 4 | "type": "script", 5 | "weight": 1 6 | }, 7 | "src/news-list.js": { 8 | "type": "script", 9 | "weight": 1 10 | }, 11 | "node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js": { 12 | "type": "script", 13 | "weight": 1 14 | } 15 | }, 16 | "/list/.*": { 17 | "src/news-app.js": { 18 | "type": "script", 19 | "weight": 1 20 | }, 21 | "src/news-list.js": { 22 | "type": "script", 23 | "weight": 1 24 | }, 25 | "node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js": { 26 | "type": "script", 27 | "weight": 1 28 | } 29 | }, 30 | "/article/.*": { 31 | "src/news-app.js": { 32 | "type": "script", 33 | "weight": 1 34 | }, 35 | "src/news-article.js": { 36 | "type": "script", 37 | "weight": 1 38 | }, 39 | "node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js": { 40 | "type": "script", 41 | "weight": 1 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /server/app.yaml: -------------------------------------------------------------------------------- 1 | runtime: nodejs10 2 | handlers: 3 | - url: '.*' 4 | script: auto 5 | secure: always 6 | redirect_http_response_code: 301 7 | -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "start": "prpl-server --root build/ --host 0.0.0.0 --https-redirect --bot-proxy https://render-tron.appspot.com/render" 5 | }, 6 | "engines": { 7 | "node": "10.x.x" 8 | }, 9 | "dependencies": { 10 | "prpl-server": "^1.4.0" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /service-worker.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright (c) 2016 The Polymer Project Authors. All rights reserved. 4 | * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | * Code distributed by Google as part of the polymer project is also 8 | * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | console.log('Service worker disabled for development, will be generated at build time.'); 11 | -------------------------------------------------------------------------------- /src/lazy-resources.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import './news-icons.js'; 11 | import './news-analytics.js'; 12 | import './news-drawer.js'; 13 | import './news-gpt-ad.js'; 14 | import './news-network-warning.js'; 15 | import './news-snackbar.js'; 16 | import '@polymer/app-layout/app-box/app-box.js'; 17 | import '@polymer/paper-icon-button/paper-icon-button.js'; 18 | -------------------------------------------------------------------------------- /src/news-analytics.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | class NewsAnalytics extends HTMLElement { 11 | connectedCallback() { 12 | // track metrics with google analytics... 13 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 14 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 15 | m=s.getElementsByTagName('body')[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 16 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 17 | ga('create', this.getAttribute('key'), 'auto'); 18 | ga('send', 'pageview'); 19 | } 20 | } 21 | customElements.define('news-analytics', NewsAnalytics); 22 | -------------------------------------------------------------------------------- /src/news-article-cover.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import { PolymerElement, html } from '@polymer/polymer/polymer-element.js'; 11 | 12 | import '@polymer/iron-icon/iron-icon.js'; 13 | import './news-img.js'; 14 | 15 | class NewsArticleCover extends PolymerElement { 16 | static get template() { 17 | return html` 18 | 139 | 140 |
141 |
142 |
143 |
[[article.category]]
144 |
145 |

[[article.headline]]

146 |
147 | [[article.timeAgo]] 148 | 149 | [[article.readTime]] 150 |
151 |
152 | 153 |
154 | 155 |
156 |
157 | `; 158 | } 159 | 160 | static get is() { return 'news-article-cover'; } 161 | 162 | static get properties() { return { 163 | 164 | article: Object 165 | 166 | }} 167 | } 168 | 169 | customElements.define(NewsArticleCover.is, NewsArticleCover); 170 | -------------------------------------------------------------------------------- /src/news-drawer.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import { PolymerElement, html } from '@polymer/polymer/polymer-element.js'; 11 | 12 | import '@polymer/app-layout/app-drawer/app-drawer.js'; 13 | import '@polymer/iron-selector/iron-selector.js'; 14 | 15 | class NewsDrawer extends PolymerElement { 16 | static get template() { 17 | return html` 18 | 51 | 52 | 53 | 54 | 55 | 56 | 59 | 60 | 61 | 62 | `; 63 | } 64 | 65 | static get is() { return 'news-drawer'; } 66 | 67 | static get properties() { return { 68 | 69 | categories: Array, 70 | 71 | category: Object, 72 | 73 | drawerOpened: { 74 | type: Boolean, 75 | notify: true 76 | } 77 | 78 | }} 79 | 80 | _closeDrawer() { 81 | this.drawerOpened = false; 82 | } 83 | } 84 | 85 | customElements.define(NewsDrawer.is, NewsDrawer); 86 | -------------------------------------------------------------------------------- /src/news-gpt-ad.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | let initGptScript; 11 | function loadGpt() { 12 | if (!initGptScript && !window.googletag) { 13 | initGptScript = true; 14 | let script = document.createElement('script'); 15 | script.async = true; 16 | script.type = 'text/javascript'; 17 | script.src = '//www.googletagservices.com/tag/js/gpt.js'; 18 | document.head.appendChild(script); 19 | } 20 | } 21 | 22 | class NewsGptAd extends HTMLElement { 23 | connectedCallback() { 24 | var elem = this; 25 | var adUnitPath = this.getAttribute('ad-unit-path'); 26 | var w = parseInt(this.getAttribute('ad-width'), 10); 27 | var h = parseInt(this.getAttribute('ad-height'), 10); 28 | var id = this.id; 29 | 30 | if (!adUnitPath || !w || !h || !id) { 31 | console.warn('news-gpt-ad missing required attribute', this); 32 | return; 33 | } 34 | 35 | loadGpt(); 36 | let win = window; 37 | win.googletag = win.googletag || {}; 38 | win.googletag.cmd = win.googletag.cmd || []; 39 | win.googletag.cmd.push(function() { 40 | googletag.defineSlot(adUnitPath, [w, h], id).addService(googletag.pubads()); 41 | googletag.enableServices(); 42 | googletag.display(elem); 43 | }); 44 | } 45 | } 46 | 47 | customElements.define('news-gpt-ad', NewsGptAd); 48 | -------------------------------------------------------------------------------- /src/news-icons.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import '@polymer/iron-icon/iron-icon.js'; 11 | import '@polymer/iron-iconset-svg/iron-iconset-svg.js'; 12 | const $_documentContainer = document.createElement('template'); 13 | $_documentContainer.setAttribute('style', 'display: none;'); 14 | 15 | $_documentContainer.innerHTML = ` 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | `; 26 | 27 | document.head.appendChild($_documentContainer.content); 28 | -------------------------------------------------------------------------------- /src/news-img.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import { PolymerElement, html } from '@polymer/polymer/polymer-element.js'; 11 | 12 | import '@polymer/iron-flex-layout/iron-flex-layout.js'; 13 | 14 | class NewsImg extends PolymerElement { 15 | static get template() { 16 | return html` 17 | 58 | 59 | 60 | `; 61 | } 62 | 63 | static get is() { return 'news-img'; } 64 | 65 | static get properties() { return { 66 | 67 | alt: { 68 | type: String, 69 | value: '' 70 | }, 71 | 72 | src: { 73 | type: String, 74 | observer: '_srcChanged' 75 | }, 76 | 77 | placeholderSrc: { 78 | type: String, 79 | observer: '_placeholderSrcChanged' 80 | } 81 | 82 | }} 83 | 84 | _srcChanged(src) { 85 | this.$.img.removeAttribute('src'); 86 | this.$.img.style.opacity = ''; 87 | if (src) { 88 | this.$.img.src = src; 89 | } 90 | } 91 | 92 | _onImgLoad() { 93 | this.$.img.style.opacity = '1'; 94 | } 95 | 96 | _onImgError() { 97 | if (!this.placeholderSrc) { 98 | this.$.img.src = 'data:image/svg+xml,' + encodeURIComponent(''); 99 | } 100 | } 101 | 102 | _placeholderSrcChanged(placeholder) { 103 | this.style.backgroundImage = placeholder ? 'url(\'' + placeholder + '\')' : ''; 104 | } 105 | } 106 | 107 | customElements.define(NewsImg.is, NewsImg); 108 | -------------------------------------------------------------------------------- /src/news-list-featured-item.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import { PolymerElement, html } from '@polymer/polymer/polymer-element.js'; 11 | 12 | import '@polymer/iron-flex-layout/iron-flex-layout.js'; 13 | import './news-img.js'; 14 | 15 | class NewsListFeaturedItem extends PolymerElement { 16 | static get template() { 17 | return html` 18 | 179 | 180 | 181 |
182 | 183 |
184 |
185 |
186 |
[[item.category]]
187 |

[[item.headline]]

188 |
189 |
[[item.timeAgo]]
190 |
[[item.author]]
191 |
192 |

[[item.summary]]

193 |
194 |
195 | `; 196 | } 197 | 198 | static get is() { return 'news-list-featured-item'; } 199 | 200 | static get properties() { return { 201 | 202 | item: Object 203 | 204 | }} 205 | } 206 | 207 | customElements.define(NewsListFeaturedItem.is, NewsListFeaturedItem); 208 | -------------------------------------------------------------------------------- /src/news-list-item.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import { PolymerElement, html } from '@polymer/polymer/polymer-element.js'; 11 | 12 | import '@polymer/iron-flex-layout/iron-flex-layout.js'; 13 | import './news-img.js'; 14 | 15 | class NewsListItem extends PolymerElement { 16 | static get template() { 17 | return html` 18 | 110 | 111 | 112 | 113 |
114 |
[[item.category]]
115 |

[[item.headline]]

116 |
117 |
[[item.timeAgo]]
118 |
[[item.author]]
119 |
120 |
121 |
122 | `; 123 | } 124 | 125 | static get is() { return 'news-list-item'; } 126 | 127 | static get properties() { return { 128 | 129 | item: { 130 | type: Object 131 | } 132 | 133 | }} 134 | } 135 | 136 | customElements.define(NewsListItem.is, NewsListItem); 137 | -------------------------------------------------------------------------------- /src/news-list.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import { PolymerElement, html } from '@polymer/polymer/polymer-element.js'; 11 | 12 | import '@polymer/app-route/app-route.js'; 13 | import '@polymer/app-layout/app-grid/app-grid-style.js'; 14 | import './news-list-featured-item.js'; 15 | import './news-list-item.js'; 16 | import './news-side-list.js'; 17 | import { Debouncer } from '@polymer/polymer/lib/utils/debounce.js'; 18 | import { timeOut } from '@polymer/polymer/lib/utils/async.js'; 19 | 20 | class NewsList extends PolymerElement { 21 | static get template() { 22 | return html` 23 | 141 | 142 | 145 | 149 | 150 |
151 |
152 | 153 | 154 | 155 | 164 | 165 |

Opinions

166 | 175 |
176 | 177 | 190 |
191 | 192 | 196 | `; 197 | } 198 | 199 | static get is() { return 'news-list'; } 200 | 201 | static get properties() { return { 202 | 203 | route: Object, 204 | 205 | category: Object, 206 | 207 | offline: Boolean, 208 | 209 | failure: Boolean, 210 | 211 | categoryName: { 212 | type: Boolean, 213 | computed: '_return(routeData.category)', 214 | notify: true 215 | }, 216 | 217 | routeData: Object, 218 | 219 | loading: Boolean 220 | 221 | }} 222 | 223 | connectedCallback() { 224 | super.connectedCallback(); 225 | this._boundResizeHandler = this._resizeHandler.bind(this); 226 | window.addEventListener('resize', this._boundResizeHandler); 227 | } 228 | 229 | disconnectedCallback() { 230 | super.disconnectedCallback(); 231 | window.removeEventListener('resize', this._boundResizeHandler); 232 | } 233 | 234 | _getFeaturedItem(items) { 235 | return items ? items[0] : {}; 236 | } 237 | 238 | _tryReconnect() { 239 | this.dispatchEvent(new CustomEvent('refresh-data', {bubbles: true, composed: true})); 240 | } 241 | 242 | _resizeHandler() { 243 | this._resizeDebouncer = Debouncer.debounce(this._resizeDebouncer, 244 | timeOut.after(50), () => { this.updateStyles(); }); 245 | } 246 | 247 | _slice(list, begin, end) { 248 | if (list) { 249 | return list.slice(begin, end); 250 | } 251 | } 252 | 253 | _return(value) { 254 | return value; 255 | } 256 | } 257 | 258 | customElements.define(NewsList.is, NewsList); 259 | -------------------------------------------------------------------------------- /src/news-nav.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import { PolymerElement, html } from '@polymer/polymer/polymer-element.js'; 11 | 12 | import '@polymer/iron-media-query/iron-media-query.js'; 13 | import './news-header.js'; 14 | 15 | class NewsNav extends PolymerElement { 16 | static get template() { 17 | return html` 18 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 32 | 33 | `; 34 | } 35 | 36 | static get is() { return 'news-nav'; } 37 | 38 | static get properties() { return { 39 | 40 | appTitle: String, 41 | 42 | page: String, 43 | 44 | categories: Array, 45 | 46 | category: Object, 47 | 48 | loadComplete: Boolean, 49 | 50 | _smallScreen: Boolean, 51 | 52 | _drawerOpened: Boolean 53 | 54 | }} 55 | 56 | closeDrawer() { 57 | this._drawerOpened = false; 58 | } 59 | 60 | _shouldRenderDrawer(smallScreen, loadComplete) { 61 | return smallScreen && loadComplete; 62 | } 63 | } 64 | 65 | customElements.define(NewsNav.is, NewsNav); 66 | -------------------------------------------------------------------------------- /src/news-network-warning.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import { PolymerElement, html } from '@polymer/polymer/polymer-element.js'; 11 | 12 | import '@polymer/iron-icon/iron-icon.js'; 13 | import './news-icons.js'; 14 | 15 | class NewsNetworkWarning extends PolymerElement { 16 | static get template() { 17 | return html` 18 | 64 | 65 | 66 |
67 |

Couldn't reach the server

68 |
69 |
70 |

No internet connection

71 |

Check if your device is connected to a mobile network or WiFi.

72 |
73 | 74 | 75 | `; 76 | } 77 | 78 | static get is() { return 'news-network-warning'; } 79 | 80 | static get properties() { return { 81 | 82 | offline: Boolean 83 | 84 | }} 85 | 86 | _tryReconnect() { 87 | this.dispatchEvent(new CustomEvent('try-reconnect', {composed: true})); 88 | } 89 | } 90 | 91 | customElements.define(NewsNetworkWarning.is, NewsNetworkWarning); 92 | -------------------------------------------------------------------------------- /src/news-path-warning.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import { PolymerElement, html } from '@polymer/polymer/polymer-element.js'; 11 | 12 | import '@polymer/iron-icon/iron-icon.js'; 13 | 14 | class NewsPathWarning extends PolymerElement { 15 | static get template() { 16 | return html` 17 | 53 | 54 |
55 | 56 |

Sorry, we couldn't find that page.

57 |
58 | 59 | Go to the home page 60 | `; 61 | } 62 | 63 | static get is() { return 'news-path-warning'; } 64 | } 65 | 66 | customElements.define(NewsPathWarning.is, NewsPathWarning); 67 | -------------------------------------------------------------------------------- /src/news-side-list.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import { PolymerElement, html } from '@polymer/polymer/polymer-element.js'; 11 | 12 | class NewsSideList extends PolymerElement { 13 | static get template() { 14 | return html` 15 | 69 | 70 |

71 | 72 |

73 | 74 | 81 | 82 | `; 83 | } 84 | 85 | static get is() { return 'news-side-list'; } 86 | 87 | static get properties() { return { 88 | 89 | items: Array 90 | 91 | }} 92 | } 93 | 94 | customElements.define(NewsSideList.is, NewsSideList); 95 | -------------------------------------------------------------------------------- /src/news-snackbar.js: -------------------------------------------------------------------------------- 1 | /** 2 | @license 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 7 | Code distributed by Google as part of the polymer project is also 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 9 | */ 10 | import { PolymerElement, html } from '@polymer/polymer/polymer-element.js'; 11 | 12 | import { flush } from '@polymer/polymer/lib/legacy/polymer.dom.js'; 13 | import { Debouncer } from '@polymer/polymer/lib/utils/debounce.js'; 14 | import { timeOut } from '@polymer/polymer/lib/utils/async.js'; 15 | 16 | class NewsSnackbar extends PolymerElement { 17 | static get template() { 18 | return html` 19 | 58 | 59 | 60 | `; 61 | } 62 | 63 | static get is() { return 'news-snackbar'; } 64 | 65 | connectedCallback() { 66 | super.connectedCallback(); 67 | this.setAttribute('role', 'alert'); 68 | this.setAttribute('aria-live', 'assertive'); 69 | } 70 | 71 | open() { 72 | flush(); 73 | this.removeAttribute('aria-hidden'); 74 | this.offsetHeight && this.classList.add('opened'); 75 | this._closeDebouncer = Debouncer.debounce(this._closeDebouncer, 76 | timeOut.after(4000), () => { 77 | this.close(); 78 | }); 79 | } 80 | 81 | close() { 82 | this.setAttribute('aria-hidden', 'true'); 83 | this.classList.remove('opened'); 84 | } 85 | } 86 | 87 | customElements.define(NewsSnackbar.is, NewsSnackbar); 88 | -------------------------------------------------------------------------------- /sw-precache-config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | staticFileGlobs: [ 3 | 'manifest.json', 4 | 'images/*', 5 | 'src/**/*' 6 | ], 7 | runtimeCaching: [ 8 | { 9 | urlPattern: /\/@webcomponents\/webcomponentsjs\//, 10 | handler: 'fastest' 11 | }, 12 | { 13 | urlPattern: /.*\.(png|jpg|gif|svg)/i, 14 | handler: 'fastest', 15 | options: { 16 | cache: { 17 | maxEntries: 200, 18 | name: 'data-images-cache' 19 | } 20 | } 21 | }, 22 | { 23 | urlPattern: /\/data\/articles\/.*/, 24 | handler: 'fastest', 25 | options: { 26 | cache: { 27 | maxEntries: 100, 28 | name: 'data-articles-cache' 29 | } 30 | } 31 | }, 32 | { 33 | urlPattern: /\/data\/.*json/, 34 | handler: 'fastest', 35 | options: { 36 | cache: { 37 | maxEntries: 10, 38 | name: 'data-json-cache' 39 | } 40 | } 41 | } 42 | ] 43 | }; 44 | --------------------------------------------------------------------------------