6 Commits

Author SHA1 Message Date
aa2e5cdc77 fix: Update dark own the dot image
All checks were successful
Build Docker / Build Image (push) Successful in 1m43s
2025-10-31 14:30:28 +11:00
d3b4adf91d feat: Add initial Own the Dot page
Some checks failed
Build Docker / Build Image (push) Has been cancelled
2025-10-31 14:28:21 +11:00
0b7973d2b8 fix: Correct broken theme
All checks were successful
Build Docker / Build Image (push) Successful in 2m51s
2025-10-31 14:12:47 +11:00
5efab0e341 fix: Use correct link for domains.hns.au
All checks were successful
Build Docker / Build Image (push) Successful in 2m15s
2025-09-23 12:14:29 +10:00
902e87eaee fix: Don't redirect using js script for tlds
All checks were successful
Build Docker / Build Image (push) Successful in 2m27s
2025-09-22 13:44:35 +10:00
ef90f4c148 feat: Remove separate TLD pages
All checks were successful
Build Docker / Build Image (push) Successful in 2m4s
2025-09-22 13:34:55 +10:00
8 changed files with 214 additions and 4 deletions

Binary file not shown.

View File

@@ -21,7 +21,7 @@ exchange = {
}
DEV = os.getenv('DEV', 'false').lower() in ['true', '1', 'yes']
tlds = ['australia','newzealand']
tlds = ['australia', 'newzealand']
#Assets routes
@app.route('/assets/<path:path>')
@@ -412,7 +412,7 @@ def index():
tld = tlds[0]
hns_scripts = ''
return render_template('/tlds/'+tld+'.html',year=year, handshake_scripts=hns_scripts)
return render_template('index.html',year=year, handshake_scripts=hns_scripts)
@app.route('/<path:path>')
def catch_all(path):
@@ -469,4 +469,4 @@ def check_payments():
payments.check_payments()
if __name__ == '__main__':
app.run(debug=True, port=5000, host='0.0.0.0')
app.run(debug=True, port=5000, host='127.0.0.1')

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

View File

@@ -35,6 +35,12 @@ function toggle() {
window.getPreferredTheme = () => {
const storedTheme = window.getStoredTheme()
if (storedTheme) {
// Validate stored theme - if invalid, remove it
if (storedTheme !== 'light' && storedTheme !== 'dark') {
localStorage.removeItem('theme')
location.reload()
return
}
return storedTheme
}

View File

@@ -219,7 +219,7 @@
<div class="social-icons" style="font-size: 50px;"><a href="mailto:hns@hns.au" target="_blank" style="padding-right: 10px;padding-left: 10px;"><i class="icon ion-email" style="font-size: 50px;"></i></a><a href="https://discord.gg/WJ6vpjuQv5" target="_blank" style="padding-right: 10px;padding-left: 10px;"><i class="fab fa-discord" style="font-size: 50px;"></i></a></div>
</div>
<div class="text-center block-heading" id="support">
<h2 class="text-primary">Support Us</h2><span style="font-size: 20px;">You can support us by donating HNS to&nbsp;</span><code style="font-size: 20px;"><br>hs1qjdsz8u2ftm93jmczq8x36zqmfh3pqagq0hkkaf</code><span style="font-size: 20px;"><br>Or by using our alias</span><code style="font-size: 20px;"><br>@donate.hnsau<br><br></code><span style="font-size: 20px;">You can also support us by buying an SLD from&nbsp;<a href="https://domains.hnsau" target="_blank">https://domains.hns.au</a></span>
<h2 class="text-primary">Support Us</h2><span style="font-size: 20px;">You can support us by donating HNS to&nbsp;</span><code style="font-size: 20px;"><br>hs1qjdsz8u2ftm93jmczq8x36zqmfh3pqagq0hkkaf</code><span style="font-size: 20px;"><br>Or by using our alias</span><code style="font-size: 20px;"><br>@donate.hnsau<br><br></code><span style="font-size: 20px;">You can also support us by buying an SLD from&nbsp;<a href="https://domains.hns.au" target="_blank">https://domains.hns.au</a></span>
</div>
</div>
</section>

201
templates/own-the-dot.html Normal file
View File

@@ -0,0 +1,201 @@
<!DOCTYPE html>
<html data-bs-theme="auto" lang="en-au">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<title>Own The Dot | HNSAU</title>
<meta name="theme-color" content="#ffffff">
<link rel="canonical" href="https://hns.au/own-the-dot">
<meta property="og:url" content="https://hns.au/own-the-dot">
<meta name="twitter:description" content="Handshake Australia; The leading hub for Australians leveraging the decentralized web, powered by Handshake.">
<meta name="twitter:image" content="https://hns.au/assets/img/HNSAU-social.webp">
<meta name="twitter:title" content="HNS AU">
<meta property="og:type" content="website">
<meta property="og:title" content="HNS AU">
<meta name="twitter:card" content="summary_large_image">
<meta property="og:description" content="Handshake Australia; The leading hub for Australians leveraging the decentralized web, powered by Handshake.">
<meta name="description" content="Handshake Australia; The leading hub for Australians leveraging the decentralized web, powered by Handshake.">
<meta property="og:image" content="https://hns.au/assets/img/HNSAU-social.webp">
<script>
(function() {
// JavaScript snippet handling Dark/Light mode switching
const getStoredTheme = () => localStorage.getItem('theme');
const setStoredTheme = theme => localStorage.setItem('theme', theme);
const forcedTheme = document.documentElement.getAttribute('data-bss-forced-theme');
const getPreferredTheme = () => {
if (forcedTheme) return forcedTheme;
const storedTheme = getStoredTheme();
if (storedTheme) {
return storedTheme;
}
const pageTheme = document.documentElement.getAttribute('data-bs-theme');
if (pageTheme) {
return pageTheme;
}
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
}
const setTheme = theme => {
if (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.documentElement.setAttribute('data-bs-theme', 'dark');
} else {
document.documentElement.setAttribute('data-bs-theme', theme);
}
}
setTheme(getPreferredTheme());
const showActiveTheme = (theme, focus = false) => {
const themeSwitchers = [].slice.call(document.querySelectorAll('.theme-switcher'));
if (!themeSwitchers.length) return;
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
element.classList.remove('active');
element.setAttribute('aria-pressed', 'false');
});
for (const themeSwitcher of themeSwitchers) {
const btnToActivate = themeSwitcher.querySelector('[data-bs-theme-value="' + theme + '"]');
if (btnToActivate) {
btnToActivate.classList.add('active');
btnToActivate.setAttribute('aria-pressed', 'true');
}
}
}
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
const storedTheme = getStoredTheme();
if (storedTheme !== 'light' && storedTheme !== 'dark') {
setTheme(getPreferredTheme());
}
});
window.addEventListener('DOMContentLoaded', () => {
showActiveTheme(getPreferredTheme());
document.querySelectorAll('[data-bs-theme-value]')
.forEach(toggle => {
toggle.addEventListener('click', (e) => {
e.preventDefault();
const theme = toggle.getAttribute('data-bs-theme-value');
setStoredTheme(theme);
setTheme(theme);
showActiveTheme(theme);
})
})
});
})();
</script>
<link rel="icon" type="image/png" sizes="600x627" href="/assets/img/favicon.png">
<link rel="icon" type="image/png" sizes="600x627" href="/assets/img/favicon-light.png" media="(prefers-color-scheme: dark)">
<link rel="icon" type="image/png" sizes="600x627" href="/assets/img/favicon.png">
<link rel="icon" type="image/png" sizes="600x627" href="/assets/img/favicon-light.png" media="(prefers-color-scheme: dark)">
<link rel="icon" type="image/png" sizes="600x627" href="/assets/img/favicon.png">
<link rel="icon" type="image/png" sizes="600x627" href="/assets/img/favicon.png">
<link rel="icon" type="image/png" sizes="600x627" href="/assets/img/favicon.png">
<link rel="stylesheet" href="/assets/bootstrap/css/bootstrap.min.css">
<link rel="manifest" href="/manifest.json" crossorigin="use-credentials">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat:400,400i,700,700i,600,600i&amp;display=swap">
<link rel="stylesheet" href="/assets/css/bss-overrides.css">
<link rel="stylesheet" href="/assets/css/Hero-Features-icons.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.css">
<link rel="stylesheet" href="/assets/css/theme.css">
<link rel="stylesheet" href="/assets/css/vanilla-zoom.min.css">
<script async src="https://umami.woodburn.au/script.js" data-website-id="15852010-8d3c-4553-92fc-2d6ac31098e8"></script>
{{handshake_scripts | safe}}
</head>
<body>
<nav class="navbar navbar-expand-lg fixed-top bg-secondary-subtle clean-navbar navbar-light">
<div class="container-fluid"><a class="navbar-brand logo" href="/" style="width: 50%;"><img class="light-only" src="/assets/img/HandshakeAustraliaT.webp" style="margin-right: 10px;height: 50px;"><img class="dark-only" src="/assets/img/HandshakeAustraliaTW.webp" style="margin-right: 10px;height: 50px;"></a><button data-bs-toggle="collapse" class="navbar-toggler" data-bs-target="#navcol-1"><span class="visually-hidden">Toggle navigation</span><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navcol-1">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link" href="/" style="color: var(--bs-primary);">Home</a></li>
<li class="nav-item"><a class="nav-link" href="/blog" style="color: var(--bs-primary);">Blog</a></li>
<li class="nav-item"><a class="nav-link" href="/campaigns" style="color: var(--bs-primary);">Campaigns</a></li>
<li class="nav-item"><a class="nav-link" href="/links" style="color: var(--bs-primary);">Links</a></li>
<li class="nav-item"><a class="nav-link" href="/#about" style="color: var(--bs-primary);">About</a></li>
<li class="nav-item"><a class="nav-link" href="https://domains.hns.au" style="color: var(--bs-primary);">Domains</a></li>
<li class="nav-item"><a class="nav-link" href="/#contact" style="color: var(--bs-primary);">Contact</a></li>
</ul>
</div>
</div>
</nav>
<main class="page landing-page" style="margin-top: 50px;">
<div class="light-only" style="margin-bottom: 3em;">
<div style="max-width: 800px;margin: auto;"><img src="/assets/img/HandshakeAustraliaT.webp" width="50%" style="max-width: 400px;margin-left: 20px;"></div>
<section class="text-start clean-block clean-hero">
<div class="text" style="max-width: 700px;width: 95%;"><img class="img-fluid" width="2231" height="318" src="/assets/img/campaign/own-the-dot.png"></div>
</section>
</div>
<div class="dark-only" style="margin-bottom: 3em;">
<div style="max-width: 800px;margin: auto;"><img src="/assets/img/HandshakeAustraliaTW.webp" width="50%" style="max-width: 400px;margin-left: 20px;"></div>
<section class="text-start clean-block clean-hero">
<div class="text" style="max-width: 700px;width: 95%;"><img class="img-fluid" width="2208" height="318" src="/assets/img/campaign/own-the-dot_dark.png"></div>
</section>
</div>
<section class="clean-block clean-info dark">
<div class="container">
<div class="block-heading">
<h2 class="text-primary">Public Statement of Use</h2>
<p style="max-width: 600px;">Handshake Australia is a non-profit initiative promoting open, decentralised naming and online identity free from central control.<br><br>Our Tagline — “Own The Dot” — reflects the spirit of digital freedom, self-sovereignty, and empowerment that defines our community. It symbolises the belief that everyone should have the right to their own digital identity, independent of centralised systems.<br><br>We use “Own The Dot” to identify and promote our mission across educational, community, and awareness platforms. The tagline is not trademarked or owned by any individual or organisation.<br><br>We welcome others to share and use “Own The Dot” in good faith, provided that:<br>&nbsp;&nbsp;&nbsp;&nbsp;It is not used for commercial gain or misrepresentation,<br>&nbsp;&nbsp;&nbsp;&nbsp;It respects the open and decentralised values of the Handshake ecosystem, and<br>&nbsp;&nbsp;&nbsp;&nbsp;Acknowledgment is given to Handshake Australia as the originator of the tagline.<br><br>This statement serves as a public declaration of use and intent, protecting the integrity of the tagline while keeping it open to the community it was created for.<br><br>Together, we uphold the belief that true ownership online begins with freedom — to build, share, and connect on your own terms.&nbsp;</p>
</div>
<div class="row align-items-center">
<div class="col-md-6"><img class="img-thumbnail img-fluid" src="/assets/img/scenery/Handshake.png"></div>
<div class="col-md-6">
<h3>Stop renting yourname.com.au/<br>Own yourname/</h3>
<div class="getting-started-info">
<p>Handshake empowers you to own your own top-level domain (similar to .au), enabling you to move beyond renting domains like yourname.com.au and truly possess yourname/ in a decentralized system.</p>
</div>
</div>
</div>
</div>
</section>
</main>
<footer class="page-footer dark" style="background: var(--bs-body-bg);color: var(--bs-body-color);">
<div class="container">
<div class="row">
<div class="col-sm-3">
<h5 style="color: var(--bs-body-color);">Get started</h5>
<ul>
<li><a href="/" style="color: var(--bs-body-color);">Home</a></li>
<li><a href="/links" style="color: var(--bs-body-color);">Links</a></li>
</ul>
</div>
<div class="col-sm-3">
<h5 style="color: var(--bs-body-color);">Contact</h5>
<ul>
<li><a href="https://discord.gg/WJ6vpjuQv5" target="_blank" style="color: var(--bs-body-color);">Discord</a></li>
<li><a href="/email" target="_blank" style="color: var(--bs-body-color);">Email</a></li>
</ul>
</div>
</div>
</div>
<div class="footer-copyright" style="background: var(--bs-body-bg);border-style: none;">
<p style="color: var(--bs-body-color);">© {{year}} Handshake AU</p>
</div>
</footer>
<div class="text-end floating-switch" style="margin: 10px;"><button class="btn btn-primary btn-sm" type="button" onclick="toggle();"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-sun light-only" style="font-size: 20px;margin: auto;">
<path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"></path>
</svg><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-moon-fill dark-only" style="font-size: 20px;margin: auto;">
<path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278"></path>
</svg></button></div>
<script src="/assets/bootstrap/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.10.0/baguetteBox.min.js"></script>
<script src="/assets/js/vanilla-zoom.js"></script>
<script src="/assets/js/theme.js"></script>
</body>
</html>

View File

@@ -48,6 +48,9 @@
<url>
<loc>https://hns.au/login</loc>
</url>
<url>
<loc>https://hns.au/own-the-dot</loc>
</url>
<url>
<loc>https://hns.au/payment</loc>
</url>