aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--404.html57
-rw-r--r--LICENSE21
-rw-r--r--README.md3
-rw-r--r--_assets/blob-header.sketchbin0 -> 50331 bytes
-rwxr-xr-x_assets/default-contract.pagesbin0 -> 360585 bytes
-rw-r--r--_assets/default-contract.pdfbin0 -> 26702 bytes
-rw-r--r--_assets/dots.sketchbin0 -> 58649 bytes
-rw-r--r--_assets/icon-only.sketchbin0 -> 8450 bytes
-rw-r--r--_assets/logo.sketchbin0 -> 24019 bytes
-rw-r--r--apple-touch-icon-precomposed.pngbin0 -> 12674 bytes
-rw-r--r--favicon.pngbin0 -> 12674 bytes
-rw-r--r--images/blob-header.jpgbin0 -> 156475 bytes
-rw-r--r--images/blob-header.svg22
-rw-r--r--images/dots-blue.pngbin0 -> 412 bytes
-rw-r--r--images/dots-purple.pngbin0 -> 4160 bytes
-rw-r--r--images/dots.pngbin0 -> 412 bytes
-rw-r--r--images/logo-icon.pngbin0 -> 12674 bytes
-rw-r--r--images/logo.pngbin0 -> 15872 bytes
-rw-r--r--images/logo.svg28
-rw-r--r--images/social-image.pngbin0 -> 5446 bytes
-rw-r--r--index.html302
-rw-r--r--style.css125
22 files changed, 558 insertions, 0 deletions
diff --git a/404.html b/404.html
new file mode 100644
index 0000000..0687a85
--- /dev/null
+++ b/404.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en" dir="ltr">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
+ <title>404 | Website Audit Checklist</title>
+ <meta name="description" content="Oops! The page you're looking for doesn't seem to exist">
+ <link rel="preload" href="style.css" as="style">
+ <link rel="stylesheet" href="style.css">
+ <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/public/apple-touch-icon-precomposed.png">
+ <link rel="shortcut icon" href="favicon.png">
+ <!-- Open Graph / Facebook -->
+ <meta property="og:type" content="website">
+ <meta property="og:url" content="https://webaud.it/">
+ <meta property="og:title" content="Website Audit Checklist">
+ <meta property="og:description" content="Frontend checklist to audit your website for proper formatting, performance, accessibility, and security standards">
+ <meta property="og:image" content="https://webaud.it/images/social-image.png">
+ <!-- Twitter -->
+ <meta property="twitter:card" content="summary_large_image">
+ <meta property="twitter:url" content="https://webaud.it/">
+ <meta property="twitter:title" content="Website Audit Checklist">
+ <meta property="twitter:description" content="Frontend checklist to audit your website for proper formatting, performance, accessibility, and security standards">
+ <meta property="twitter:image" content="https://webaud.it/images/social-image.png">
+ <meta property="copyright" content="© 2006-2019 Bradley Taunt">
+</head>
+<body id="media">
+
+ <header role="banner">
+ <a href="/" class="logo"></a>
+ <a href="#main" class="skip-content">Skip to content (Press Enter)</a>
+ </header>
+
+ <main role="main" id="main">
+
+ <section role="heading" aria-label="Main heading">
+ <h1>404</h1>
+ <p>Oops. The page you're looking for doesn't seem to exist.</p>
+ <a href="/" class="btn btn--btn-important">Return to Homepage</a>
+ </section>
+
+ </main>
+
+ <footer role="contentinfo">
+ <p>
+ <small>
+ Made by <a href="https://bradleytaunt.com">Bradley Taunt</a>. &copy; 2019
+ <br>
+ This website does not track data or analytics.
+ </small>
+ </p>
+ </footer>
+
+ <script src="//instant.page/1.2.2" type="module" integrity="sha384-2xV8M5griQmzyiY3CDqh1dn4z3llDVqZDqzjzcY+jCBCk/a5fXJmuZ/40JJAPeoU"></script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..9d88e14
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Bradley Taunt
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..6450df2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# webaudit
+
+Main files for the webaudit checklist website \ No newline at end of file
diff --git a/_assets/blob-header.sketch b/_assets/blob-header.sketch
new file mode 100644
index 0000000..e1bab86
--- /dev/null
+++ b/_assets/blob-header.sketch
Binary files differ
diff --git a/_assets/default-contract.pages b/_assets/default-contract.pages
new file mode 100755
index 0000000..bf373a5
--- /dev/null
+++ b/_assets/default-contract.pages
Binary files differ
diff --git a/_assets/default-contract.pdf b/_assets/default-contract.pdf
new file mode 100644
index 0000000..f0fb98b
--- /dev/null
+++ b/_assets/default-contract.pdf
Binary files differ
diff --git a/_assets/dots.sketch b/_assets/dots.sketch
new file mode 100644
index 0000000..d1ab4dc
--- /dev/null
+++ b/_assets/dots.sketch
Binary files differ
diff --git a/_assets/icon-only.sketch b/_assets/icon-only.sketch
new file mode 100644
index 0000000..ee0e78d
--- /dev/null
+++ b/_assets/icon-only.sketch
Binary files differ
diff --git a/_assets/logo.sketch b/_assets/logo.sketch
new file mode 100644
index 0000000..ffada70
--- /dev/null
+++ b/_assets/logo.sketch
Binary files differ
diff --git a/apple-touch-icon-precomposed.png b/apple-touch-icon-precomposed.png
new file mode 100644
index 0000000..d2bc39f
--- /dev/null
+++ b/apple-touch-icon-precomposed.png
Binary files differ
diff --git a/favicon.png b/favicon.png
new file mode 100644
index 0000000..d2bc39f
--- /dev/null
+++ b/favicon.png
Binary files differ
diff --git a/images/blob-header.jpg b/images/blob-header.jpg
new file mode 100644
index 0000000..308f249
--- /dev/null
+++ b/images/blob-header.jpg
Binary files differ
diff --git a/images/blob-header.svg b/images/blob-header.svg
new file mode 100644
index 0000000..85d7a6a
--- /dev/null
+++ b/images/blob-header.svg
@@ -0,0 +1,22 @@
+<svg style="width: 100%; height: 641px;" preserveAspectRatio="none"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1440 857">
+ <defs>
+ <path d="M0 892.505c308.829 32.498 548.829 7.536 720-74.885 171.171-82.422 411.171-104.978 720-67.668V0H0v892.505z" id="a"></path>
+ </defs>
+ <g fill="none" fill-rule="evenodd">
+ <g>
+ <g id="Group-7" transform="translate(-56 -94)">
+ <g>
+ <path d="M13 959.24c338.228 31.295 603.188-5.678 794.879-110.919 191.69-105.24 456.548-139.277 794.575-102.109L1621 208 37.542 247.031 13 959.241z" id="Path-Copy" fill="#DADAFD" transform="rotate(2 817 589)"></path>
+ <g transform="translate(56)">
+ <mask fill="#fff">
+ <use xlink:href="#a"></use>
+ </mask>
+ <use fill="#7070E6" xlink:href="#a"></use>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/images/dots-blue.png b/images/dots-blue.png
new file mode 100644
index 0000000..8604a28
--- /dev/null
+++ b/images/dots-blue.png
Binary files differ
diff --git a/images/dots-purple.png b/images/dots-purple.png
new file mode 100644
index 0000000..41fb55d
--- /dev/null
+++ b/images/dots-purple.png
Binary files differ
diff --git a/images/dots.png b/images/dots.png
new file mode 100644
index 0000000..acecb11
--- /dev/null
+++ b/images/dots.png
Binary files differ
diff --git a/images/logo-icon.png b/images/logo-icon.png
new file mode 100644
index 0000000..d2bc39f
--- /dev/null
+++ b/images/logo-icon.png
Binary files differ
diff --git a/images/logo.png b/images/logo.png
new file mode 100644
index 0000000..9877b8b
--- /dev/null
+++ b/images/logo.png
Binary files differ
diff --git a/images/logo.svg b/images/logo.svg
new file mode 100644
index 0000000..c4d2a30
--- /dev/null
+++ b/images/logo.svg
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="396px" height="80px" viewBox="0 0 396 80" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
+ <title>Full Logo</title>
+ <desc>Created with Sketch.</desc>
+ <defs>
+ <circle id="path-1" cx="40" cy="40" r="40"></circle>
+ </defs>
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="Webaud.it-Logo" transform="translate(-193.000000, -253.000000)">
+ <g id="Full-Logo" transform="translate(193.000000, 253.000000)">
+ <g id="Icon-Logo">
+ <g id="Path">
+ <mask id="mask-2" fill="white">
+ <use xlink:href="#path-1"></use>
+ </mask>
+ <use id="Mask" fill="#1E90FF" xlink:href="#path-1"></use>
+ <polyline stroke="#FFFFFF" stroke-width="8.88888889" stroke-linecap="round" stroke-linejoin="round" mask="url(#mask-2)" points="80 8.88888889 35.5555556 53.3777778 22.2222222 40.0444444"></polyline>
+ </g>
+ </g>
+ <text id="webaud.it" font-family="AvenirNext-DemiBold, Avenir Next" font-size="64" font-weight="500" line-spacing="64">
+ <tspan x="100" y="72" fill="#8C8C8C">web</tspan>
+ <tspan x="228.832" y="72" fill="#1E90FF">aud.it</tspan>
+ </text>
+ </g>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/images/social-image.png b/images/social-image.png
new file mode 100644
index 0000000..1d48e95
--- /dev/null
+++ b/images/social-image.png
Binary files differ
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..b763b62
--- /dev/null
+++ b/index.html
@@ -0,0 +1,302 @@
+<!DOCTYPE html>
+<html lang="en" dir="ltr">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
+ <title>Website Audit Checklist</title>
+ <meta name="description" content="A website checklist to audit the formatting, performance, accessibility, and security of your web projects">
+ <meta name="keywords" content="web performance checklist, web accessibility checklist, html checklist, css checklit, javascript checklist, frontend checklist, developer checklist">
+ <link rel="preload" href="style.css" as="style">
+ <link rel="stylesheet" href="style.css">
+ <link rel="apple-touch-icon-precomposed" sizes="144x144" href="images/apple-touch-icon-precomposed.png">
+ <link rel="shortcut icon" href="favicon.png">
+ <!-- Open Graph / Facebook -->
+ <meta property="og:type" content="website">
+ <meta property="og:url" content="https://webaud.it/">
+ <meta property="og:title" content="Website Audit Checklist">
+ <meta property="og:description" content="Frontend checklist to audit your website for proper formatting, performance, accessibility, and security standards">
+ <meta property="og:image" content="https://webaud.it/images/social-image.png">
+ <!-- Twitter -->
+ <meta property="twitter:card" content="summary_large_image">
+ <meta property="twitter:url" content="https://webaud.it/">
+ <meta property="twitter:title" content="Website Audit Checklist">
+ <meta property="twitter:description" content="Frontend checklist to audit your website for proper formatting, performance, accessibility, and security standards">
+ <meta property="twitter:image" content="https://webaud.it/images/social-image.png">
+ <meta property="copyright" content="© 2006-2019 Bradley Taunt">
+</head>
+<body>
+
+ <header role="banner">
+ <a href="#main" class="skip-content">Skip to content (Press Enter)</a>
+ <h1><img src="images/logo-icon.png" alt="Web Audit"> Web Audit</h1>
+ <p><strong>Easily audit your website.</strong></p>
+ <p>A simplified and easy-to-use item checklist to audit your website for proper formatting, performance, accessibility, and security standards.</p>
+ </header>
+
+ <main role="main" id="main">
+
+ <!-- Formatting -->
+ <section class="first-section" role="region" aria-label="Formatting section">
+ <h2>
+ <span>Formatting</span>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"></path></svg>
+ </h2>
+ <div class="formatting-container">
+
+ <!-- Language -->
+ <article role="article">
+ <input id="lang" type="checkbox">
+ <label class="complete-label" for="lang"><span>Language &amp; Directionality</span></label>
+ <p>All pages are set with a proper <code>!DOCTYPE</code> and have language and reading directionality attributes defined.</p>
+ <ul>
+ <li><a rel="noreferrer" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang" target="_blank">Learn about language attributes</a></li>
+ <li><a rel="noreferrer" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir" target="_blank">Learn about directionality attributes</a></li>
+ </ul>
+ </article>
+
+ <!-- Meta Tags -->
+ <article role="article">
+ <input id="meta-tags" type="checkbox">
+ <label class="complete-label" for="meta-tags"><span>Meta Tags</span></label>
+ <p>Title and description tags are present across the entire project. Social meta links and favicons are included on all pages. Viewport meta tag is setup according to the project's requirements.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta">Meta tags explained</a></li>
+ <li><a rel="noreferrer" target="_blank" href="https://metatags.io">Generate meta tags, favicons and social media imagery</a></li>
+ <li><a rel="noreferrer" target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag">Learn about the viewport meta tag</a></li>
+ </ul>
+ </article>
+
+ <!-- Style & Script -->
+ <article role="article">
+ <input id="style-script" type="checkbox">
+ <label class="complete-label" for="style-script"><span>Style &amp; Script Placement</span></label>
+ <p>All CSS tags are positioned ahead of all JS tags in the DOM structure.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Organizing">Proper ordering for CSS and JavaScript</a></li>
+ </ul>
+ </article>
+
+ <!-- Responsive -->
+ <article role="article">
+ <input id="responsive-d" type="checkbox">
+ <label class="complete-label" for="responsive-d"><span>Responsive Design</span></label>
+ <p>Project layout design adapts to all devices and viewport sizes. Interactive elements work as expected in both desktop and mobile experiences. All content is available regardless of device type.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries">Learn about CSS media queries</a></li>
+ <li><a rel="noreferrer" target="_blank" href="http://mattkersley.com/responsive/">Testing responsive designs</a></li>
+ </ul>
+ </article>
+
+ </div>
+ </section>
+
+ <section role="region" aria-label="Performance section">
+ <h2>
+ <span>Performance</span>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"></path></svg>
+ </h2>
+
+ <div class="performance-container">
+
+ <!-- HTML Optimization -->
+ <article role="article">
+ <input id="html-o" type="checkbox">
+ <label class="complete-label" for="html-o"><span>HTML Optimization</span></label>
+ <p>The HTML code is minified, unnecessary comments are deleted and overly explicit attributes are removed.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://www.npmjs.com/package/html-minifier">HTML Minifier (npm)</a></li>
+ <li><a rel="noreferrer" target="_blank" href="https://css-tricks.com/the-script-tag/">Learn about the script tag</a></li>
+ </ul>
+ </article>
+
+ <!-- CSS Optimization -->
+ <article role="article">
+ <input id="css-o" type="checkbox">
+ <label class="complete-label" for="css-o"><span>CSS Optimization</span></label>
+ <p>The CSS code is minified and set to <code>preload</code>. Unused CSS is removed and critical styling is setup appropriately. There are no embedded or inline CSS styles.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://www.npmjs.com/package/clean-css">Clean-CSS (npm)</a></li>
+ <li><a rel="noreferrer" target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content">Learn about CSS preload attribute</a></li>
+ </ul>
+ </article>
+
+ <!-- JavaScript Optimization -->
+ <article role="article">
+ <input id="js-o" type="checkbox">
+ <label class="complete-label" for="js-o"><span>JavaScript Optimization</span></label>
+ <p>All JavaScript is minified, concatenated into a single file (if applicable) and non-blocking with the use of <code>defer</code> and <code>async</code>.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://www.npmjs.com/package/uglify-js">UglifyJS (npm)</a></li>
+ <li><a rel="noreferrer" target="_blank" href="https://hacks.mozilla.org/2017/09/building-the-dom-faster-speculative-parsing-async-defer-and-preload/">Learn about defer and async</a></li>
+ </ul>
+ </article>
+
+ <!-- Images -->
+ <article role="article">
+ <input id="image-o" type="checkbox">
+ <label class="complete-label" for="image-o"><span>Image Optimization</span></label>
+ <p>All images are optimized and compressed for each device screen size without direct impact to the end user. Offscreen images are handled via lazy loading and image attributes <code>height</code> / <code>width</code> are set when applicable. Proper <code>alt</code> tags are also included.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://developers.google.com/web/fundamentals/performance/lazy-loading-guidance/images-and-video/">Learn about lazy loading images</a></li>
+ <li><a rel="noreferrer" target="_blank" href="https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images">Setup dynamic responsive images</a></li>
+ </ul>
+ </article>
+
+ <!-- Font -->
+ <article role="article">
+ <input id="webfont-o" type="checkbox">
+ <label class="complete-label" for="webfont-o"><span>Webfont Optimization</span></label>
+ <p>Custom fonts do not exceed 300kb, use WOFF2 formatting, are set with <code>preconnect</code> to load faster, and avoid FOIT / FOUT / FOFT.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://www.cdnplanet.com/blog/faster-google-webfonts-preconnect/">Setting up webfonts to use preconnect</a></li>
+ <li><a rel="noreferrer" target="_blank" href="https://css-tricks.com/fout-foit-foft/">How to avoid FOIT, FOUT, FOFT</a></li>
+ </ul>
+ </article>
+
+ <!-- HTTP Requests -->
+ <article role="article">
+ <input id="http-r" type="checkbox">
+ <label class="complete-label" for="http-r"><span>Minimize HTTP Requests</span></label>
+ <p>Only the most essential files are delivered to the end user.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://blog.hubspot.com/marketing/reduce-http-requests">Reducing total HTTP requests</a></li>
+ </ul>
+ </article>
+
+ <!-- CDN -->
+ <article role="article">
+ <input id="cdn" type="checkbox">
+ <label class="complete-label" for="cdn"><span>Deliver Assets Through CDN</span></label>
+ <p>CDN is used to deliver content faster to the end user. HTTP caching is also utilized for subsequent visits.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://www.digitalocean.com/community/tutorials/using-a-cdn-to-speed-up-static-content-delivery">Using a CDN to speed up content delivery</a></li>
+ </ul>
+ </article>
+
+ <!-- GZIP -->
+ <article role="article">
+ <input id="gzip" type="checkbox">
+ <label class="complete-label" for="gzip"><span>Enable GZIP / Brotli Compression</span></label>
+ <p>The server is setup with GZIP or Brotli compression enabled.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/">Implementing GZIP compression</a></li>
+ <li><a rel="noreferrer" target="_blank" href="https://github.com/google/brotli">Brotli compression</a></li>
+ </ul>
+ </article>
+
+ </div>
+ </section>
+
+ <section role="region" aria-label="Accessibility section">
+ <h2>
+ <span>Accessibility</span>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z"></path></svg>
+ </h2>
+ <div class="accessibility-container">
+
+ <!-- Progressive Enhancement -->
+ <article role="article">
+ <input id="prog" type="checkbox">
+ <label class="complete-label" for="prog"><span>Progressive Enhancement</span></label>
+ <p>All major functionality like navigation and search fields work without JavaScript enabled. Keyboard-only navigation is also fully supported across the project. A <code>404</code> error page is also setup correctly.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://www.shopify.ca/partners/blog/what-is-progressive-enhancement-and-why-should-you-care">The importance of progressive enhancement</a></li>
+ <li><a rel="noreferrer" target=_blank href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404">404 HTTP status</a></li>
+ </ul>
+ </article>
+
+ <!-- Color Contrast -->
+ <article role="article">
+ <input id="contrast" type="checkbox">
+ <label class="complete-label" for="contrast"><span>Color Contrast</span></label>
+ <p>Project color contrast passes WCAG AA on desktop and AAA on mobile.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://www.w3.org/WAI/standards-guidelines/wcag/">Web content accessibility guidelines</a></li>
+ <li><a rel="noreferrer" target="_blank" href="https://webaim.org/resources/contrastchecker/">Color contrast checker</a></li>
+ </ul>
+ </article>
+
+ <!-- HTML5 Inputs -->
+ <article role="article">
+ <input id="html5-inputs" type="checkbox">
+ <label class="complete-label" for="html5-inputs"><span>HTML5 Specific Inputs</span></label>
+ <p>Proper input types are set for corresponding fields. Custom keyboard types are supported and working properly on mobile devices.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="http://html5doctor.com/html5-forms-input-types/">Supported HTML5 input types</a></li>
+ </ul>
+ </article>
+
+ <!-- Screen Readers -->
+ <article role="article">
+ <input id="screen-reader" type="checkbox">
+ <label class="complete-label" for="screen-reader"><span>Screen Reader Support (ARIA)</span></label>
+ <p>All pages work with standard screen readers (such as JAWS, VoiceOver, and NVDA). Elements are configured with proper <code>role</code> and <code>aria</code> attributes.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://a11yproject.com/posts/aria-landmark-roles/">ARIA Landmark roles and HTML5 implicit mapping</a></li>
+ <li><a rel="noreferrer" target="_blank" href="https://www.powermapper.com/tests/screen-readers/aria/">Screen reader compatibility list</a></li>
+ </ul>
+ </article>
+
+ </div>
+ </section>
+
+ <section role="region" aria-label="Security section">
+ <h2>
+ <span>Security</span>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"></path></svg>
+ </h2>
+ <div class="security-container">
+
+ <!-- SSL -->
+ <article role="article">
+ <input id="ssl" type="checkbox">
+ <label class="complete-label" for="ssl"><span>SSL Certificate</span></label>
+ <p>Website has a valid SSL certificate and all URLs are passed through HTTPS protocol.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://letsencrypt.org">Setup free SSL certificate</a></li>
+ </ul>
+ </article>
+
+ <!-- Passwords -->
+ <article role="article">
+ <input id="admin-passwords" type="checkbox">
+ <label class="complete-label" for="admin-passwords"><span>Secure Passwords</span></label>
+ <p>All database / CMS administrative passwords are strong and secure.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://edu.gcfglobal.org/en/internetsafety/creating-strong-passwords/1/">Creating strong passwords</a></li>
+ </ul>
+ </article>
+
+ <!-- Database -->
+ <article role="article">
+ <input id="backup" type="checkbox">
+ <label class="complete-label" for="backup"><span>Website &amp; Database Backups</span></label>
+ <p>Project files and associated databases are backed-up regularly. Automated recovery builds are highly suggested.</p>
+ <ul>
+ <li><a rel="noreferrer" target="_blank" href="https://bup.github.io">Bup - backup system based on git</a></li>
+ <li><a rel="noreferrer" target="_blank" target=_blank href="https://www.wpbeginner.com/plugins/7-best-wordpress-backup-plugins-compared-pros-and-cons/">WordPress backup services</a></li>
+ </ul>
+ </article>
+
+ </div>
+ </section>
+
+ </main>
+
+ <footer role="contentinfo">
+ <p>
+ <small>
+ The content for this site is <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>.
+ <br>
+ The <a href="https://git.sr.ht/~bt/webaudit">code for this site</a> is <a href="https://git.sr.ht/~bt/webaudit/tree/master/item/LICENSE">MIT</a>.
+ <br>
+ Made by <a href="https://bt.ht">Bradley Taunt</a> with &hearts; for the web.
+ <br>
+ This website does not track data or analytics.
+ </small>
+ </p>
+ </footer>
+
+</body>
+</html> \ No newline at end of file
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..cf11699
--- /dev/null
+++ b/style.css
@@ -0,0 +1,125 @@
+* {
+ box-sizing: border-box;
+}
+
+html {
+ line-height: 1.4;
+ -webkit-text-size-adjust: 100%;
+}
+
+body {
+ background: white;
+ color: #444;
+ font-family: "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 18px;
+ margin: 0;
+ padding: 0 20px;
+}
+h1 {
+ align-items: center;
+ display: flex;
+ margin-top: 10px;
+}
+h1 img {
+ margin-right: 10px;
+ padding-top: 2px;
+ width: 30px;
+}
+h2 {
+ align-items: center;
+ background: #DDEAF0;
+ border-left: 10px solid #21759b;
+ color: #21759b;
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 40px;
+ padding: 10px 15px;
+ line-height: 1;
+}
+h2 svg {
+ height: 30px;
+}
+h2 svg path {
+ fill: #21759b;
+}
+
+a,a:visited {
+ color: #21759b;
+}
+a:hover {
+ color: black;
+}
+
+ul li, ol li {
+ margin-bottom: 10px;
+}
+
+header, main, footer {
+ display: block;
+ margin: 0 auto 80px;
+ max-width: 720px;
+}
+header {
+ padding-top: 40px;
+}
+main section {
+ margin-bottom: 80px;
+}
+main section article {
+ margin-bottom: 60px;
+ padding-left: 10px;
+}
+
+input[type="checkbox"] {
+ opacity: 0;
+ position: absolute;
+ z-index: -1;
+}
+input[type="checkbox"] + label {
+ cursor: pointer;
+ display: inline-block;
+ font-weight: bold;
+ padding-left: 36px;
+ position: relative;
+ user-select: none;
+ width: 100%;
+}
+input[type="checkbox"] + label:before {
+ background: white;
+ border: 3px solid lightgrey;
+ content:'';
+ height: 20px;
+ left: 0;
+ position: absolute;
+ top: calc(50% - 13px);
+ width: 20px;
+}
+input[type="checkbox"]:checked + label:before {
+ background-color: #21759b;
+ background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyNiIgaGVpZ2h0PSIyMCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIyLjAyOTY4IC00MC4wOTAzIDI2IDIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48IS0tR2VuZXJhdGVkIGJ5IElKU1ZHIChodHRwczovL2dpdGh1Yi5jb20vaWNvbmphci9JSlNWRyktLT48cGF0aCBkPSJNMjcuOTc0MywtMzYuMTI3MmMwLDAuNDQ2NDI4IC0wLjE1NjI1LDAuODI1ODkzIC0wLjQ2ODc1LDEuMTM4MzlsLTEyLjEyMDUsMTIuMTIwNWwtMi4yNzY3OSwyLjI3Njc5Yy0wLjMxMjUsMC4zMTI1IC0wLjY5MTk2NCwwLjQ2ODc1IC0xLjEzODM5LDAuNDY4NzVjLTAuNDQ2NDI4LDAgLTAuODI1ODkzLC0wLjE1NjI1IC0xLjEzODM5LC0wLjQ2ODc1bC0yLjI3Njc5LC0yLjI3Njc5bC02LjA2MDI3LC02LjA2MDI3Yy0wLjMxMjUsLTAuMzEyNSAtMC40Njg3NSwtMC42OTE5NjUgLTAuNDY4NzUsLTEuMTM4MzljMCwtMC40NDY0MjkgMC4xNTYyNSwtMC44MjU4OTMgMC40Njg3NSwtMS4xMzgzOWwyLjI3Njc5LC0yLjI3Njc5YzAuMzEyNSwtMC4zMTI1IDAuNjkxOTY1LC0wLjQ2ODc1IDEuMTM4MzksLTAuNDY4NzVjMC40NDY0MjksMCAwLjgyNTg5MywwLjE1NjI1IDEuMTM4MzksMC40Njg3NWw0LjkyMTg4LDQuOTM4NjJsMTAuOTgyMSwtMTAuOTk4OWMwLjMxMjUsLTAuMzEyNSAwLjY5MTk2NCwtMC40Njg3NSAxLjEzODM5LC0wLjQ2ODc1YzAuNDQ2NDI4LDAgMC44MjU4OTMsMC4xNTYyNSAxLjEzODM5LDAuNDY4NzVsMi4yNzY3OCwyLjI3Njc5YzAuMzEyNSwwLjMxMjUgMC40Njg3NSwwLjY5MTk2NCAwLjQ2ODc1LDEuMTM4MzlaIiB0cmFuc2Zvcm09InNjYWxlKDEuMDAxOTgpIiBmaWxsPSIjZmZmIj48L3BhdGg+PC9zdmc+");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 12px;
+ border-color: #21759b;
+}
+input[type="checkbox"]:focus + label:before {
+ border-color: #21759b;
+}
+
+.skip-content {
+ background: #21759b;
+ color: white !important;
+ left: -9999px;
+ padding: 0.5rem;
+ position: absolute;
+ top: 0;
+}
+.skip-content:focus {
+ left: 1rem;
+}
+
+footer {
+ border-top: 1px solid lightgrey;
+ padding-top: 20px;
+}
+