commit 4ed4447c5b3650d4286b155e9c1fb968e85028fd
parent cea5f195622f70d19b48d29d2629eab2bc656e24
Author: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Date: Fri, 11 Jul 2025 11:40:10 -0300
site: add content
Diffstat:
8 files changed, 411 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1 +1,2 @@
.DS_Store
+.hugo_build.lock
diff --git a/archetypes/default.md b/archetypes/default.md
@@ -0,0 +1,5 @@
++++
+date = '{{ .Date }}'
+draft = true
+title = '{{ replace .File.ContentBaseName "-" " " | title }}'
++++
diff --git a/assets/css/custom.css b/assets/css/custom.css
@@ -0,0 +1,216 @@
+.custom-icon {
+ height: 2em; /* Match Font Awesome's fa-2x */
+ width: auto; /* Maintain aspect ratio */
+ vertical-align: text-bottom; /* Align nicely with inline icons */
+ display: inline-block;
+ fill: currentColor; /* If the SVG supports currentColor */
+}
+
+.custom-icon-dark, .custom-icon-light {
+ display: none;
+}
+
+.colorscheme-dark .custom-icon-dark{
+ display: inline-block;
+}
+
+.colorscheme-light .custom-icon-dark {
+ display: none;
+}
+
+.colorscheme-light .custom-icon-light {
+ display: inline-block;
+}
+
+.colorscheme-dark .custom-icon-light {
+ display: none;
+}
+
+.contact-page {
+ margin: 0 auto;
+ max-width: 400px;
+}
+
+.contact-form {
+ display: flex;
+ flex-direction: column;
+ font-size: 2rem;
+ gap: 1.5rem;
+ width: 100%;
+ max-width: 400px;
+ margin: 0 auto;
+}
+
+.contact-form label {
+ font-weight: bold;
+}
+
+.contact-form input,
+.contact-form textarea,
+.contact-form button {
+ padding: 0.5rem;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+}
+
+.contact-form textarea {
+ min-height: 7.5em;
+ resize: vertical;
+}
+
+.contact-form button {
+ background-color: #007bff;
+ color: white;
+ border: none;
+ cursor: pointer;
+}
+
+.contact-form button:hover {
+ background-color: #0056b3;
+}
+
+.btc-card {
+ max-width: 400px;
+ margin: 2rem auto;
+ padding: 1.5rem;
+ border-radius: 16px;
+ background: #f9fafb;
+ border: 1px solid #e0e0e0;
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
+ transition: box-shadow 0.3s ease, transform 0.3s ease;
+ font-family: system-ui, sans-serif;
+ text-align: center;
+ color: #111;
+}
+
+.btc-card:hover {
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
+ transform: translateY(-4px);
+}
+
+.btc-header {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 0.5rem;
+ margin-bottom: 1rem;
+}
+
+.btc-icon {
+ color: #f7931a; /* Bitcoin orange */
+}
+
+.btc-card h2 {
+ margin: 0;
+ font-size: 1.25rem;
+ color: #333;
+}
+
+.btc-qr {
+ width: 200px;
+ height: 200px;
+ margin: 1rem auto;
+ border-radius: 8px;
+ padding: 4px;
+ border: 1px solid #ccc;
+ background: white;
+}
+
+.btc-address {
+ margin: 0;
+ font-family: monospace;
+ padding: 0.75rem;
+ border-radius: 4px;
+ word-break: break-all;
+ font-size: 0.95rem;
+ background: #eef2f7;
+ color: #1a1a1a;
+ border: 1px solid #d0d7de;
+}
+
+.btc-card p.btc-note {
+ color: #666;
+ text-align: inherit;
+}
+
+.btc-address-row {
+ margin: 0;
+ display: flex;
+ align-items: stretch;
+ justify-content: center;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+ flex-direction: horizontal;
+}
+
+.btc-copy-icon {
+ all: unset;
+ border-radius: 4px;
+ width: 4rem;
+ cursor: pointer;
+ transition:
+ background-color 0.2s ease,
+ color 0.2s ease,
+ transform 0.05s ease,
+ box-shadow 0.3s ease;
+ color: #555;
+ border: 1px solid #d0d7de;
+}
+
+.btc-copy-icon:hover {
+ background-color: #f0f0f0;
+ color: #000;
+}
+
+.btc-copy-icon:active {
+ transform: scale(0.95); /* Pressed-in effect */
+}
+
+.btc-copy-icon.glow {
+ box-shadow: 0 0 0 3px rgba(247, 147, 26, 0.4),
+ 0 0 10px rgba(247, 147, 26, 0.7);
+ background-color: #fff5e6; /* light bitcoin orange background */
+ color: #f7931a;
+}
+
+.colorscheme-dark .btc-card {
+ background: #1e1e1e;
+ border: 1px solid #333;
+ color: #eee;
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.6);
+}
+
+.colorscheme-dark .btc-card:hover {
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.7);
+}
+
+.colorscheme-dark .btc-card h2 {
+ color: #f5f5f5;
+}
+
+.colorscheme-dark .btc-qr {
+ border: 1px solid #444;
+ background: #2a2a2a;
+}
+
+.colorscheme-dark .btc-address {
+ background: #2a2a2a;
+ color: #f5f5f5;
+ border: 1px solid #444;
+}
+
+.colorscheme-dark .btc-card p.btc-note {
+ color: #aaa;
+}
+
+.colorscheme-dark .btc-copy-icon {
+ background: #2a2a2a;
+ color: #f5f5f5;
+ border: 1px solid #444;
+}
+
+.colorscheme-dark .btc-copy-icon:hover {
+ background-color: #333;
+ color: #fff;
+}
+}
diff --git a/content/about.md b/content/about.md
@@ -0,0 +1,22 @@
+
++++
+title = "About"
+description = "Jack Mordaunt"
+date = "2025-07-10"
+author = "Jack Mordaunt"
++++
+
+I’m Jack, an Australian developer living abroad, building lean, native software in Odin and Go.
+
+I care deeply about software that’s organically made and designed to be robust, efficient and promote self-sovereignty.
+
+I have a particular interest in long-term software built to last decades.
+
+I believe this is best achieved by having a small dependency tree and re-using modular libraries written in C where possible, which is the lowest-common denominator and what drives my interest in Odin: a C alternative built for the joy of programming.
+
+That being said, my main expertise is in Go having programmed with it professionally since 2021. Along my journey I have touched a myriad of other languages: Rust, Zig, C++, Python, Ruby, C#, Objective-C, Javascript, Elixir and more.
+
+I'm a versatile developer but I prefer to work on client-side software and I'm intrigued by unorthodox tech stacks.
+
+[Get in contact](/contact)
+
diff --git a/content/contact.html b/content/contact.html
@@ -0,0 +1,25 @@
+---
+---
+
+<div class="contact-page">
+ <h2>Get in touch</h2>
+
+ <form action="https://api.web3forms.com/submit" method="POST" class="contact-form">
+
+ <!-- Replace with your Access Key -->
+ <input type="hidden" name="access_key" value="1fabf5eb-b95f-48d4-a01e-458e11d53846">
+
+ <!-- Form Inputs. Each input must have a name="" attribute -->
+ <input type="text" name="name" placeholder="Name" required>
+ <input type="email" name="email" placeholder="info@example.com" required>
+ <textarea name="message" placeholder="Hello!" required></textarea>
+
+ <!-- Honeypot Spam Protection -->
+ <input type="checkbox" name="botcheck" class="hidden" style="display: none;">
+
+ <!-- Custom Confirmation / Success Page -->
+ <input type="hidden" name="redirect" value="/about">
+
+ <button type="submit">Submit</button>
+ </form>
+</div
diff --git a/content/pay-with-bitcoin.html b/content/pay-with-bitcoin.html
@@ -0,0 +1,37 @@
+---
+---
+
+<script>
+ function copyAddress() {
+ const text = document.getElementById("btc-address").textContent;
+
+ navigator.clipboard.writeText(text).then(() => {
+ console.log("Address copied!");
+ }).catch(err => {
+ console.error("Copy failed:", err);
+ });
+ }
+</script>
+
+
+<iframe src="https://github.com/sponsors/JackMordaunt/card" title="Sponsor JackMordaunt" height="225" width="600" style="border: 0;"></iframe>
+<div class="btc-card">
+ <div class="btc-header">
+ <i class="btc-icon fa-brands fa-bitcoin fa-3x"></i>
+ </div>
+
+ <img
+ src="https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=bitcoin:bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
+ alt="Bitcoin Address QR Code"
+ class="btc-qr"
+ >
+
+ <div class="btc-address-row">
+ <p class="btc-address" id="btc-address">bc1q6px9f0tl3r8qf5l304g2plyae5fgvw6yetzvcu</p>
+ <button class="btc-copy-icon" onclick="copyAddress()">
+ <i class="fa-solid fa-copy"></i>
+ </button>
+ </div>
+ <p class="btc-note">Scan or copy the address to send Bitcoin</p>
+</div>
+
diff --git a/hugo.toml b/hugo.toml
@@ -0,0 +1,105 @@
+baseurl = "http://jackmordaunt.com/"
+title = "Jack Mordaunt"
+theme = "hugo-coder"
+languagecode = "en"
+defaultcontentlanguage = "en"
+
+[pagination]
+pagerSize = 20
+
+[services]
+# [services.disqus]
+# shortname = "yourdiscussshortname"
+
+[markup.highlight]
+style = "github-dark"
+
+
+
+
+
+
+
+
+
+# TODO: replace the theme submodule with a subtree instead to support local modifications
+# TODO: add a ci build that publishes on pushes to main
+
+
+
+
+
+
+
+
+[params]
+ author = "Jack Mordaunt"
+ info = "Coffee developer, software brewer."
+ description = "Coffee developer, software brewer."
+ keywords = "blog,developer,personal,software,robust,performance,sovereign"
+ avatarurl = "images/self.jpg"
+ gravatar = "gravatar@sovereignlife.anonaddy.com"
+
+ faviconSVG = "/img/favicon.svg"
+ favicon_32 = "/img/favicon-32x32.png"
+ favicon_16 = "/img/favicon-16x16.png"
+
+ since = 2025
+
+ enableTwemoji = true
+
+ colorScheme = "auto"
+ hidecolorschemetoggle = false
+
+ customCSS = ["css/custom.css"]
+ # customSCSS = ["scss/custom.scss"]
+ # customJS = ["js/custom.js"]
+
+[taxonomies]
+ category = "categories"
+ series = "series"
+ tag = "tags"
+ author = "authors"
+
+# Social links
+[[params.social]]
+ name = "Github"
+ icon = "fa-brands fa-github fa-2x"
+ weight = 1
+ url = "https://github.com/jackmordaunt"
+[[params.social]]
+ name = "Sourcehut"
+ icon = "fa-1x"
+ # Hack because sourcehut icon not in fa. Light & Dark are swapped based on theme.
+ srclight = "https://sourcehut.org/sourcehut.svg"
+ srcdark = "https://sourcehut.org/sourcehut-white.svg"
+ weight = 2
+ url = "https://git.sr.ht/~jackmordaunt"
+[[params.social]]
+ name = "Public Keys"
+ icon = "fa-solid fa-key fa-2x"
+ weight = 3
+ url = "https://meta.sr.ht/~jackmordaunt.pgp"
+[[params.social]]
+ name = "Bitcoin"
+ icon = "fa-brands fa-bitcoin fa-2x"
+ weight = 4
+ url = "pay-with-bitcoin/"
+
+# Menu links
+# [[menu.main]]
+# name = "Blog"
+# weight = 1
+# url = "posts/"
+[[menu.main]]
+ name = "About"
+ weight = 2
+ url = "about/"
+[[menu.main]]
+ name = "Contact"
+ weight = 3
+ url = "contact/"
+[[menu.main]]
+ name = "Pay"
+ weight = 4
+ url = "pay-with-bitcoin/"
diff --git a/static/images/self.jpg b/static/images/self.jpg
Binary files differ.