This commit is contained in:
2025-11-21 16:44:51 -05:00
parent c4914a5ae9
commit 8414e1013d
6 changed files with 254 additions and 172 deletions

View File

@@ -15,6 +15,7 @@ const links = [
"https://cashu.btcforplebs.com",
"https://fevela.btcforplebs.com",
"https://coracle.btcforplebs.com",
"https://shipyard.btcforplebs.com",
"https://live.btcforplebs.com",
"https://nsec.btcforplebs.com",
"https://ncryptdesec.btcforplebs.com",

View File

@@ -611,3 +611,68 @@ footer {
opacity: 0.5;
}
}
/* Navbar Styles */
.navbar {
background: linear-gradient(to bottom, var(--button-bg-top), var(--button-bg-bottom));
border-bottom: 1px solid var(--button-border);
padding: 10px 20px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
}
.navbar-container {
display: flex;
justify-content: space-between;
align-items: center;
max-width: 1200px;
margin: 0 auto;
}
.navbar-logo {
display: flex;
align-items: center;
text-decoration: none;
color: var(--text-color);
font-weight: bold;
font-size: 1.2rem;
}
.navbar-logo img {
height: 40px;
margin-right: 10px;
border-radius: 6px;
}
.navbar-menu {
display: flex;
gap: 20px;
}
.navbar-item {
text-decoration: none;
color: var(--text-color);
font-weight: 500;
padding: 8px 12px;
border-radius: 6px;
transition: background-color 0.2s, color 0.2s;
}
.navbar-item:hover {
background-color: rgba(0, 0, 0, 0.05);
color: #F7931A; /* Bitcoin Orange */
}
/* Mobile Navbar */
@media (max-width: 768px) {
.navbar-container {
flex-direction: column;
gap: 10px;
}
.navbar-menu {
flex-wrap: wrap;
justify-content: center;
gap: 10px;
}
}

View File

@@ -62,25 +62,4 @@ document.addEventListener('DOMContentLoaded', () => {
}
})
.catch(error => console.error('Error loading footer:', error));
// --- 5. Fetch and Display Last Update from Gitea -----------------------
fetch('https://gitea.btcforplebs.com/api/v1/repos/btcforplebs/BTCforPlebs.com')
.then(response => response.json())
.then(data => {
const lastUpdate = new Date(data.updated_at);
const formattedDate = lastUpdate.toLocaleDateString();
const formattedTime = lastUpdate.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
const updateText = document.getElementById('last-updated-text');
if (updateText) {
updateText.textContent = `Website last updated: ${formattedDate} ${formattedTime}`;
}
})
.catch(error => {
console.error('Error fetching last update:', error);
const updateText = document.getElementById('last-updated-text');
if (updateText) {
updateText.textContent = 'Last update: Error fetching data.';
}
});
});

View File

@@ -77,6 +77,8 @@
data-url="https://jumble.btcforplebs.com"></span></a>
<a href="https://fevela.btcforplebs.com" target="_blank" class="prefetch">Fevela <span class="status-emoji"
data-url="https://fevela.btcforplebs.com"></span></a>
<a href="https://shipyard.btcforplebs.com" target="_blank" class="prefetch">Shipyard <span class="status-emoji"
data-url="https://shipyard.btcforplebs.com"></span></a>
Nostr Community (add community.btcforplebs.com)

View File

@@ -1,121 +1,113 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cashu BTCforPlebs</title>
<meta name="description" content="Cashu is a Bitcoin thirdlayer Chaumian ecash protocol. This guide covers how it works, its privacy features, and how to get started with app walkthroughs.">
<meta name="description"
content="Cashu is a Bitcoin thirdlayer Chaumian ecash protocol. This guide covers how it works, its privacy features, and how to get started with app walkthroughs.">
<link rel="icon" href="/images/favicon.png" type="image/png">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css" rel="stylesheet">
</head>
<body>
<!-- Bitcoin Price Banner -->
<div id="btc-price-banner">This page is under construction</div>
<div class="logo-container">
<a href="/" class="prefetch">
<img src="/images/btcforplebs_logo.gif" alt="Home" class="header-logo">
</a>
</div>
<div class="container">
<h1>Cashu Chaumian Ecash on Bitcoin</h1>
<p>Cashu is a lightweight, privacypreserving ecash system that runs on top of the Lightning Network and settles onchain. It uses zeroknowledge proofs to hide the value of a transfer while remaining fully traceable when required.</p>
<!-- Dropdown navigation, similar to learnbitcoin -->
<div class="dropdown">
<select onchange="navigateToSection(this)">
<option value="">Select a topic</option>
<option value="what-is-cashu">What is Cashu?</option>
<option value="privacy">Privacy &amp; ZeroKnowledge</option>
<option value="technology">Underlying Technology</option>
<option value="apps">Apps &amp; UseCases</option>
<option value="getting-started">Getting Started</option>
<option value="videos">Video Resources</option>
</select>
<div class="logo-container">
<a href="/" class="prefetch">
<img src="/images/btcforplebs_logo.gif" alt="Home" class="header-logo">
</a>
</div>
<div class="container">
<h1>Cashu Chaumian Ecash on Bitcoin</h1>
<p>Cashu is a lightweight, privacypreserving ecash system that runs on top of the Lightning Network and settles
onchain. It uses zeroknowledge proofs to hide the value of a transfer while remaining fully traceable when
required.</p>
<!-- Sections -->
<section id="what-is-cashu">
<h2>What is Cashu?</h2>
<p>Cashu is an ecash protocol that allows you to mint, transfer, and spend Bitcoin value without revealing the amount or the sender/receiver in public transactions. It leverages the Lightning Network for instant settlement while maintaining onchain traceability for regulatory compliance. Think of it as a privacypreserving UTXO that can be moved anywhere on the Lightning network.</p>
</section>
<section id="privacy">
<h2>Privacy &amp; ZeroKnowledge</h2>
<p>At the core of Cashu is a zeroknowledge range proof that proves the value of a note without exposing it. This means you can pay for goods or services with a Cashu note and the recipient can verify that the note contains sufficient value, while the transaction remains private onchain.</p>
</section>
<section id="technology">
<h2>Underlying Technology</h2>
<p>Cashu uses a set of “notes” minted by a mint and signed with a unique key. Each note contains an amount and a unique identifier that the mint keeps encrypted. Transfers are executed with the Lightning Network, but minting and redeeming are done via onchain transactions that are fully verifiable.</p>
</section>
<section id="apps">
<h2>Apps &amp; UseCases</h2>
<p>Several wallet applications support Cashu, from the <a href="https://cashu.me" target="_blank" class="prefetch">Cashu Web Wallet</a> to <a href="https://meltwallet.com" target="_blank" class="prefetch">Melts Lightning Wallet</a>. Below are quick links to some popular ones:</p>
<div class="button-container">
<a href="https://cashu.me" class="button" target="_blank" class="prefetch">Cashu Web Wallet</a>
<a href="https://meltwallet.com" class="button" target="_blank" class="prefetch">Melt Wallet</a>
<a href="https://github.com/cashu/cashu-js-demo" class="button" target="_blank" class="prefetch">Cashu JS Demo</a>
<!-- Dropdown navigation, similar to learnbitcoin -->
<div class="dropdown">
<select onchange="navigateToSection(this)">
<option value="">Select a topic</option>
<option value="what-is-cashu">What is Cashu?</option>
<option value="privacy">Privacy &amp; ZeroKnowledge</option>
<option value="technology">Underlying Technology</option>
<option value="apps">Cashu Apps</option>
<option value="getting-started">Getting Started</option>
</select>
</div>
</section>
<section id="getting-started">
<h2>Getting Started</h2>
<p>To begin using Cashu, youll need a Lightningready wallet that supports the protocol. Most of the wallets listed above have a <code>Cashu</code> switch or integration. Once installed, create a new Cashu account, mint a few notes, and start experimenting.</p>
</section>
<!-- Sections -->
<section id="what-is-cashu">
<h2>What is Cashu?</h2>
<p>Cashu is an ecash protocol that allows you to mint, transfer, and spend sats without revealing
the amount or the sender/receiver in public transactions. It leverages the Lightning Network for instant
settlement on nodes. Think of it as a
privacypreserving bearer instrument that can be minted and redeemed across on the Lightning network.
</p>
</section>
<section id="videos">
<h2>Video Resources</h2>
<!-- Explainer Video 1 -->
<h3>Explainer What is Cashu?</h3>
<div class="video-container">
<video controls poster="https://i.imgur.com/Dc6m4zV.png" loading="lazy" style="width:100%">
<source src="https://raw.githubusercontent.com/cashu/cashu-presentation/master/intro.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
<!-- Walkthrough Video 2 -->
<h3>How to Mint a Cashu Note</h3>
<div class="video-container">
<video controls poster="https://i.imgur.com/Kq4c1rT.png" loading="lazy" style="width:100%">
<source src="https://raw.githubusercontent.com/cashu/cashu-presentation/master/mint.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
<!-- App Walkthrough 3 -->
<h3>Using Cashu in Melt Wallet</h3>
<div class="video-container">
<video controls poster="https://i.imgur.com/3p6zT9G.png" loading="lazy" style="width:100%">
<source src="https://raw.githubusercontent.com/cashu/cashu-presentation/master/melt-demo.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
</section>
<section id="privacy">
<h2>Privacy &amp; ZeroKnowledge</h2>
<p>At the core of Cashu is a zeroknowledge range proof that proves the value of a note without exposing it.
This means you can pay for goods or services with a Cashu note and the recipient can verify that the
note contains sufficient value, while the transaction remains private onchain.</p>
</section>
<div class="social-icons">
<a href="https://github.com/cashu" target="_blank" class="prefetch"><i class="fa-brands fa-github"></i></a>
<a href="https://twitter.com/CashuProtocol" target="_blank" class="prefetch"><i class="fa-brands fa-twitter"></i></a>
<section id="technology">
<h2>Underlying Technology</h2>
<p>Cashu uses a set of “notes” minted by a mint and signed with a unique key. Each note contains an amount
and a unique identifier that the mint keeps encrypted. Transfers are executed with the Lightning
Network, and does require a mint to mint notes and therefore requires some level of trust in the mint.
</p>
</section>
<section id="apps">
<h2>Cashu Apps</h2>
<p>Several wallet applications support Cashu. Below are quick links to some popular ones:</p>
<div class="button-container">
<a href="https://cashu.btcforplebs.com" class="button" target="_blank" class="prefetch">Cashu Wallet Web
App</a>
<a href="https://nutstash.btcforplebs.com" class="button" target="_blank" class="prefetch">Nutstash
Wallet Web App</a>
<a href="https://macadamia.cash" class="button" target="_blank" class="prefetch">Macadamia (iOS App)</a>
<a href="https://minibits.cash" class="button" target="_blank" class="prefetch">Minibits (Android & iOS
App)</a>
</div>
</section>
<section id="getting-started">
<h2>Getting Started</h2>
<p>To begin using Cashu, youll need a Lightningready wallet that supports the protocol. Most of the
wallets listed above have a <code>Cashu</code> switch or integration. Once installed, create a new Cashu
account, mint a few notes, and start experimenting.</p>
</section>
<div class="social-icons">
<a href="https://github.com/cashu" target="_blank" class="prefetch"><i class="fa-brands fa-github"></i></a>
<a href="https://twitter.com/CashuProtocol" target="_blank" class="prefetch"><i
class="fa-brands fa-twitter"></i></a>
</div>
<div class="last-update">
<small id="last-updated-text"></small>
</div>
</div>
<div class="last-update">
<small id="last-updated-text"></small>
</div>
</div>
<div id="footer"></div>
<script src="/nostr-chat-widget.js"
data-nostr-pubkey="75462f4dece4fbde54a535cfa09eb0d329bda090a9c2f9ed6b5f9d1d2fb6c15b"
data-brand-name="Chat with BTCforPlebs"
data-color="#fdad01"
data-color-secondary="#222222">
</script>
<a href="#top" title="Back to Top">🔝</a>
<div id="footer"></div>
<script src="/nostr-chat-widget.js"
data-nostr-pubkey="75462f4dece4fbde54a535cfa09eb0d329bda090a9c2f9ed6b5f9d1d2fb6c15b"
data-brand-name="Chat with BTCforPlebs" data-color="#fdad01" data-color-secondary="#222222">
</script>
<a href="#top" title="Back to Top">🔝</a>
<script>function navigateToSection(select) {
const sectionId = select.value;
if (sectionId) {
document.getElementById(sectionId).scrollIntoView({ behavior: 'smooth' });
}
}</script>
</html>
const sectionId = select.value;
if (sectionId) {
document.getElementById(sectionId).scrollIntoView({ behavior: 'smooth' });
}
}</script>
</html>

View File

@@ -1,70 +1,113 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Learn Nostr</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:image" content="/images/thumb.jpeg">
<meta property="og:url" content="https://btcforplebs.com">
<meta name="twitter:card" content="summary_large_image">
<title>Learn Nostr</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:image" content="/images/thumb.jpeg">
<meta property="og:url" content="https://btcforplebs.com">
<meta name="twitter:card" content="summary_large_image">
<!-- favicon -->
<link rel="icon" href="/images/favicon.png" type="image/png">
<!-- favicon -->
<link rel="icon" href="/images/favicon.png" type="image/png">
<!-- scripts -->
<script src="/assets/js/scripts.js" defer></script>
<!-- scripts -->
<script src="/assets/js/scripts.js" defer></script>
<link rel="stylesheet" href="/assets/css/main.css">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css" rel="stylesheet">
<link rel="stylesheet" href="/assets/css/main.css">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css" rel="stylesheet">
</head>
<body>
<!-- Bitcoin Price Banner -->
<div id="btc-price-banner">This page is under construction</div>
<div class="container">
<div class="logo-container">
<a href="/">
<img src="/images/btcforplebs_logo.gif" alt="Home" class="header-logo">
</a>
<body>
<!-- Bitcoin Price Banner -->
<div id="btc-price-banner">This page is under construction</div>
<div class="container">
<div class="logo-container">
<a href="/">
<img src="/images/btcforplebs_logo.gif" alt="Home" class="header-logo">
</a>
</div>
<h1>Learn About Nostr</h1>
<p>Nostr is a decentralized, censorship-resistant protocol for communication. Learn more about its potential by watching the video below.</p>
<h2>What is Nostr and Why Should You Care?</h2>
<div class="video-container">
<video controls playsinline width="100%" height="auto" poster="https://img.youtube.com/vi/8aZkg3OQc5c/maxresdefault.jpg">
<source src="https://v.nostr.build/voby1u385n0ZwAbp.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
<h1>Learn About Nostr</h1>
<p>Nostr is a decentralized, censorship-resistant protocol for communication. Learn more about its potential by
watching the video below.</p>
<h2>What is Nostr and Why Should You Care?</h2>
<div class="video-container">
<video controls playsinline width="100%" height="auto"
poster="https://img.youtube.com/vi/8aZkg3OQc5c/maxresdefault.jpg">
<source src="https://v.nostr.build/voby1u385n0ZwAbp.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
<h2>Nostr Tools & Resources</h2>
<p>Explore the ecosystem of Nostr apps and tools available on BTCforPlebs:</p>
<h3>Relay</h3>
<ul>
<li><a href="/relay" target="_blank"><strong>BTCforPlebs Relay</strong></a> A reliable WebSocket relay for your
Nostr clients. Connect at <code>wss://relay.btcforplebs.com</code>.</li>
</ul>
<h3>Tools</h3>
<ul>
<li><a href="https://nsec.btcforplebs.com" target="_blank"><strong>Nsec Bunker</strong></a> A remote signer that
keeps your private keys safe while allowing you to use Nostr apps.</li>
<li><a href="https://ncryptdesec.btcforplebs.com" target="_blank"><strong>NcryptDEsec</strong></a> A tool for
encrypting and decrypting Nostr keys using the NIP-49 standard.</li>
</ul>
<h3>Clients</h3>
<ul>
<li><a href="https://nostrudel.btcforplebs.com" target="_blank"><strong>Nostrudel</strong></a> A feature-rich
web client for Nostr, offering a comprehensive social media experience.</li>
<li><a href="https://coracle.btcforplebs.com" target="_blank"><strong>Coracle</strong></a> A lightweight and
highly customizable Nostr web client.</li>
<li><a href="https://jumble.btcforplebs.com" target="_blank"><strong>Jumble</strong></a> A unique Nostr client
focused on specific user interactions.</li>
<li><a href="https://fevela.btcforplebs.com" target="_blank"><strong>Fevela</strong></a> A social client
designed for ease of use and community engagement.</li>
</ul>
<h3>Community</h3>
<ul>
<li><a href="https://flotilla.btcforplebs.com/" target="_blank"><strong>Flotilla</strong></a> A
community-focused platform built on Nostr for group discussions and collaboration.</li>
</ul>
<h3>Storage</h3>
<ul>
<li><a href="https://bloom.btcforplebs.com" target="_blank"><strong>Bloom</strong></a> A decentralized storage
solution replacing Google Drive, powered by Blossom servers.</li>
</ul>
<a href="/index.html" class="button">Home</a>
</div>
<script src="/nostr-chat-widget.js"
data-nostr-pubkey="75462f4dece4fbde54a535cfa09eb0d329bda090a9c2f9ed6b5f9d1d2fb6c15b"
data-brand-name="Chat with BTCforPlebs"
data-color="#fdad01"
data-color-secondary="#222222">
</script>
</div>
<script src="/nostr-chat-widget.js"
data-nostr-pubkey="75462f4dece4fbde54a535cfa09eb0d329bda090a9c2f9ed6b5f9d1d2fb6c15b"
data-brand-name="Chat with BTCforPlebs" data-color="#fdad01" data-color-secondary="#222222">
</script>
<div id="footer"></div>
<a href="#top" title="Back to Top">🔝</a>
<script>
// --- 2. Dropdown navigation ---------------------------------------------
window.navigateToSection = function (select) {
const sectionId = select.value;
if (sectionId) {
const section = document.getElementById(sectionId);
if (section) {
section.scrollIntoView({ behavior: 'smooth' });
<div id="footer"></div>
<a href="#top" title="Back to Top">🔝</a>
<script>
// --- 2. Dropdown navigation ---------------------------------------------
window.navigateToSection = function (select) {
const sectionId = select.value;
if (sectionId) {
const section = document.getElementById(sectionId);
if (section) {
section.scrollIntoView({ behavior: 'smooth' });
}
}
}
};</script>
};</script>
</body>
</html>
</html>