RECEPTION WELCOME SIGN

An On-Device Web App for Performance Hub Display Screens: a welcome sign for any reception
(office, clinic, hotel, gym, school) with your logo, a greeting, the date and time, and a news
ticker. Acme Demo Co. and its logo are fictitious.

WHAT RUNS WHERE

- On the screen, from its own copy of the app: the background, the logo, the greeting
  (Good morning / afternoon / evening), the date and the time. These keep working offline.
- From the internet: only the news ticker. It hides itself while the screen is offline
  (navigator.onLine is false) or when the headlines can't be loaded, tries again after 1, 2, 4,
  then every 10 minutes, and comes back on its own once headlines load. While it works it
  refreshes every 15 minutes.

MAKE IT YOURS

1. Replace logo.svg with your logo (keep the name, or change it in index.html).
2. Replace background.jpg with your own image (1920 x 1080, under 1 MB is plenty).
3. Edit config.js: the welcome text, the message, the time zone fallback and the news settings.
4. Open index.html in a browser to try it, zip the folder and upload it in Display Screens:
   Library > Add content > On-Device Web App.

NEWS SOURCES

Screens load apps in a browser, so the app can only read news from sources that allow
cross-origin requests (they send an Access-Control-Allow-Origin header).

- source: 'wikipedia' (the default). Wikipedia's "In the news" headlines from the public
  Wikipedia REST API (en.wikipedia.org/api/rest_v1/feed/featured/YYYY/MM/DD). No key needed.
  Wikipedia text is licensed CC BY-SA 4.0, so the ticker credits Wikipedia.
- source: 'rss' with rssUrl: any RSS feed that sends CORS headers, or JSON with items[].title.
  Google News RSS feeds (news.google.com/rss) do not send CORS headers, so a screen can't read
  them directly: pass them through a relay you control that adds the header, and check that
  the feed's terms allow showing it on your screens.

TIME ZONE

The clock uses the facility's time zone from the Display App SDK. If the SDK can't load (for
example the screen started while offline), it uses timeZone from config.js, or the screen's own
time zone when that is empty.

FILES

index.html, style.css, app.js, config.js   the app
logo.svg                                  fictitious logo (replace it)
background.jpg                            background image (generated for this example)
source-sans-3.woff2, OFL.txt              Source Sans 3 font and its licence (SIL OFL 1.1)
