You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@annotator.apache.org by bi...@apache.org on 2020/11/05 17:15:39 UTC

[incubator-annotator-website] 04/04: Move static content into src/

This is an automated email from the ASF dual-hosted git repository.

bigbluehat pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-annotator-website.git

commit ca7a2affde1031e41eb3b09a2a13a3404366fd77
Author: Benjamin Young <by...@wiley.com>
AuthorDate: Thu Oct 8 16:54:40 2020 -0400

    Move static content into src/
    
    We should (now) be able to blow away `content/` and
    recreate it from `src/` via eleventy--however, this
    commit does not destroy the `content/` folder in
    the build process, though a future commit probably
    will introduce that.
---
 .eleventy.js                          |  11 +-
 src/.htaccess                         |   3 +
 src/annotator-icon.svg                | 159 ++++++++++++++++++++++++
 src/doap.rdf                          |  52 ++++++++
 src/favicon.ico                       | Bin 0 -> 15086 bytes
 src/images/android-chrome-192x192.png | Bin 0 -> 1711 bytes
 src/images/android-chrome-512x512.png | Bin 0 -> 4311 bytes
 src/images/annotator-logo.svg         |  60 +++++++++
 src/images/apple-touch-icon.png       | Bin 0 -> 1426 bytes
 src/images/browserconfig.xml          |   9 ++
 src/images/favicon-16x16.png          | Bin 0 -> 468 bytes
 src/images/favicon-32x32.png          | Bin 0 -> 606 bytes
 src/images/mstile-144x144.png         | Bin 0 -> 1343 bytes
 src/images/mstile-150x150.png         | Bin 0 -> 1273 bytes
 src/images/mstile-310x150.png         | Bin 0 -> 1323 bytes
 src/images/mstile-310x310.png         | Bin 0 -> 2410 bytes
 src/images/mstile-70x70.png           | Bin 0 -> 1019 bytes
 src/images/safari-pinned-tab.svg      |   1 +
 src/index.html                        | 226 ++++++++++++++++++++++++++++++++++
 src/index.js                          |  23 ++++
 src/site.webmanifest                  |  20 +++
 21 files changed, 563 insertions(+), 1 deletion(-)

diff --git a/.eleventy.js b/.eleventy.js
index f8d7b69..6435d92 100644
--- a/.eleventy.js
+++ b/.eleventy.js
@@ -6,8 +6,17 @@ module.exports = function(eleventyConfig) {
 
   eleventyConfig.addPassthroughCopy({
     // '...relative to this file': '...relative to `dir.output` below'
+    // demo content gets copyied in verbatim
     'annotator/web/dist/demo/': 'demo/',
-    'annotator/web/dist/style.css': 'style.css'
+    'annotator/web/dist/style.css': 'style.css',
+    // also the images, css, and non-11ty js files
+    'src/.htaccess': '.htaccess',
+    'src/annotator-icon.svg': 'annotator-icon.svg',
+    'src/doap.rdf': 'doap.rdf',
+    'src/favicon.ico': 'favicon.ico',
+    'src/index.js': 'index.js',
+    'src/images/': 'images/',
+    'src/site.webmanifest': 'site.webmanifest'
   });
 
   return {
diff --git a/src/.htaccess b/src/.htaccess
new file mode 100644
index 0000000..893ce24
--- /dev/null
+++ b/src/.htaccess
@@ -0,0 +1,3 @@
+<IfModule mod_headers.c>
+    Header set Access-Control-Allow-Origin "*"
+</IfModule>
diff --git a/src/annotator-icon.svg b/src/annotator-icon.svg
new file mode 100644
index 0000000..9f5f6d9
--- /dev/null
+++ b/src/annotator-icon.svg
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="348"
+   height="348"
+   viewBox="0 0 92.075002 92.074999"
+   version="1.1"
+   id="svg1024"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+   sodipodi:docname="annotator-icon.svg">
+  <defs
+     id="defs1018">
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient938"
+       id="linearGradient1830"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,0.33824883)"
+       x1="343.29837"
+       y1="246.67406"
+       x2="322.91745"
+       y2="226.1176" />
+    <linearGradient
+       id="linearGradient938"
+       inkscape:collect="always">
+      <stop
+         id="stop930"
+         offset="0"
+         style="stop-color:#525252;stop-opacity:1" />
+      <stop
+         style="stop-color:#4a4a4a;stop-opacity:1"
+         offset="0.29392579"
+         id="stop932" />
+      <stop
+         id="stop934"
+         offset="0.29392579"
+         style="stop-color:#858585;stop-opacity:1" />
+      <stop
+         id="stop936"
+         offset="1"
+         style="stop-color:#878787;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient1653"
+       id="linearGradient1832"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.67649765,0.76105986)"
+       x1="368.98553"
+       y1="218.37378"
+       x2="350.64301"
+       y2="199.85294" />
+    <linearGradient
+       id="linearGradient1653"
+       inkscape:collect="always">
+      <stop
+         id="stop1645"
+         offset="0"
+         style="stop-color:#313131;stop-opacity:1" />
+      <stop
+         style="stop-color:#2c2c2c;stop-opacity:1"
+         offset="0.24406238"
+         id="stop1647" />
+      <stop
+         id="stop1649"
+         offset="0.24406238"
+         style="stop-color:#ffffff;stop-opacity:1" />
+      <stop
+         id="stop1651"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.8103448"
+     inkscape:cx="174"
+     inkscape:cy="174"
+     inkscape:document-units="mm"
+     inkscape:current-layer="g1134-1"
+     showgrid="false"
+     units="px"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1147"
+     inkscape:window-x="1912"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata1021">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-35.297189,-173.80146)">
+    <g
+       id="g1134-1"
+       transform="matrix(1.6607277,0,0,1.6607277,-749.72686,-167.03383)">
+      <g
+         transform="translate(253.7978,2.7250878)"
+         id="g894-6-3">
+        <path
+           style="fill:#04a3ce;fill-opacity:1;stroke:#1f1f1f;stroke-width:1.68642581;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 311.9456,254.04396 c 0,-0.17411 1.05819,-1.37034 2.35154,-2.65831 l 2.35153,-2.34175 0.95173,0.81285 c 1.20609,1.03009 2.3075,2.29997 2.3162,2.6705 0.004,0.15718 -0.38985,0.63398 -0.87453,1.05953 l -0.88124,0.77373 h -3.10762 c -2.34567,0 -3.10761,-0.0776 -3.10761,-0.31655 z"
+           id="path841-7-26-6"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="sccccccss"
+           transform="matrix(0.73584379,0,0,0.73584379,-9.9844849,69.461688)" />
+        <path
+           style="fill:url(#linearGradient1830);fill-opacity:1;stroke:#1f1f1f;stroke-width:1.78978908;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 316.70979,248.64989 c 0,-0.16968 0.23675,-0.70975 0.52612,-1.20019 0.80909,-1.3713 2.45159,-12.38823 2.23834,-15.01354 l -0.16118,-1.98438 2.16053,-2.46437 c 1.18829,-1.35541 2.34081,-2.53356 2.56116,-2.61811 0.48628,-0.18661 19.13337,18.33661 19.13337,19.00627 0,0.43616 -3.99946,4.04831 -5.16373,4.66366 -0.47839,0.25285 -0.94191,0.26358 -1.95923,0.0454 -1.09513,-0.23486 -1.84037,-0.19032 -4.18241,0.25003 -1.56741,0.2947 -4.33812,0.79164 -6.15713,1.10432 -2.18899,0.37626  [...]
+           id="path841-3-1-1"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="ccccccsccccccc"
+           transform="matrix(0.73584379,0,0,0.73584379,-9.9844849,69.461688)" />
+        <path
+           style="fill:url(#linearGradient1832);fill-opacity:1;stroke:#1f1f1f;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 333.93991,234.08349 c -5.12961,-5.13419 -9.32656,-9.46641 -9.32656,-9.62717 0,-0.3652 42.66858,-40.47242 43.77472,-41.14696 0.97376,-0.59381 3.04564,-0.65369 4.06186,-0.11739 0.39295,0.20737 3.3533,3.03511 6.57854,6.28385 4.99675,5.03316 5.9081,6.07312 6.16176,7.03128 0.45166,1.70612 -0.002,2.95622 -1.78572,4.9175 -6.75284,7.42626 -39.37365,41.86335 -39.7097,41.92068 -0.26411,0.0451 -4.00432,-3.5061 -9.7549,-9.26179 z"
+           id="path841-6-8-0"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="csccscccc"
+           transform="matrix(0.73584379,0,0,0.73584379,-9.9844849,69.461688)" />
+        <path
+           style="opacity:0.75099996;fill:#04a3ce;fill-opacity:1;stroke:#1f1f1f;stroke-width:1.47168767;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 235.67817,241.6608 c -3.77459,-3.77797 -6.86289,-6.9658 -6.86289,-7.0841 0,-0.26873 31.39741,-29.78138 32.21135,-30.27773 0.71654,-0.43695 2.24112,-0.48102 2.9889,-0.0864 0.28915,0.15259 2.4675,2.23336 4.84077,4.62393 3.67683,3.70362 4.34744,4.46887 4.5341,5.17392 0.33235,1.25544 -0.002,2.17532 -1.31401,3.61851 -4.96904,5.46457 -28.97286,30.80489 -29.22014,30.84708 -0.19434,0.0332 -2.94655,-2.57995 -7.17808,-6.81523 z"
+           id="path841-6-8-6-6"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="csccscccc" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/src/doap.rdf b/src/doap.rdf
new file mode 100644
index 0000000..4a475a8
--- /dev/null
+++ b/src/doap.rdf
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl"?>
+<rdf:RDF xml:lang="en"
+         xmlns="http://usefulinc.com/ns/doap#" 
+         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
+         xmlns:asfext="http://projects.apache.org/ns/asfext#"
+         xmlns:foaf="http://xmlns.com/foaf/0.1/">
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+  <Project rdf:about="http://annotator.apache.org">
+    <created>2017-05-31</created>
+    <license rdf:resource="http://spdx.org/licenses/Apache-2.0" />
+    <name>Apache Annotator</name>
+    <homepage rdf:resource="http://annotator.apache.org" />
+    <asfext:pmc rdf:resource="http://incubator.apache.org" />
+    <shortdesc>Apache Annotator provides annotation enabling code for browsers, servers, and humans.</shortdesc>
+    <description>Apache Annotator is a collaborative community for creating annotation related code which works to provide a future for Annotator.js-based projects and plugins while enabling W3C spec-compliant Web Annotation in Web browsers, Web Publication readers, and the servers that serve them.</description>
+    <bug-database rdf:resource="https://github.com/apache/incubator-annotator/issues" />
+    <mailing-list rdf:resource="https://lists.apache.org/list.html?dev@annotator.apache.org" />
+    <programming-language>JavaScript</programming-language>
+    <category rdf:resource="http://projects.apache.org/category/content" />
+    <repository>
+      <GitRepository>
+        <location rdf:resource="http://git@github.com:apache/incubator-annotator.git"/>
+        <browse rdf:resource="https://github.com/apache/incubator-annotator"/>
+      </GitRepository>
+    </repository>
+    <asfext:implements>
+      <asfext:Standard>
+        <asfext:title>Web Annotation Data Model</asfext:title>
+        <asfext:body>W3C</asfext:body>
+        <asfext:id>annotation-model</asfext:id>
+        <asfext:url rdf:resource="https://www.w3.org/TR/annotation-model/"/>
+      </asfext:Standard>
+    </asfext:implements>
+  </Project>
+</rdf:RDF>
+
diff --git a/src/favicon.ico b/src/favicon.ico
new file mode 100644
index 0000000..63ff729
Binary files /dev/null and b/src/favicon.ico differ
diff --git a/src/images/android-chrome-192x192.png b/src/images/android-chrome-192x192.png
new file mode 100644
index 0000000..7cfd603
Binary files /dev/null and b/src/images/android-chrome-192x192.png differ
diff --git a/src/images/android-chrome-512x512.png b/src/images/android-chrome-512x512.png
new file mode 100644
index 0000000..03d57cb
Binary files /dev/null and b/src/images/android-chrome-512x512.png differ
diff --git a/src/images/annotator-logo.svg b/src/images/annotator-logo.svg
new file mode 100644
index 0000000..cde2943
--- /dev/null
+++ b/src/images/annotator-logo.svg
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="363.35416mm" height="100.85776mm" viewBox="0 0 363.35416 100.85776" version="1.1" id="svg102 [...]
+  <defs id="defs1018">
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient938" id="linearGradient1830" gradientUnits="userSpaceOnUse" gradientTransform="translate(0,0.33824883)" x1="343.29837" y1="246.67406" x2="322.91745" y2="226.1176"/>
+    <linearGradient id="linearGradient938" inkscape:collect="always">
+      <stop id="stop930" offset="0" style="stop-color:#525252;stop-opacity:1"/>
+      <stop style="stop-color:#4a4a4a;stop-opacity:1" offset="0.29392579" id="stop932"/>
+      <stop id="stop934" offset="0.29392579" style="stop-color:#858585;stop-opacity:1"/>
+      <stop id="stop936" offset="1" style="stop-color:#878787;stop-opacity:1"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient1653" id="linearGradient1832" gradientUnits="userSpaceOnUse" gradientTransform="translate(-0.67649765,0.76105986)" x1="368.98553" y1="218.37378" x2="350.64301" y2="199.85294"/>
+    <linearGradient id="linearGradient1653" inkscape:collect="always">
+      <stop id="stop1645" offset="0" style="stop-color:#313131;stop-opacity:1"/>
+      <stop style="stop-color:#2c2c2c;stop-opacity:1" offset="0.24406238" id="stop1647"/>
+      <stop id="stop1649" offset="0.24406238" style="stop-color:#ffffff;stop-opacity:1"/>
+      <stop id="stop1651" offset="1" style="stop-color:#ffffff;stop-opacity:1"/>
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.49497475" inkscape:cx="442.36779" inkscape:cy="459.16878" inkscape:document-units="mm" inkscape:current-layer="g1134-1" showgrid="false" units="mm" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:window-width="3726" inkscape:window-height="2049" inkscape:window-x="114" inkscape:window-y [...]
+  <metadata id="metadata1021">
+    <rdf:RDF>
+      <cc:Work rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title/>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(236.10564,-169.46398)">
+    <g id="g1134-1" transform="matrix(1.6607277,0,0,1.6607277,-749.72686,-167.03383)">
+      <g aria-label="APACHE" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:38.59463882px;line-height:125%;font-family:Montserrat;-inkscape-font-specification:'Montserrat Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.89459801px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" id="text817-5-12-7">
+        <path d="m 318.4151,226.47048 -2.70162,6.13655 h -4.86292 l 11.88714,-26.97766 h 4.86293 l 11.88715,26.97766 h -4.86293 l -2.70162,-6.13655 z m 11.65559,-4.20682 -4.90152,-11.11525 -4.90152,11.11525 z" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:Montserrat;stroke-width:2.89459801px" id="path1638"/>
+        <path d="m 352.50141,205.62937 q 6.13655,0 8.95395,2.35428 2.81741,2.35427 2.81741,7.25579 0,4.90152 -2.8946,7.1786 -2.856,2.27708 -8.79957,2.27708 h -4.78574 v 7.91191 h -4.55417 v -26.97766 z m 0.57892,14.93613 q 3.78227,0 5.13308,-1.428 1.38941,-1.4666 1.38941,-4.24541 0,-2.81741 -1.73676,-3.97525 -1.73676,-1.15784 -5.44184,-1.15784 h -4.63136 v 10.8065 z" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Montserrat;-inkscape-font- [...]
+        <path d="m 372.0104,226.47048 -2.70163,6.13655 h -4.86292 L 376.333,205.62937 h 4.86292 l 11.88715,26.97766 h -4.86293 l -2.70162,-6.13655 z m 11.65558,-4.20682 -4.90152,-11.11525 -4.90152,11.11525 z" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:Montserrat;stroke-width:2.89459801px" id="path1642"/>
+        <path d="m 409.14567,228.4774 q 2.35427,0 4.05244,-0.77189 1.69816,-0.81049 3.55071,-2.54725 l 2.93319,3.01038 q -4.28401,4.74714 -10.42055,4.74714 -6.09796,0 -10.15039,-3.93665 -4.01385,-3.93665 -4.01385,-9.95742 0,-6.02076 4.09103,-10.0346 4.12963,-4.01385 10.38196,-4.01385 6.29093,0 10.49774,4.63136 l -2.89459,3.16476 q -1.92974,-1.85254 -3.66649,-2.58584 -1.69817,-0.7333 -4.01385,-0.7333 -4.09103,0 -6.86984,2.66303 -2.77882,2.62444 -2.77882,6.75406 0,4.09104 2.74022,6.86985 2 [...]
+        <path d="m 425.2523,232.60703 v -26.97766 h 4.55417 v 11.69418 h 13.39234 v -11.69418 h 4.55417 v 26.97766 h -4.55417 v -11.03807 h -13.39234 v 11.03807 z" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:Montserrat;stroke-width:2.89459801px" id="path1646"/>
+        <path d="m 474.20357,205.62937 v 4.28401 h -14.3958 v 7.14001 h 12.9292 v 4.05243 h -12.9292 v 7.2172 h 14.85893 v 4.28401 h -19.4131 v -26.97766 z" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:Montserrat;stroke-width:2.89459801px" id="path1648"/>
+      </g>
+      <g aria-label="Annotator" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32.92983246px;line-height:125%;font-family:Montserrat;-inkscape-font-specification:'Montserrat Bold';letter-spacing:0px;word-spacing:0px;fill:#04a3ce;fill-opacity:1;stroke:none;stroke-width:2.46973729px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" id="text821-2-09-4">
+        <path d="m 331.20471,256.85892 -2.60145,-5.89444 h -12.54627 l -2.56853,5.89444 h -2.79903 l 10.33997,-23.05089 h 2.73317 l 10.30704,23.05089 z m -14.06103,-8.33125 h 10.40582 l -5.23584,-11.85474 z" style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:'Montserrat Light';fill:#04a3ce;fill-opacity:1;stroke-width:2.46973729px" id="path1619"/>
+        <path d="m 346.64057,239.43904 q 3.09541,0 4.84069,1.81114 1.74528,1.77821 1.74528,4.93947 v 10.66927 h -2.56853 v -10.01067 q 0,-2.30509 -1.31719,-3.62228 -1.28426,-1.3172 -3.58935,-1.3172 -2.5356,0.0329 -4.0833,1.58064 -1.51477,1.51477 -1.74528,4.08329 v 9.28622 h -2.56853 v -17.32109 h 2.56853 v 3.81986 q 1.77821,-3.85279 6.71768,-3.91865 z" style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:'Mon [...]
+        <path d="m 368.25077,239.43904 q 3.09541,0 4.84069,1.81114 1.74528,1.77821 1.74528,4.93947 v 10.66927 h -2.56853 v -10.01067 q 0,-2.30509 -1.31719,-3.62228 -1.28426,-1.3172 -3.58935,-1.3172 -2.5356,0.0329 -4.0833,1.58064 -1.51477,1.51477 -1.74528,4.08329 v 9.28622 h -2.56853 v -17.32109 h 2.56853 v 3.81986 q 1.77821,-3.85279 6.71768,-3.91865 z" style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:'Mon [...]
+        <path d="m 387.62175,239.43904 q 2.5356,0 4.54432,1.11961 2.00872,1.08668 3.12833,3.0954 1.11962,1.97579 1.11962,4.51139 0,2.5356 -1.11962,4.54432 -1.11961,2.00872 -3.12833,3.12833 -2.00872,1.11962 -4.54432,1.11962 -2.56852,0 -4.57724,-1.11962 -1.97579,-1.11961 -3.09541,-3.0954 -1.11961,-2.00872 -1.11961,-4.57725 0,-2.5356 1.11961,-4.51139 1.11962,-2.00872 3.09541,-3.0954 2.00872,-1.11961 4.57724,-1.11961 z m 0,2.27215 q -1.81114,0 -3.22712,0.82325 -1.41598,0.82325 -2.2063,2.3050 [...]
+        <path d="m 409.85556,255.67344 q -1.94286,1.28427 -3.98451,1.28427 -1.97579,0 -3.16127,-1.21841 -1.18547,-1.25133 -1.18547,-3.68814 v -9.97774 h -2.50267 v -2.00872 h 2.50267 v -4.54431 h 2.5356 v 4.54431 h 5.49928 v 2.00872 h -5.49928 v 9.54965 q 0,1.54771 0.5598,2.27216 0.59274,0.69153 1.74529,0.69153 1.35012,-0.0659 2.7661,-0.88911 z" style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:'Montserrat [...]
+        <path d="m 424.52992,256.85892 v -2.70025 q -2.07458,2.79904 -6.35546,2.79904 -1.74528,0 -3.0954,-0.69153 -1.35013,-0.69153 -2.07458,-1.877 -0.72446,-1.18547 -0.72446,-2.66732 0,-2.27216 1.71235,-3.58935 1.71235,-1.35012 4.77483,-1.38305 h 5.69686 v -1.08669 q 0,-1.94286 -1.18547,-2.99661 -1.18548,-1.08669 -3.45764,-1.08669 -2.66731,0 -5.49928,2.00872 l -1.08668,-1.81114 q 1.84407,-1.2184 3.39177,-1.77821 1.58063,-0.5598 3.68814,-0.5598 3.19419,0 4.90655,1.58063 1.74528,1.58063 1 [...]
+        <path d="m 441.69202,255.67344 q -1.94286,1.28427 -3.98451,1.28427 -1.97579,0 -3.16126,-1.21841 -1.18548,-1.25133 -1.18548,-3.68814 v -9.97774 h -2.50266 v -2.00872 h 2.50266 v -4.54431 h 2.5356 v 4.54431 h 5.49928 v 2.00872 h -5.49928 v 9.54965 q 0,1.54771 0.55981,2.27216 0.59274,0.69153 1.74528,0.69153 1.35012,-0.0659 2.76611,-0.88911 z" style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:'Montserr [...]
+        <path d="m 452.38804,239.43904 q 2.5356,0 4.54432,1.11961 2.00872,1.08668 3.12833,3.0954 1.11962,1.97579 1.11962,4.51139 0,2.5356 -1.11962,4.54432 -1.11961,2.00872 -3.12833,3.12833 -2.00872,1.11962 -4.54432,1.11962 -2.56853,0 -4.57725,-1.11962 -1.97579,-1.11961 -3.0954,-3.0954 -1.11961,-2.00872 -1.11961,-4.57725 0,-2.5356 1.11961,-4.51139 1.11961,-2.00872 3.0954,-3.0954 2.00872,-1.11961 4.57725,-1.11961 z m 0,2.27215 q -1.81114,0 -3.22712,0.82325 -1.41599,0.82325 -2.2063,2.30509  [...]
+        <path d="m 468.23347,243.39062 q 0.85617,-1.90993 2.4368,-2.89783 1.58064,-1.02082 3.78694,-1.05375 v 2.50266 q -2.70025,-0.0329 -4.34674,1.51478 -1.64649,1.51477 -1.877,4.18208 v 9.22036 h -2.56853 v -17.32109 h 2.56853 z" style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:'Montserrat Light';fill:#04a3ce;fill-opacity:1;stroke-width:2.46973729px" id="path1635"/>
+      </g>
+      <path sodipodi:nodetypes="csc" inkscape:connector-curvature="0" id="path889-0-0" d="m 310.64098,261.05494 c 0,0 64.5282,2.06538 97.5492,-0.15865 29.26284,-1.97091 68.84079,1.10685 68.84079,1.10685" style="fill:none;fill-rule:evenodd;stroke:#04a3ce;stroke-width:2.69402361;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+      <g transform="translate(253.76056,3.4232922)" id="g894-6-3">
+        <path style="fill:#04a3ce;fill-opacity:1;stroke:#1f1f1f;stroke-width:1.68642581;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 311.9456,254.04396 c 0,-0.17411 1.05819,-1.37034 2.35154,-2.65831 l 2.35153,-2.34175 0.95173,0.81285 c 1.20609,1.03009 2.3075,2.29997 2.3162,2.6705 0.004,0.15718 -0.38985,0.63398 -0.87453,1.05953 l -0.88124,0.77373 h -3.10762 c -2.34567,0 -3.10761,-0.0776 -3.10761,-0.31655 z" id="path841-7-26-6" inkscape:connector-curvature="0" sodipodi: [...]
+        <path style="fill:url(#linearGradient1830);fill-opacity:1;stroke:#1f1f1f;stroke-width:1.78978908;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 316.70979,248.64989 c 0,-0.16968 0.23675,-0.70975 0.52612,-1.20019 0.80909,-1.3713 2.45159,-12.38823 2.23834,-15.01354 l -0.16118,-1.98438 2.16053,-2.46437 c 1.18829,-1.35541 2.34081,-2.53356 2.56116,-2.61811 0.48628,-0.18661 19.13337,18.33661 19.13337,19.00627 0,0.43616 -3.99946,4.04831 -5.16373,4.66366 -0.47839,0.25285 [...]
+        <path style="fill:url(#linearGradient1832);fill-opacity:1;stroke:#1f1f1f;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 333.93991,234.08349 c -5.12961,-5.13419 -9.32656,-9.46641 -9.32656,-9.62717 0,-0.3652 42.66858,-40.47242 43.77472,-41.14696 0.97376,-0.59381 3.04564,-0.65369 4.06186,-0.11739 0.39295,0.20737 3.3533,3.03511 6.57854,6.28385 4.99675,5.03316 5.9081,6.07312 6.16176,7.03128 0.45166,1.70612 -0.002,2.95622 -1.78572,4.9175 -6.75284,7.4262 [...]
+        <path style="opacity:0.75099996;fill:#04a3ce;fill-opacity:1;stroke:#1f1f1f;stroke-width:1.47168767;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 235.67817,241.6608 c -3.77459,-3.77797 -6.86289,-6.9658 -6.86289,-7.0841 0,-0.26873 31.39741,-29.78138 32.21135,-30.27773 0.71654,-0.43695 2.24112,-0.48102 2.9889,-0.0864 0.28915,0.15259 2.4675,2.23336 4.84077,4.62393 3.67683,3.70362 4.34744,4.46887 4.5341,5.17392 0.33235,1.25544 -0.002,2.17532 -1.31401,3.61851 -4.9690 [...]
+      </g>
+    </g>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/src/images/apple-touch-icon.png b/src/images/apple-touch-icon.png
new file mode 100644
index 0000000..91e4d0e
Binary files /dev/null and b/src/images/apple-touch-icon.png differ
diff --git a/src/images/browserconfig.xml b/src/images/browserconfig.xml
new file mode 100644
index 0000000..20ef75a
--- /dev/null
+++ b/src/images/browserconfig.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+    <msapplication>
+        <tile>
+            <square150x150logo src="mstile-150x150.png"/>
+            <TileColor>#da532c</TileColor>
+        </tile>
+    </msapplication>
+</browserconfig>
diff --git a/src/images/favicon-16x16.png b/src/images/favicon-16x16.png
new file mode 100644
index 0000000..8e1b91a
Binary files /dev/null and b/src/images/favicon-16x16.png differ
diff --git a/src/images/favicon-32x32.png b/src/images/favicon-32x32.png
new file mode 100644
index 0000000..0f0ee92
Binary files /dev/null and b/src/images/favicon-32x32.png differ
diff --git a/src/images/mstile-144x144.png b/src/images/mstile-144x144.png
new file mode 100644
index 0000000..c535aed
Binary files /dev/null and b/src/images/mstile-144x144.png differ
diff --git a/src/images/mstile-150x150.png b/src/images/mstile-150x150.png
new file mode 100644
index 0000000..fbf154b
Binary files /dev/null and b/src/images/mstile-150x150.png differ
diff --git a/src/images/mstile-310x150.png b/src/images/mstile-310x150.png
new file mode 100644
index 0000000..5a942ce
Binary files /dev/null and b/src/images/mstile-310x150.png differ
diff --git a/src/images/mstile-310x310.png b/src/images/mstile-310x310.png
new file mode 100644
index 0000000..941380d
Binary files /dev/null and b/src/images/mstile-310x310.png differ
diff --git a/src/images/mstile-70x70.png b/src/images/mstile-70x70.png
new file mode 100644
index 0000000..d2c4eb3
Binary files /dev/null and b/src/images/mstile-70x70.png differ
diff --git a/src/images/safari-pinned-tab.svg b/src/images/safari-pinned-tab.svg
new file mode 100644
index 0000000..fd06623
--- /dev/null
+++ b/src/images/safari-pinned-tab.svg
@@ -0,0 +1 @@
+<svg version="1" xmlns="http://www.w3.org/2000/svg" width="933.333" height="933.333" viewBox="0 0 700.000000 700.000000"><path d="M540.2 10.1c-8.3 1.6-14.6 5.4-26.2 16-56 50.5-259.4 241.4-363.3 340.8-22.2 21.2-30.5 29.9-32.4 33.4-1.3 2.7-2.2 5.1-2 5.3.2.3-3.2 3.9-7.6 8.2-4.4 4.2-15.4 16-24.4 26.2-14.5 16.3-16.3 18.8-15.9 21.3.3 1.5.8 9.4 1.2 17.5.7 16.5-.7 33.2-5.6 67.2-5.9 40.9-10.2 61.2-15.6 72.3-1.9 3.9-3.4 8.1-3.4 9.2 0 1.3-4 6-10.6 12.5-13 12.8-29.1 30.4-31.6 34.5-3.4 5.6-2.3 10.4 3 [...]
\ No newline at end of file
diff --git a/src/index.html b/src/index.html
new file mode 100644
index 0000000..d23fabb
--- /dev/null
+++ b/src/index.html
@@ -0,0 +1,226 @@
+<!DOCTYPE html>
+<html prefix="og: http://ogp.me/ns#">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
+    <title>Apache Annotator (incubating)</title>
+
+    <meta property="og:title" content="Apache Annotator" />
+    <meta property="og:type" content="website" />
+    <meta property="og:url" content="https://annotator.apache.org/" />
+    <meta property="og:image:url" content="https://annotator.apache.org/images/annotator-logo.svg" />
+    <meta property="og:image:alt" content="Apache Annotator (incubating) logo" />
+
+    <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
+    <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png">
+    <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
+    <link rel="manifest" href="/site.webmanifest">
+    <link rel="mask-icon" href="/images/safari-pinned-tab.svg" color="#5bbad5">
+    <meta name="msapplication-TileColor" content="#da532c">
+    <meta name="theme-color" content="#ffffff">
+
+    <link rel="alternate" title="DOAP" href="doap.rdf" type="application/rdf+xml" />
+
+    <link rel="stylesheet" href="//semantic-ui.com/dist/semantic.min.css" />
+  </head>
+
+  <body>
+    <div class="ui borderless stackable top attached main menu">
+      <div class="ui container">
+        <a class="item" href="/" style="color: rgba(0,0,0,.87);">
+          <img class="ui small image" src="images/annotator-logo.svg" alt="Apache Annotator (incubating)" />
+        </a>
+
+        <div class="right menu">
+          <a class="item" href="demo"><span class="ui positive button">Demo!</span></a>
+          <a class="item" rel="external" href="https://www.npmjs.com/package/apache-annotator">NPM</a>
+          <a class="item" rel="external" href="https://github.com/apache?q=annotator#org-repositories">Code</a>
+          <a class="item" rel="external" href="https://github.com/apache/incubator-annotator/issues">Issues</a>
+          <a class="item" href="docs">Docs</a>
+          <a class="item" rel="external" href="https://mail-archives.apache.org/mod_mbox/incubator-annotator-dev/">Mailing List</a>
+        </div>
+      </div>
+    </div>
+
+    <div class="ui basic segment container">
+      <div class="ui divided grid">
+        <div class="ten wide column">
+          <h3>
+            Apache Annotator provides annotation enabling code for browsers, servers, and humans.
+          </h3>
+
+          <p>
+            Growing out of the experiences with web annotation software (<a href="https://annotatorjs.org">Annotator.js</a>, <a href="https://hypothes.is">Hypothes.is</a>, and others), Apache Annotator is a collaboration between developers of annotation tools to bundle our efforts.
+          </p>
+          <p>
+            The goal is to help developers of annotation tools create their applications without having to reinvent the wheel, while applying a standards-driven approach based on the W3C’s <a href="https://www.w3.org/TR/annotation-model/">Web Annotation data model</a>, in order to facilitate an ecosystem of interoperable annotation tools — ideally making annotations an integral part of the web.
+          </p>
+          <p>
+          We are currently working on a basic set of modules for core tasks such as anchoring annotations to their targets. We welcome developers and community members interested in the future of annotation. Please reach out on <a href="https://lists.apache.org/list.html?dev@annotator.apache.org">our mailing list</a> or join us on one of our weekly calls! We'd love to have your input and help.
+          </p>
+
+          <div class="ui divider"></div>
+
+          <h3 class="ui header" id="contributing">
+            <i class="code icon"></i>
+            Code
+          </h3>
+          <div class="ui two stackable cards">
+            <div class="card">
+              <div class="content">
+                <h3 class="header">
+                  <i class="github icon"></i>
+                  <a href="https://github.com/apache/incubator-annotator" target="_blank">incubator-annotator</a>
+                </h3>
+                <div class="description">Apache Annotator code &amp; build tools</div>
+              </div>
+              <div class="extra content">
+                <div class="ui horizontal list">
+                  <a class="item" href="https://github.com/apache/incubator-annotator/stargazers" target="_blank">
+                    <i class="star icon"></i> Star
+                  </a>
+                  <a class="item" href="https://github.com/apache/incubator-annotator/watchers" target="_blank">
+                    <i class="find icon"></i> Watch
+                  </a>
+                </div>
+
+                <a class="right floated link" href="https://github.com/apache/incubator-annotator/commits" target="_blank" title="start date">
+                  <i class="calendar icon"></i> Commit Log
+                </a>
+              </div>
+            </div>
+
+            <div class="card">
+              <div class="content">
+                <h3 class="header">
+                  <i class="icon github"></i>
+                  <a href="https://github.com/apache/incubator-annotator-website" target="_blank">incubator-annotator-website</a>
+                </h3>
+                <div class="description">This site and our documentation.</div>
+              </div>
+              <div class="extra content">
+                <div class="ui horizontal list">
+                  <a class="item" href="https://github.com/apache/incubator-annotator-website/stargazers" target="_blank">
+                    <i class="star icon"></i> Star
+                  </a>
+                  <a class="item" href="https://github.com/apache/incubator-annotator-website/watchers" target="_blank">
+                    <i class="find icon"></i> Watch
+                  </a>
+                </div>
+                <a class="right floated link" href="https://github.com/apache/incubator-annotator-website/commits" target="_blank" title="start date">
+                  <i class="calendar icon"></i> Commit Log
+                </a>
+              </div>
+            </div>
+          </div>
+
+          <div class="ui divider"></div>
+
+          <h3 class="ui header" id="download"><i class="download icon"></i> Download</h3>
+          <div class="ui divided items">
+            <div class="item">
+              <div class="content">
+                <div class="header">
+                  <a href="https://www.apache.org/dyn/closer.lua?path=/incubator/annotator/source/0.1.0/apache-annotator-0.1.0-incubating.tar.gz">
+                    <i class="archive icon"></i> Source
+                  </a>
+                </div>
+                <div class="meta">
+                  <span>Version 0.1.0</span>
+                </div>
+                <div class="description">
+                  Release archive.
+                </div>
+                <div class="extra">
+                  <div class="ui horizontal link list">
+                    <a class="item" href="https://www.apache.org/dist/incubator/annotator/source/0.1.0/apache-annotator-0.1.0-incubating.tar.gz.asc">PGP Signature</a>
+                    <a class="item" href="https://www.apache.org/dist/incubator/annotator/source/0.1.0/apache-annotator-0.1.0-incubating.tar.gz.sha256">SHA256</a>
+                    <a class="item" href="https://www.apache.org/dist/incubator/annotator/source/0.1.0/apache-annotator-0.1.0-incubating.tar.gz.sha512">SHA512</a>
+                  </div>
+                  <div class="ui horizontal link list">
+                    <a class="item" href="https://github.com/apache/incubator-annotator/wiki/Testing-a-Source-Release">Instructions for verifying downloads.</a>
+                    <a class="item" href="https:/www.apache.org/dist/incubator/annotator/KEYS">KEYS file for validating signatures.</a>
+                  </div>
+                </div>
+              </div>
+            </div>
+            <div class="item">
+              <div class="content">
+                <div class="header">
+                  <a href="https://www.npmjs.com/package/apache-annotator">
+                    <i class="npm icon"></i> Package
+                  </a>
+                </div>
+                <div class="meta">
+                  <span>Version 0.1.0</span>
+                </div>
+                <div class="description">
+                  <span>Convenience package built from the release archive.</span>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+
+        <div class="six wide column">
+          <h3 class="ui header" id="mailing-lists">
+            <i class="mail icon"></i>
+            Conversations
+          </h3>
+          <p>Human interactions happen on the
+          <code><abbr title="dev@annotator.incubator.apache.org">dev@</abbr></code>
+            mailing list. Comments made via GitHub also appear there.</p>
+          <p>Subscribe to the list by sending an (empty) email to
+            <a href="mailto:dev-subscribe@annotator.incubator.apache.org?subject=subscribe&body=Just click send. It's that easy! %5E_%5E%0A%0ALove%2C%0AApache Annotator (incubating)">dev-subscribe@annotator.incubator.apache.org</a>.
+            Once you’re in, feel free to introduce yourself and tell about your interest in Annotator! </p>
+          <div class="ui vertical fluid menu" id="recent-mailings">
+            <a href="https://lists.apache.org/list.html?dev@annotator.apache.org"
+              class="header item"
+              title="View All dev@ Archives">
+              Latest <code>dev@</code> mailing list posts
+            </a>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <footer class="ui bottom attached segment">
+      <div class="ui container">
+        <div class="ui equal height divided stackable grid">
+          <div class="four wide column">
+            <a class="ui left floated medium image" href="https://apache.org/" target="_blank">
+              <img src="https://incubator.apache.org/images/incubator_feather_egg_logo_sm.png" alt="logo of the Apache Incubator" />
+            </a>
+            <p>
+              <em>Copyright © 2016-2018 The Apache Software Foundation, Licensed under
+              the <a href="https://www.apache.org/licenses/LICENSE-2.0" rel="license external">Apache License, Version 2.0</a>.
+              |
+              <a rel="external" href="https://www.apache.org/foundation/policies/privacy">Privacy Policy</a>
+              </em>
+            </p>
+          </div>
+          <div class="nine wide column">
+            <p>
+              <em>Apache Annotator is an effort undergoing incubation at <a target="_blank" href="https://apache.org/">The Apache Software Foundation (ASF)</a> sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the [...]
+            <p><em>Apache®, the names of Apache projects, and the feather logo are either <a rel="external" href="https://www.apache.org/foundation/marks/list/">registered trademarks or trademarks</a> of the Apache Software Foundation in the United States and/or other countries.</em></p>
+          </div>
+          <div class="three wide column">
+            <h4 class="header">The <abbr title="Apache Software Foundation">ASF</abbr></h4>
+            <div class="ui link list">
+              <a class="item" rel="external" href="https://incubator.apache.org/">Apache Incubator</a>
+              <a class="item" rel="external" href="https://www.apache.org/">About the ASF</a>
+              <a class="item" rel="external" href="https://www.apache.org/events/current-event">Events</a>
+              <a class="item" rel="external" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+              <a class="item" rel="external" href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a>
+              <a class="item" rel="external" href="https://www.apache.org/security/">Security</a>
+              <a class="item" rel="external" href="https://www.apache.org/licenses/">License</a>
+            </div>
+          </div>
+        </div>
+      </div>
+    </footer>
+
+    <script async defer src="index.js"></script>
+  </body>
+</html>
diff --git a/src/index.js b/src/index.js
new file mode 100644
index 0000000..6613d91
--- /dev/null
+++ b/src/index.js
@@ -0,0 +1,23 @@
+// Uses the PonyMail API to gather remote list of recent messages
+const recent_messages_url = 'https://lists.apache.org/api/stats.lua?list=dev&domain=annotator.apache.org';
+const display_count = 10;
+
+let a = document.createElement('a');
+a.className = 'item';
+a.rel = 'external';
+
+const $recent = document.getElementById('recent-mailings');
+
+fetch(recent_messages_url)
+  .then(r => r.json())
+  .then((msgs) => {
+    if ('emails' in msgs && msgs.emails.length > 0) {
+      msgs.emails.reverse();
+      for (let i = 0; i < display_count; i++) {
+        let _a = a.cloneNode(a);
+        _a.href = 'https://lists.apache.org/thread.html/' + msgs.emails[i].id;
+        _a.textContent = msgs.emails[i].subject;
+        $recent.append(_a);
+      }
+    }
+  });
diff --git a/src/site.webmanifest b/src/site.webmanifest
new file mode 100644
index 0000000..76ee99c
--- /dev/null
+++ b/src/site.webmanifest
@@ -0,0 +1,20 @@
+{
+    "name": "Apache Annotator Website",
+    "short_name": "Apache Annotator Website",
+    "icons": [
+        {
+            "src": "/images/android-chrome-192x192.png",
+            "sizes": "192x192",
+            "type": "image/png"
+        },
+        {
+            "src": "/images/android-chrome-512x512.png",
+            "sizes": "512x512",
+            "type": "image/png"
+        }
+    ],
+    "theme_color": "#ffffff",
+    "background_color": "#ffffff",
+    "start_url": "https://annotator.apache.org/",
+    "display": "standalone"
+}