This commit is contained in:
Grant 2025-03-16 11:20:59 -06:00
commit b6d8497df5
49 changed files with 3376 additions and 0 deletions

4
.gitmodules vendored Normal file
View File

@ -0,0 +1,4 @@
[submodule "themes/kayal"]
path = themes/kayal
url = https://github.com/mnjm/kayal.git
branch = main

0
.hugo_build.lock Normal file
View File

5
archetypes/default.md Normal file
View File

@ -0,0 +1,5 @@
+++
date = '{{ .Date }}'
draft = true
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
+++

1
assets/icons/gitea.svg Normal file
View File

@ -0,0 +1 @@
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m5.583 7.229c-2.464-.005-5.755 1.557-5.573 5.479.281 6.125 6.557 6.693 9.068 6.745.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-.38 10.036-17.365 6.854-17.427-5.271.25-8.396.375-11.073.396v5.297l-.839-.365-.005-4.932c-3.073 0-5.781-.141-10.917-.396-.646-.005-1.542-.115-2.5-.115zm.344 2.167h.297c.349 3.141.917 4.974 2.068 7.781-2.938-.349-5.432-1.198-5.891-4.38-.24-1.646.563-3.365 3.526-3.401zm11.412 3.083c.198.005.406.042.594.13l1 .432-.714 1.302c-.109 0-.219.016-.323.052-.464.151-.708.604-.542 1.021.036.083.089.161.151.229l-1.234 2.25c-.099 0-.203.016-.297.052-.464.146-.708.604-.542 1.016.172.417.682.63 1.151.479.464-.146.703-.604.536-1.021-.047-.109-.115-.208-.208-.292l1.203-2.188c.13.01.26 0 .391-.042.104-.031.198-.083.281-.151.464.198.844.354 1.12.49.406.203.552.339.599.49.042.146-.005.427-.24.922-.172.37-.458.896-.797 1.51-.115 0-.229.016-.333.052-.469.151-.708.604-.542 1.021.167.411.682.625 1.146.479.469-.151.708-.604.542-1.021-.042-.099-.104-.193-.182-.271.333-.609.62-1.135.807-1.526.25-.536.38-.938.266-1.323s-.469-.635-.932-.865c-.307-.151-.693-.313-1.146-.505.005-.109-.01-.214-.052-.318s-.109-.198-.193-.281l.703-1.281 3.901 1.682c.703.307.995 1.057.651 1.682l-2.682 4.906c-.339.625-1.182.885-1.885.578l-5.516-2.38c-.703-.307-.995-1.057-.656-1.682l2.682-4.906c.234-.432.708-.688 1.208-.708h.083z"/></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
assets/incngrnt.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

View File

@ -0,0 +1,8 @@
baseURL = 'https://incngrnt.ca/'
languageCode = 'en-ca'
title = 'incngrnt'
theme = 'kayal'
[outputs]
home = ["HTML","RSS","JSON"]

View File

@ -0,0 +1,11 @@
[[main]]
name = "behind-icngrnt"
title = "Behind icngrnt"
url = "/behind-incngrnt/"
weight = 1
[[main]]
name = "Gitea"
title = ""
pre = "gitea"
url = "https://git.incngrnt.ca/grant"
weight = 4

View File

@ -0,0 +1,10 @@
logo = "incngrnt.webp"
copyright = "Grant Hunter"
inhancedTitle = "<span>inc</span><span class='flicker'>o</span><span>ngr</span><span class='flicker'>ue</span><span>nt</span>"
enableSearch = false
[homepage]
showRecent = false
[homepage.profile]
headline = 'Just a little different'

16
content/_index.md Normal file
View File

@ -0,0 +1,16 @@
Incngrnt is an experiment in host applications and services, usually run by huge
corporations, on a small community scale. Using cloud technologies to enhance
redundancy and maintainability while keeping as much as possible hosted locally.
This project provides modern applications and services for friends and family,
offering the convenience of cloud-based tools without sacrificing data privacy.
The current instance, cheekily names Fog, is a [Kubernetes](https://kubernetes.io/)
cluster of 3 [Talos Linux](https://www.talos.dev/) nodes. It uses [Ceph](https://ceph.io/en/)
as the storage layer and [Metallb](https://metallb.io/) and
[Traefik](https://traefik.io/traefik/) for networking. The whole cluster has a has backup
[batteries](https://www.ecoflow.com/ca) in the event of a power failure. All configuration
and setup docs live in a self-hosted [git repo](https://git.incngrnt.ca/grant/fog)
running directly on Fog.

View File

View File

@ -0,0 +1,6 @@
---
title: 'Grant Hunter'
showToC: false
---

View File

@ -0,0 +1,21 @@
<style>
@importrt url(https://fonts.googleapis.com/css?family=Exo+2:200i);
.title {
font-size: 24px;
font-family: 'Exo 2', sans-serif;
font-weight: lighter;
}
.title .flicker {
animation: flicker 3s linear infinite;
}
@keyframes flicker {
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% {
opacity: .1;
}
20%, 21.999%, 63%, 63.999%, 65%, 69.999% {
opacity: 0.99;
}
}
</style>

View File

@ -0,0 +1,82 @@
<header>
{{ if .Site.Params.logo }}
<a class="title" href="{{ "" | relLangURL}}">
{{ $imgData := dict "Page" . "URL" .Site.Params.logo "Alt" "Site Logo" "Size" "64x64" }}
{{ partial "image-renderer.html" $imgData }}
</a>
{{ end }}
<div class="header-cntr">
<a class="title" href="{{ "" | relLangURL}}">
<span>{{ .Site.Params.InhancedTitle | emojify }}</span>
</a>
<div class="menu">
<nav id="main-menu" class="mm-normal">
<ul>
<li> <button id="mob-x-icon" class="menu-btn" arial-label="x-icon"> {{ partial "icon.html" "xmark" }} </button> </li>
{{ range .Site.Menus.main }}
<li><a href="{{ .URL }}" aria-label="{{ .Name }}">
{{ if .Pre }}
<span>
{{ partial "icon.html" .Pre }}
</span>
{{ end }}{{ .Title | emojify }}</li></a>
{{ end }}
</ul>
</nav>
<div class="side-menu">
{{ partial "search.html" . }}
{{ if .Site.Params.showThemeSwitcher | default false }}
<button id="theme-switcher" class="menu-btn" aria-label="Theme switcher">
<div id="moon">
{{ partial "icon.html" "moon" }}
</div>
<div id="sun">
{{ partial "icon.html" "sun" }}
</div>
</button>
{{ end }}
</div>
<button id="mob-hb-icon" class="menu-btn" aria-label="Hamburger icon">
{{ partial "icon.html" "bars" }}
</button>
</div>
<script>
(function() {
document.addEventListener('DOMContentLoaded', function() {
const openBtn = document.getElementById('mob-hb-icon');
const closeBtn = document.getElementById('mob-x-icon');
const mainMenu = document.getElementById('main-menu');
const body = document.body;
openBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-normal', 'mm-mobile-open');
closeBtn.style.display = 'block';
body.style.overflow = 'hidden';
});
closeBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-mobile-open', 'mm-normal');
closeBtn.style.display = 'none';
body.style.overflow = '';
});
})
})();
</script>
{{ if .Site.Params.highlightCurrentMenu }}
<script>
(function() {
var mainmenu = document.getElementById('main-menu');
if (!mainmenu) return;
var path = window.location.pathname;
var links = mainmenu.querySelectorAll('a');
links.forEach(function(link) {
if (link.getAttribute('href') === path) {
link.classList.add('active');
}
});
})();
</script>
{{ end }}
</div>
</header>

359
public/404.html Normal file
View File

@ -0,0 +1,359 @@
<!DOCTYPE html>
<html lang="en-ca" dir="ltr">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta http-equiv="content-language" content="en-ca" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>404 Page not found &middot; incngrnt</title>
<meta name="title" content="404 Page not found &middot; incngrnt" />
<meta name="description" content="A Hugo Theme" />
<link rel="canonical" href="http://localhost:1313/404.html" />
<link rel="stylesheet" href="/css/theme.css">
<link rel="stylesheet" href="/css/main.css">
<script src="/js/theme.js"></script>
<script src="/js/codecopy.js"></script>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<meta property="og:url" content="http://localhost:1313/404.html">
<meta property="og:site_name" content="incngrnt">
<meta property="og:title" content="404 Page not found">
<meta property="og:description" content="A Hugo Theme">
<meta property="og:locale" content="en_ca">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="404 Page not found">
<meta name="twitter:description" content="A Hugo Theme">
<link rel="preload" href="http://localhost:1313/fonts/Ubuntu-Regular.woff2" as="font" type="font/woff2" crossorigin>
<style>
@importrt url(https://fonts.googleapis.com/css?family=Exo+2:200i);
.title {
font-size: 24px;
font-family: 'Exo 2', sans-serif;
font-weight: lighter;
}
.title .flicker {
animation: flicker 3s linear infinite;
}
@keyframes flicker {
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% {
opacity: .1;
}
20%, 21.999%, 63%, 63.999%, 65%, 69.999% {
opacity: 0.99;
}
}
</style>
</head>
<body>
<script>
const siteTheme = "auto";
let savedTheme = localStorage.getItem('theme') || siteTheme;
if (savedTheme == 'auto') {
if ( window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ) {
savedTheme = 'dark';
}
}
if (savedTheme === "dark") {
document.body.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
</script>
<div class="content">
<header>
<a class="title" href="/">
<img loading="lazy"
src="/incngrnt.webp"
alt="Site Logo" />
</a>
<div class="header-cntr">
<a class="title" href="/">
<span><span>inc</span><span class='flicker'>o</span><span>ngr</span><span class='flicker'>ue</span><span>nt</span></span>
</a>
<div class="menu">
<nav id="main-menu" class="mm-normal">
<ul>
<li> <button id="mob-x-icon" class="menu-btn" arial-label="x-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button> </li>
<li><a href="/behind-incngrnt/" aria-label="behind-icngrnt">
Behind icngrnt</li></a>
<li><a href="https://git.incngrnt.ca/grant" aria-label="Gitea">
<span>
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m5.583 7.229c-2.464-.005-5.755 1.557-5.573 5.479.281 6.125 6.557 6.693 9.068 6.745.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-.38 10.036-17.365 6.854-17.427-5.271.25-8.396.375-11.073.396v5.297l-.839-.365-.005-4.932c-3.073 0-5.781-.141-10.917-.396-.646-.005-1.542-.115-2.5-.115zm.344 2.167h.297c.349 3.141.917 4.974 2.068 7.781-2.938-.349-5.432-1.198-5.891-4.38-.24-1.646.563-3.365 3.526-3.401zm11.412 3.083c.198.005.406.042.594.13l1 .432-.714 1.302c-.109 0-.219.016-.323.052-.464.151-.708.604-.542 1.021.036.083.089.161.151.229l-1.234 2.25c-.099 0-.203.016-.297.052-.464.146-.708.604-.542 1.016.172.417.682.63 1.151.479.464-.146.703-.604.536-1.021-.047-.109-.115-.208-.208-.292l1.203-2.188c.13.01.26 0 .391-.042.104-.031.198-.083.281-.151.464.198.844.354 1.12.49.406.203.552.339.599.49.042.146-.005.427-.24.922-.172.37-.458.896-.797 1.51-.115 0-.229.016-.333.052-.469.151-.708.604-.542 1.021.167.411.682.625 1.146.479.469-.151.708-.604.542-1.021-.042-.099-.104-.193-.182-.271.333-.609.62-1.135.807-1.526.25-.536.38-.938.266-1.323s-.469-.635-.932-.865c-.307-.151-.693-.313-1.146-.505.005-.109-.01-.214-.052-.318s-.109-.198-.193-.281l.703-1.281 3.901 1.682c.703.307.995 1.057.651 1.682l-2.682 4.906c-.339.625-1.182.885-1.885.578l-5.516-2.38c-.703-.307-.995-1.057-.656-1.682l2.682-4.906c.234-.432.708-.688 1.208-.708h.083z"/></svg>
</span>
</li></a>
</ul>
</nav>
<div class="side-menu">
<div id="search-container" data-url="http://localhost:1313/">
<div class="search">
<div class="panel">
<form>
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
<input type="search" id="search-query" placeholder="Search" tabindex=0 autocomplete="off"/>
<button id="search-close" title="Cancel (ESC)">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button>
</form>
</div>
<ul id="search-results">
</ul>
</div>
</div>
<button id="theme-switcher" class="menu-btn" aria-label="Theme switcher">
<div id="moon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
</div>
<div id="sun">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
</div>
</button>
</div>
<button id="mob-hb-icon" class="menu-btn" aria-label="Hamburger icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
</button>
</div>
<script>
(function() {
document.addEventListener('DOMContentLoaded', function() {
const openBtn = document.getElementById('mob-hb-icon');
const closeBtn = document.getElementById('mob-x-icon');
const mainMenu = document.getElementById('main-menu');
const body = document.body;
openBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-normal', 'mm-mobile-open');
closeBtn.style.display = 'block';
body.style.overflow = 'hidden';
});
closeBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-mobile-open', 'mm-normal');
closeBtn.style.display = 'none';
body.style.overflow = '';
});
})
})();
</script>
<script>
(function() {
var mainmenu = document.getElementById('main-menu');
if (!mainmenu) return;
var path = window.location.pathname;
var links = mainmenu.querySelectorAll('a');
links.forEach(function(link) {
if (link.getAttribute('href') === path) {
link.classList.add('active');
}
});
})();
</script>
</div>
</header>
<main>
<h1>404 Not Found 🙁 </h1>
<p>It seems the page you're looking for has been moved or, in rare cases, removed.</p>
<p>
<a href="/">
Return to the home page?
</a>
</p>
</main>
<footer>
<div class="copyright">
© 2025 Grant Hunter
</div>
<div class="attribution">
Built with <a href="https://gohugo.io" target="_blank">Hugo</a> & <a href="https://github.com/mnjm/kayal" target="_blank">Kayal</a>
</div>
</footer>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 KiB

BIN
public/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -0,0 +1,389 @@
<!DOCTYPE html>
<html lang="en-ca" dir="ltr">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta http-equiv="content-language" content="en-ca" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Grant Hunter &middot; incngrnt</title>
<meta name="title" content="Grant Hunter &middot; incngrnt" />
<meta name="description" content="A Hugo Theme" />
<link rel="canonical" href="http://localhost:1313/behind-incngrnt/" />
<link rel="stylesheet" href="/css/theme.css">
<link rel="stylesheet" href="/css/main.css">
<script src="/js/theme.js"></script>
<script src="/js/codecopy.js"></script>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="alternate" type="application/rss+xml" href="/behind-incngrnt/index.xml" title="incngrnt" />
<meta property="og:url" content="http://localhost:1313/behind-incngrnt/">
<meta property="og:site_name" content="incngrnt">
<meta property="og:title" content="Grant Hunter">
<meta property="og:description" content="A Hugo Theme">
<meta property="og:locale" content="en_ca">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Grant Hunter">
<meta name="twitter:description" content="A Hugo Theme">
<link rel="preload" href="http://localhost:1313/fonts/Ubuntu-Regular.woff2" as="font" type="font/woff2" crossorigin>
<style>
@importrt url(https://fonts.googleapis.com/css?family=Exo+2:200i);
.title {
font-size: 24px;
font-family: 'Exo 2', sans-serif;
font-weight: lighter;
}
.title .flicker {
animation: flicker 3s linear infinite;
}
@keyframes flicker {
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% {
opacity: .1;
}
20%, 21.999%, 63%, 63.999%, 65%, 69.999% {
opacity: 0.99;
}
}
</style>
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/behind-incngrnt/index.xml" title="incngrnt">
</head>
<body>
<script>
const siteTheme = "auto";
let savedTheme = localStorage.getItem('theme') || siteTheme;
if (savedTheme == 'auto') {
if ( window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ) {
savedTheme = 'dark';
}
}
if (savedTheme === "dark") {
document.body.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
</script>
<div class="content">
<header>
<a class="title" href="/">
<img loading="lazy"
src="/incngrnt.webp"
alt="Site Logo" />
</a>
<div class="header-cntr">
<a class="title" href="/">
<span><span>inc</span><span class='flicker'>o</span><span>ngr</span><span class='flicker'>ue</span><span>nt</span></span>
</a>
<div class="menu">
<nav id="main-menu" class="mm-normal">
<ul>
<li> <button id="mob-x-icon" class="menu-btn" arial-label="x-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button> </li>
<li><a href="/behind-incngrnt/" aria-label="behind-icngrnt">
Behind icngrnt</li></a>
<li><a href="https://git.incngrnt.ca/grant" aria-label="Gitea">
<span>
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m5.583 7.229c-2.464-.005-5.755 1.557-5.573 5.479.281 6.125 6.557 6.693 9.068 6.745.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-.38 10.036-17.365 6.854-17.427-5.271.25-8.396.375-11.073.396v5.297l-.839-.365-.005-4.932c-3.073 0-5.781-.141-10.917-.396-.646-.005-1.542-.115-2.5-.115zm.344 2.167h.297c.349 3.141.917 4.974 2.068 7.781-2.938-.349-5.432-1.198-5.891-4.38-.24-1.646.563-3.365 3.526-3.401zm11.412 3.083c.198.005.406.042.594.13l1 .432-.714 1.302c-.109 0-.219.016-.323.052-.464.151-.708.604-.542 1.021.036.083.089.161.151.229l-1.234 2.25c-.099 0-.203.016-.297.052-.464.146-.708.604-.542 1.016.172.417.682.63 1.151.479.464-.146.703-.604.536-1.021-.047-.109-.115-.208-.208-.292l1.203-2.188c.13.01.26 0 .391-.042.104-.031.198-.083.281-.151.464.198.844.354 1.12.49.406.203.552.339.599.49.042.146-.005.427-.24.922-.172.37-.458.896-.797 1.51-.115 0-.229.016-.333.052-.469.151-.708.604-.542 1.021.167.411.682.625 1.146.479.469-.151.708-.604.542-1.021-.042-.099-.104-.193-.182-.271.333-.609.62-1.135.807-1.526.25-.536.38-.938.266-1.323s-.469-.635-.932-.865c-.307-.151-.693-.313-1.146-.505.005-.109-.01-.214-.052-.318s-.109-.198-.193-.281l.703-1.281 3.901 1.682c.703.307.995 1.057.651 1.682l-2.682 4.906c-.339.625-1.182.885-1.885.578l-5.516-2.38c-.703-.307-.995-1.057-.656-1.682l2.682-4.906c.234-.432.708-.688 1.208-.708h.083z"/></svg>
</span>
</li></a>
</ul>
</nav>
<div class="side-menu">
<div id="search-container" data-url="http://localhost:1313/">
<div class="search">
<div class="panel">
<form>
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
<input type="search" id="search-query" placeholder="Search" tabindex=0 autocomplete="off"/>
<button id="search-close" title="Cancel (ESC)">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button>
</form>
</div>
<ul id="search-results">
</ul>
</div>
</div>
<button id="theme-switcher" class="menu-btn" aria-label="Theme switcher">
<div id="moon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
</div>
<div id="sun">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
</div>
</button>
</div>
<button id="mob-hb-icon" class="menu-btn" aria-label="Hamburger icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
</button>
</div>
<script>
(function() {
document.addEventListener('DOMContentLoaded', function() {
const openBtn = document.getElementById('mob-hb-icon');
const closeBtn = document.getElementById('mob-x-icon');
const mainMenu = document.getElementById('main-menu');
const body = document.body;
openBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-normal', 'mm-mobile-open');
closeBtn.style.display = 'block';
body.style.overflow = 'hidden';
});
closeBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-mobile-open', 'mm-normal');
closeBtn.style.display = 'none';
body.style.overflow = '';
});
})
})();
</script>
<script>
(function() {
var mainmenu = document.getElementById('main-menu');
if (!mainmenu) return;
var path = window.location.pathname;
var links = mainmenu.querySelectorAll('a');
links.forEach(function(link) {
if (link.getAttribute('href') === path) {
link.classList.add('active');
}
});
})();
</script>
</div>
</header>
<main>
<h1 class="pg-title">
Grant Hunter
</h1>
<section class="lst-content">
<ul class="lst-card">
</ul>
</section>
</main>
<footer>
<div class="copyright">
© 2025 Grant Hunter
</div>
<div class="attribution">
Built with <a href="https://gohugo.io" target="_blank">Hugo</a> & <a href="https://github.com/mnjm/kayal" target="_blank">Kayal</a>
</div>
</footer>
</div>
</body>
</html>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Grant Hunter on incngrnt</title>
<link>http://localhost:1313/behind-incngrnt/</link>
<description>Recent content in Grant Hunter on incngrnt</description>
<generator>Hugo -- 0.145.0</generator>
<language>en-ca</language>
<atom:link href="http://localhost:1313/behind-incngrnt/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en-ca">
<head>
<title>http://localhost:1313/behind-incngrnt/</title>
<link rel="canonical" href="http://localhost:1313/behind-incngrnt/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/behind-incngrnt/">
</head>
</html>

View File

@ -0,0 +1,365 @@
<!DOCTYPE html>
<html lang="en-ca" dir="ltr">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta http-equiv="content-language" content="en-ca" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Categories &middot; incngrnt</title>
<meta name="title" content="Categories &middot; incngrnt" />
<meta name="description" content="A Hugo Theme" />
<link rel="canonical" href="http://localhost:1313/categories/" />
<link rel="stylesheet" href="/css/theme.css">
<link rel="stylesheet" href="/css/main.css">
<script src="/js/theme.js"></script>
<script src="/js/codecopy.js"></script>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="alternate" type="application/rss+xml" href="/categories/index.xml" title="incngrnt" />
<meta property="og:url" content="http://localhost:1313/categories/">
<meta property="og:site_name" content="incngrnt">
<meta property="og:title" content="Categories">
<meta property="og:description" content="A Hugo Theme">
<meta property="og:locale" content="en_ca">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Categories">
<meta name="twitter:description" content="A Hugo Theme">
<link rel="preload" href="http://localhost:1313/fonts/Ubuntu-Regular.woff2" as="font" type="font/woff2" crossorigin>
<style>
@importrt url(https://fonts.googleapis.com/css?family=Exo+2:200i);
.title {
font-size: 24px;
font-family: 'Exo 2', sans-serif;
font-weight: lighter;
}
.title .flicker {
animation: flicker 3s linear infinite;
}
@keyframes flicker {
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% {
opacity: .1;
}
20%, 21.999%, 63%, 63.999%, 65%, 69.999% {
opacity: 0.99;
}
}
</style>
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/categories/index.xml" title="incngrnt">
</head>
<body>
<script>
const siteTheme = "auto";
let savedTheme = localStorage.getItem('theme') || siteTheme;
if (savedTheme == 'auto') {
if ( window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ) {
savedTheme = 'dark';
}
}
if (savedTheme === "dark") {
document.body.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
</script>
<div class="content">
<header>
<a class="title" href="/">
<img loading="lazy"
src="/incngrnt.webp"
alt="Site Logo" />
</a>
<div class="header-cntr">
<a class="title" href="/">
<span><span>inc</span><span class='flicker'>o</span><span>ngr</span><span class='flicker'>ue</span><span>nt</span></span>
</a>
<div class="menu">
<nav id="main-menu" class="mm-normal">
<ul>
<li> <button id="mob-x-icon" class="menu-btn" arial-label="x-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button> </li>
<li><a href="/behind-incngrnt/" aria-label="behind-icngrnt">
Behind icngrnt</li></a>
<li><a href="https://git.incngrnt.ca/grant" aria-label="Gitea">
<span>
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m5.583 7.229c-2.464-.005-5.755 1.557-5.573 5.479.281 6.125 6.557 6.693 9.068 6.745.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-.38 10.036-17.365 6.854-17.427-5.271.25-8.396.375-11.073.396v5.297l-.839-.365-.005-4.932c-3.073 0-5.781-.141-10.917-.396-.646-.005-1.542-.115-2.5-.115zm.344 2.167h.297c.349 3.141.917 4.974 2.068 7.781-2.938-.349-5.432-1.198-5.891-4.38-.24-1.646.563-3.365 3.526-3.401zm11.412 3.083c.198.005.406.042.594.13l1 .432-.714 1.302c-.109 0-.219.016-.323.052-.464.151-.708.604-.542 1.021.036.083.089.161.151.229l-1.234 2.25c-.099 0-.203.016-.297.052-.464.146-.708.604-.542 1.016.172.417.682.63 1.151.479.464-.146.703-.604.536-1.021-.047-.109-.115-.208-.208-.292l1.203-2.188c.13.01.26 0 .391-.042.104-.031.198-.083.281-.151.464.198.844.354 1.12.49.406.203.552.339.599.49.042.146-.005.427-.24.922-.172.37-.458.896-.797 1.51-.115 0-.229.016-.333.052-.469.151-.708.604-.542 1.021.167.411.682.625 1.146.479.469-.151.708-.604.542-1.021-.042-.099-.104-.193-.182-.271.333-.609.62-1.135.807-1.526.25-.536.38-.938.266-1.323s-.469-.635-.932-.865c-.307-.151-.693-.313-1.146-.505.005-.109-.01-.214-.052-.318s-.109-.198-.193-.281l.703-1.281 3.901 1.682c.703.307.995 1.057.651 1.682l-2.682 4.906c-.339.625-1.182.885-1.885.578l-5.516-2.38c-.703-.307-.995-1.057-.656-1.682l2.682-4.906c.234-.432.708-.688 1.208-.708h.083z"/></svg>
</span>
</li></a>
</ul>
</nav>
<div class="side-menu">
<div id="search-container" data-url="http://localhost:1313/">
<div class="search">
<div class="panel">
<form>
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
<input type="search" id="search-query" placeholder="Search" tabindex=0 autocomplete="off"/>
<button id="search-close" title="Cancel (ESC)">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button>
</form>
</div>
<ul id="search-results">
</ul>
</div>
</div>
<button id="theme-switcher" class="menu-btn" aria-label="Theme switcher">
<div id="moon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
</div>
<div id="sun">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
</div>
</button>
</div>
<button id="mob-hb-icon" class="menu-btn" aria-label="Hamburger icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
</button>
</div>
<script>
(function() {
document.addEventListener('DOMContentLoaded', function() {
const openBtn = document.getElementById('mob-hb-icon');
const closeBtn = document.getElementById('mob-x-icon');
const mainMenu = document.getElementById('main-menu');
const body = document.body;
openBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-normal', 'mm-mobile-open');
closeBtn.style.display = 'block';
body.style.overflow = 'hidden';
});
closeBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-mobile-open', 'mm-normal');
closeBtn.style.display = 'none';
body.style.overflow = '';
});
})
})();
</script>
<script>
(function() {
var mainmenu = document.getElementById('main-menu');
if (!mainmenu) return;
var path = window.location.pathname;
var links = mainmenu.querySelectorAll('a');
links.forEach(function(link) {
if (link.getAttribute('href') === path) {
link.classList.add('active');
}
});
})();
</script>
</div>
</header>
<main>
<h2> Categories </h2>
<div class="taxny-card-container">
</div>
</ul>
</main>
<footer>
<div class="copyright">
© 2025 Grant Hunter
</div>
<div class="attribution">
Built with <a href="https://gohugo.io" target="_blank">Hugo</a> & <a href="https://github.com/mnjm/kayal" target="_blank">Kayal</a>
</div>
</footer>
</div>
</body>
</html>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Categories on incngrnt</title>
<link>http://localhost:1313/categories/</link>
<description>Recent content in Categories on incngrnt</description>
<generator>Hugo -- 0.145.0</generator>
<language>en-ca</language>
<atom:link href="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

1000
public/css/main.css Normal file

File diff suppressed because it is too large Load Diff

34
public/css/theme.css Normal file
View File

@ -0,0 +1,34 @@
:root{
--ff: 'Ubuntu';
--radius: 6px;
--primary-color: #292929;
--secondary-color: #EFEFE6;
--tertiary-color: #E0002D;
--link-color: #449DD1;
--tertiary-color-light: #FFB370;
--secondary-color-dark: #DFDFCD;
--black: #292929;
--code-bg: #272822; /*Monokai*/
--code-fg: #f8f8f2; /*Monokai*/
--code-scroll-thumb: #525252;
--scrollbar-track: #EFEFE6;
--scrollbar-thumb: #B7B78F;
}
.dark {
--primary-color: #EFEFE6;
--secondary-color: #292929;
--tertiary-color: #FF7F11;
--tertiary-color-light: #A34C00;
--secondary-color-dark: #3D3D29;
--scrollbar-track: #292929;
--scrollbar-thumb: #525252;
}
@font-face {
font-display: swap;
font-family: 'Ubuntu';
font-style: normal;
font-weight: 400;
src: url('../fonts/Ubuntu-Regular.woff2') format('woff2');
}

BIN
public/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 806 B

BIN
public/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

BIN
public/incngrnt.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

405
public/index.html Normal file
View File

@ -0,0 +1,405 @@
<!DOCTYPE html>
<html lang="en-ca" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.145.0"><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta http-equiv="content-language" content="en-ca" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>incngrnt &middot; Home </title>
<meta name="title" content="incngrnt" />
<meta name="description" content="A Hugo Theme" />
<link rel="canonical" href="http://localhost:1313/" />
<link rel="stylesheet" href="/css/theme.css">
<link rel="stylesheet" href="/css/main.css">
<script src="/js/theme.js"></script>
<script src="/js/codecopy.js"></script>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="alternate" type="application/rss+xml" href="/index.xml" title="incngrnt" />
<link rel="alternate" type="application/json" href="/index.json" title="incngrnt" />
<meta property="og:url" content="http://localhost:1313/">
<meta property="og:site_name" content="incngrnt">
<meta property="og:title" content="incngrnt">
<meta property="og:description" content="Incngrnt is an experiment in host applications and services, usually run by huge corporations, on a small community scale. Using cloud technologies to enhance redundancy and maintainability while keeping as much as possible hosted locally.
This project provides modern applications and services for friends and family, offering the convenience of cloud-based tools without sacrificing data privacy.
The current instance, cheekily names Fog, is a Kubernetes cluster of 3 Talos Linux nodes. It uses Ceph as the storage layer and Metallb and Traefik for networking. The whole cluster has a has backup batteries in the event of a power failure. All configuration and setup docs live in a self-hosted git repo running directly on Fog.">
<meta property="og:locale" content="en_ca">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="incngrnt">
<meta name="twitter:description" content="Incngrnt is an experiment in host applications and services, usually run by huge corporations, on a small community scale. Using cloud technologies to enhance redundancy and maintainability while keeping as much as possible hosted locally.
This project provides modern applications and services for friends and family, offering the convenience of cloud-based tools without sacrificing data privacy.
The current instance, cheekily names Fog, is a Kubernetes cluster of 3 Talos Linux nodes. It uses Ceph as the storage layer and Metallb and Traefik for networking. The whole cluster has a has backup batteries in the event of a power failure. All configuration and setup docs live in a self-hosted git repo running directly on Fog.">
<link rel="preload" href="http://localhost:1313/fonts/Ubuntu-Regular.woff2" as="font" type="font/woff2" crossorigin>
<style>
@importrt url(https://fonts.googleapis.com/css?family=Exo+2:200i);
.title {
font-size: 24px;
font-family: 'Exo 2', sans-serif;
font-weight: lighter;
}
.title .flicker {
animation: flicker 3s linear infinite;
}
@keyframes flicker {
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% {
opacity: .1;
}
20%, 21.999%, 63%, 63.999%, 65%, 69.999% {
opacity: 0.99;
}
}
</style>
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/index.xml" title="incngrnt">
</head>
<body>
<script>
const siteTheme = "auto";
let savedTheme = localStorage.getItem('theme') || siteTheme;
if (savedTheme == 'auto') {
if ( window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ) {
savedTheme = 'dark';
}
}
if (savedTheme === "dark") {
document.body.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
</script>
<div class="content">
<header>
<a class="title" href="/">
<img loading="lazy"
src="/incngrnt.webp"
alt="Site Logo" />
</a>
<div class="header-cntr">
<a class="title" href="/">
<span><span>inc</span><span class='flicker'>o</span><span>ngr</span><span class='flicker'>ue</span><span>nt</span></span>
</a>
<div class="menu">
<nav id="main-menu" class="mm-normal">
<ul>
<li> <button id="mob-x-icon" class="menu-btn" arial-label="x-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button> </li>
<li><a href="/behind-incngrnt/" aria-label="behind-icngrnt">
Behind icngrnt</li></a>
<li><a href="https://git.incngrnt.ca/grant" aria-label="Gitea">
<span>
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m5.583 7.229c-2.464-.005-5.755 1.557-5.573 5.479.281 6.125 6.557 6.693 9.068 6.745.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-.38 10.036-17.365 6.854-17.427-5.271.25-8.396.375-11.073.396v5.297l-.839-.365-.005-4.932c-3.073 0-5.781-.141-10.917-.396-.646-.005-1.542-.115-2.5-.115zm.344 2.167h.297c.349 3.141.917 4.974 2.068 7.781-2.938-.349-5.432-1.198-5.891-4.38-.24-1.646.563-3.365 3.526-3.401zm11.412 3.083c.198.005.406.042.594.13l1 .432-.714 1.302c-.109 0-.219.016-.323.052-.464.151-.708.604-.542 1.021.036.083.089.161.151.229l-1.234 2.25c-.099 0-.203.016-.297.052-.464.146-.708.604-.542 1.016.172.417.682.63 1.151.479.464-.146.703-.604.536-1.021-.047-.109-.115-.208-.208-.292l1.203-2.188c.13.01.26 0 .391-.042.104-.031.198-.083.281-.151.464.198.844.354 1.12.49.406.203.552.339.599.49.042.146-.005.427-.24.922-.172.37-.458.896-.797 1.51-.115 0-.229.016-.333.052-.469.151-.708.604-.542 1.021.167.411.682.625 1.146.479.469-.151.708-.604.542-1.021-.042-.099-.104-.193-.182-.271.333-.609.62-1.135.807-1.526.25-.536.38-.938.266-1.323s-.469-.635-.932-.865c-.307-.151-.693-.313-1.146-.505.005-.109-.01-.214-.052-.318s-.109-.198-.193-.281l.703-1.281 3.901 1.682c.703.307.995 1.057.651 1.682l-2.682 4.906c-.339.625-1.182.885-1.885.578l-5.516-2.38c-.703-.307-.995-1.057-.656-1.682l2.682-4.906c.234-.432.708-.688 1.208-.708h.083z"/></svg>
</span>
</li></a>
</ul>
</nav>
<div class="side-menu">
<div id="search-container" data-url="http://localhost:1313/">
<div class="search">
<div class="panel">
<form>
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
<input type="search" id="search-query" placeholder="Search" tabindex=0 autocomplete="off"/>
<button id="search-close" title="Cancel (ESC)">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button>
</form>
</div>
<ul id="search-results">
</ul>
</div>
</div>
<button id="theme-switcher" class="menu-btn" aria-label="Theme switcher">
<div id="moon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
</div>
<div id="sun">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
</div>
</button>
</div>
<button id="mob-hb-icon" class="menu-btn" aria-label="Hamburger icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
</button>
</div>
<script>
(function() {
document.addEventListener('DOMContentLoaded', function() {
const openBtn = document.getElementById('mob-hb-icon');
const closeBtn = document.getElementById('mob-x-icon');
const mainMenu = document.getElementById('main-menu');
const body = document.body;
openBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-normal', 'mm-mobile-open');
closeBtn.style.display = 'block';
body.style.overflow = 'hidden';
});
closeBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-mobile-open', 'mm-normal');
closeBtn.style.display = 'none';
body.style.overflow = '';
});
})
})();
</script>
<script>
(function() {
var mainmenu = document.getElementById('main-menu');
if (!mainmenu) return;
var path = window.location.pathname;
var links = mainmenu.querySelectorAll('a');
links.forEach(function(link) {
if (link.getAttribute('href') === path) {
link.classList.add('active');
}
});
})();
</script>
</div>
</header>
<main>
<span class="headline">Just a little different</span>
<p>Incngrnt is an experiment in host applications and services, usually run by huge
corporations, on a small community scale. Using cloud technologies to enhance
redundancy and maintainability while keeping as much as possible hosted locally.</p>
<p>This project provides modern applications and services for friends and family,
offering the convenience of cloud-based tools without sacrificing data privacy.</p>
<p>The current instance, cheekily names Fog, is a <a href="https://kubernetes.io/" target="_blank">Kubernetes</a>
cluster of 3 <a href="https://www.talos.dev/" target="_blank">Talos Linux</a>
nodes. It uses <a href="https://ceph.io/en/" target="_blank">Ceph</a>
as the storage layer and <a href="https://metallb.io/" target="_blank">Metallb</a>
and
<a href="https://traefik.io/traefik/" target="_blank">Traefik</a>
for networking. The whole cluster has a has backup
<a href="https://www.ecoflow.com/ca" target="_blank">batteries</a>
in the event of a power failure. All configuration
and setup docs live in a self-hosted <a href="https://git.incngrnt.ca/grant/fog" target="_blank">git repo</a>
running directly on Fog.</p>
</main>
<footer>
<div class="copyright">
© 2025 Grant Hunter
</div>
<div class="attribution">
Built with <a href="https://gohugo.io" target="_blank">Hugo</a> & <a href="https://github.com/mnjm/kayal" target="_blank">Kayal</a>
</div>
</footer>
</div>
</body>
</html>

1
public/index.json Normal file
View File

@ -0,0 +1 @@
[]

11
public/index.xml Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>incngrnt</title>
<link>http://localhost:1313/</link>
<description>Recent content on incngrnt</description>
<generator>Hugo -- 0.145.0</generator>
<language>en-ca</language>
<atom:link href="http://localhost:1313/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

47
public/js/codecopy.js Normal file
View File

@ -0,0 +1,47 @@
(() => {
// <stdin>
var copyText = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M288 448L64 448l0-224 64 0 0-64-64 0c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-64-64 0 0 64zm-64-96l224 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L224 0c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64z"/></svg>';
var copiedText = 'Copied! <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"/></svg>';
function createCopyButton(codeblock) {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement("button");
copybutton.classList.add("copy-button");
copybutton.innerHTML = copyText;
function copyingDone() {
copybutton.innerHTML = copiedText;
setTimeout(() => {
copybutton.innerHTML = copyText;
}, 500);
}
copybutton.addEventListener("click", (cb) => {
if ("clipboard" in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand("copy");
copyingDone();
} catch (e) {
}
;
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
}
window.addEventListener("DOMContentLoaded", (event) => {
document.querySelectorAll("pre > code").forEach((codeblock) => createCopyButton(codeblock));
});
})();

134
public/js/search.js Normal file
View File

@ -0,0 +1,134 @@
(() => {
// <stdin>
var seachOpnBtn = null;
var closeBtn = null;
var searchCntr = null;
var resultCntr = null;
var searchBtn = null;
var searchTxt = null;
var isSearchOpen = false;
var isJsonIndexed = false;
var isResEmpty = true;
var fuse;
function fetchJSON(path, callback) {
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState === 4) {
if (httpRequest.status === 200) {
var data = JSON.parse(httpRequest.responseText);
if (callback) callback(data);
}
}
};
httpRequest.open("GET", path);
httpRequest.send();
}
function buildIndex() {
var baseURL = searchCntr.getAttribute("data-url");
baseURL = baseURL.replace(/\/?$/, "/");
fetchJSON(baseURL + "index.json", function(data) {
var options = {
shouldSort: true,
ignoreLocation: true,
threshold: 0,
includeMatches: true,
keys: [
{ name: "title", weight: 0.8 },
{ name: "section", weight: 0.2 },
{ name: "summary", weight: 0.6 },
{ name: "content", weight: 0.4 }
]
};
fuse = new Fuse(data, options);
isJsonIndexed = true;
});
}
function openSearch() {
if (!isJsonIndexed) {
buildIndex();
}
if (!isSearchOpen) {
searchCntr.style.display = "flex";
document.body.style.overflow = "hidden";
isSearchOpen = true;
searchTxt.focus();
}
}
function closeSearch() {
if (isSearchOpen) {
searchCntr.style.display = "none";
document.body.style.overflow = "";
isSearchOpen = false;
}
}
function executeQuery(query) {
let results = fuse.search(query);
let resultsHtml = "";
if (results.length > 1) {
results.forEach(function(value, key) {
var meta = value.item.section + " | ";
meta = meta + value.item.date ? value.item.date + " | " : "";
meta = meta + `<span class="srch-link">${value.item.permalink}</span>`;
resultsHtml = resultsHtml + `<li><a href="${value.item.permalink}">
<p class="srch-title">${value.item.title}</p>
<p class="srch-meta">${meta}</p>
<p class="srch-smry">${value.item.summary}</p>
</a></li>`;
});
isResEmpty = false;
} else {
resultsHtml = "";
isResEmpty = true;
}
resultCntr.innerHTML = resultsHtml;
}
window.addEventListener("DOMContentLoaded", (event) => {
seachOpnBtn = document.getElementById("search-open");
searchBtn = document.getElementById("search-btn");
closeBtn = document.getElementById("search-close");
searchCntr = document.getElementById("search-container");
resultCntr = document.getElementById("search-results");
searchTxt = document.getElementById("search-query");
seachOpnBtn.addEventListener("click", openSearch);
closeBtn.addEventListener("click", closeSearch);
searchTxt.onkeyup = function(event2) {
executeQuery(this.value);
};
searchTxt.onkeydown = function(event2) {
if (event2.key == "Enter" && !isResEmpty) {
resultCntr.firstChild.firstElementChild.focus();
event2.preventDefault();
}
};
});
document.addEventListener("keydown", function(event) {
if (event.key == "/") {
event.preventDefault();
openSearch();
}
if (isSearchOpen) {
if (event.key == "Escape") {
event.preventDefault();
closeSearch();
} else if (event.key == "ArrowDown" && !isResEmpty) {
if (document.activeElement == searchTxt) {
resultCntr.firstChild.firstElementChild.focus();
} else if (document.activeElement == resultCntr.lastChild.firstElementChild) {
searchTxt.focus();
} else {
document.activeElement.parentElement.nextSibling.firstElementChild.focus();
}
event.preventDefault();
} else if (event.key == "ArrowUp" && !isResEmpty) {
if (document.activeElement == searchTxt) {
resultCntr.lastChild.firstElementChild.focus();
} else if (document.activeElement == resultCntr.firstChild.firstElementChild) {
searchTxt.focus();
} else {
document.activeElement.parentElement.previousSibling.firstElementChild.focus();
}
event.preventDefault();
}
}
});
})();

25
public/js/theme.js Normal file
View File

@ -0,0 +1,25 @@
(() => {
// <stdin>
function toggleTheme() {
if (document.body.className.includes("dark")) {
document.body.classList.remove("dark");
localStorage.setItem("theme", "light");
} else {
document.body.classList.add("dark");
localStorage.setItem("theme", "dark");
}
}
window.addEventListener("DOMContentLoaded", (event) => {
const switcher = document.getElementById("theme-switcher");
if (switcher) {
switcher.addEventListener("click", () => {
toggleTheme();
});
}
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (event2) => {
if (event2.matches && localStorage.getItem("theme") === "light") {
toggleTheme();
}
});
});
})();

10
public/page/1/index.html Normal file
View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en-ca">
<head>
<title>http://localhost:1313/</title>
<link rel="canonical" href="http://localhost:1313/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/">
</head>
</html>

1
public/site.webmanifest Normal file
View File

@ -0,0 +1 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}

12
public/sitemap.xml Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>http://localhost:1313/</loc>
</url>
<url>
<loc>http://localhost:1313/categories/</loc>
</url>
<url>
<loc>http://localhost:1313/tags/</loc>
</url>
</urlset>

365
public/tags/index.html Normal file
View File

@ -0,0 +1,365 @@
<!DOCTYPE html>
<html lang="en-ca" dir="ltr">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta http-equiv="content-language" content="en-ca" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Tags &middot; incngrnt</title>
<meta name="title" content="Tags &middot; incngrnt" />
<meta name="description" content="A Hugo Theme" />
<link rel="canonical" href="http://localhost:1313/tags/" />
<link rel="stylesheet" href="/css/theme.css">
<link rel="stylesheet" href="/css/main.css">
<script src="/js/theme.js"></script>
<script src="/js/codecopy.js"></script>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="alternate" type="application/rss+xml" href="/tags/index.xml" title="incngrnt" />
<meta property="og:url" content="http://localhost:1313/tags/">
<meta property="og:site_name" content="incngrnt">
<meta property="og:title" content="Tags">
<meta property="og:description" content="A Hugo Theme">
<meta property="og:locale" content="en_ca">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Tags">
<meta name="twitter:description" content="A Hugo Theme">
<link rel="preload" href="http://localhost:1313/fonts/Ubuntu-Regular.woff2" as="font" type="font/woff2" crossorigin>
<style>
@importrt url(https://fonts.googleapis.com/css?family=Exo+2:200i);
.title {
font-size: 24px;
font-family: 'Exo 2', sans-serif;
font-weight: lighter;
}
.title .flicker {
animation: flicker 3s linear infinite;
}
@keyframes flicker {
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% {
opacity: .1;
}
20%, 21.999%, 63%, 63.999%, 65%, 69.999% {
opacity: 0.99;
}
}
</style>
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/index.xml" title="incngrnt">
</head>
<body>
<script>
const siteTheme = "auto";
let savedTheme = localStorage.getItem('theme') || siteTheme;
if (savedTheme == 'auto') {
if ( window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ) {
savedTheme = 'dark';
}
}
if (savedTheme === "dark") {
document.body.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
</script>
<div class="content">
<header>
<a class="title" href="/">
<img loading="lazy"
src="/incngrnt.webp"
alt="Site Logo" />
</a>
<div class="header-cntr">
<a class="title" href="/">
<span><span>inc</span><span class='flicker'>o</span><span>ngr</span><span class='flicker'>ue</span><span>nt</span></span>
</a>
<div class="menu">
<nav id="main-menu" class="mm-normal">
<ul>
<li> <button id="mob-x-icon" class="menu-btn" arial-label="x-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button> </li>
<li><a href="/behind-incngrnt/" aria-label="behind-icngrnt">
Behind icngrnt</li></a>
<li><a href="https://git.incngrnt.ca/grant" aria-label="Gitea">
<span>
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m5.583 7.229c-2.464-.005-5.755 1.557-5.573 5.479.281 6.125 6.557 6.693 9.068 6.745.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-.38 10.036-17.365 6.854-17.427-5.271.25-8.396.375-11.073.396v5.297l-.839-.365-.005-4.932c-3.073 0-5.781-.141-10.917-.396-.646-.005-1.542-.115-2.5-.115zm.344 2.167h.297c.349 3.141.917 4.974 2.068 7.781-2.938-.349-5.432-1.198-5.891-4.38-.24-1.646.563-3.365 3.526-3.401zm11.412 3.083c.198.005.406.042.594.13l1 .432-.714 1.302c-.109 0-.219.016-.323.052-.464.151-.708.604-.542 1.021.036.083.089.161.151.229l-1.234 2.25c-.099 0-.203.016-.297.052-.464.146-.708.604-.542 1.016.172.417.682.63 1.151.479.464-.146.703-.604.536-1.021-.047-.109-.115-.208-.208-.292l1.203-2.188c.13.01.26 0 .391-.042.104-.031.198-.083.281-.151.464.198.844.354 1.12.49.406.203.552.339.599.49.042.146-.005.427-.24.922-.172.37-.458.896-.797 1.51-.115 0-.229.016-.333.052-.469.151-.708.604-.542 1.021.167.411.682.625 1.146.479.469-.151.708-.604.542-1.021-.042-.099-.104-.193-.182-.271.333-.609.62-1.135.807-1.526.25-.536.38-.938.266-1.323s-.469-.635-.932-.865c-.307-.151-.693-.313-1.146-.505.005-.109-.01-.214-.052-.318s-.109-.198-.193-.281l.703-1.281 3.901 1.682c.703.307.995 1.057.651 1.682l-2.682 4.906c-.339.625-1.182.885-1.885.578l-5.516-2.38c-.703-.307-.995-1.057-.656-1.682l2.682-4.906c.234-.432.708-.688 1.208-.708h.083z"/></svg>
</span>
</li></a>
</ul>
</nav>
<div class="side-menu">
<div id="search-container" data-url="http://localhost:1313/">
<div class="search">
<div class="panel">
<form>
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
<input type="search" id="search-query" placeholder="Search" tabindex=0 autocomplete="off"/>
<button id="search-close" title="Cancel (ESC)">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
</button>
</form>
</div>
<ul id="search-results">
</ul>
</div>
</div>
<button id="theme-switcher" class="menu-btn" aria-label="Theme switcher">
<div id="moon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
</div>
<div id="sun">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
</div>
</button>
</div>
<button id="mob-hb-icon" class="menu-btn" aria-label="Hamburger icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
</button>
</div>
<script>
(function() {
document.addEventListener('DOMContentLoaded', function() {
const openBtn = document.getElementById('mob-hb-icon');
const closeBtn = document.getElementById('mob-x-icon');
const mainMenu = document.getElementById('main-menu');
const body = document.body;
openBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-normal', 'mm-mobile-open');
closeBtn.style.display = 'block';
body.style.overflow = 'hidden';
});
closeBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-mobile-open', 'mm-normal');
closeBtn.style.display = 'none';
body.style.overflow = '';
});
})
})();
</script>
<script>
(function() {
var mainmenu = document.getElementById('main-menu');
if (!mainmenu) return;
var path = window.location.pathname;
var links = mainmenu.querySelectorAll('a');
links.forEach(function(link) {
if (link.getAttribute('href') === path) {
link.classList.add('active');
}
});
})();
</script>
</div>
</header>
<main>
<h2> Tags </h2>
<div class="taxny-card-container">
</div>
</ul>
</main>
<footer>
<div class="copyright">
© 2025 Grant Hunter
</div>
<div class="attribution">
Built with <a href="https://gohugo.io" target="_blank">Hugo</a> & <a href="https://github.com/mnjm/kayal" target="_blank">Kayal</a>
</div>
</footer>
</div>
</body>
</html>

11
public/tags/index.xml Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Tags on incngrnt</title>
<link>http://localhost:1313/tags/</link>
<description>Recent content in Tags on incngrnt</description>
<generator>Hugo -- 0.145.0</generator>
<language>en-ca</language>
<atom:link href="http://localhost:1313/tags/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 KiB

BIN
static/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
static/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 806 B

BIN
static/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

1
static/site.webmanifest Normal file
View File

@ -0,0 +1 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}

1
themes/kayal Submodule

@ -0,0 +1 @@
Subproject commit 0a715a1e1ecd6443cdef88cf773f354d85f7aff0