<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>L365 &#8211; Leiden365.nl</title>
	<atom:link href="https://leiden365.nl/blog/nl/tag/l365/feed/" rel="self" type="application/rss+xml" />
	<link>https://leiden365.nl/blog/nl</link>
	<description>Experiments in software and life</description>
	<lastBuildDate>Fri, 23 Oct 2026 13:13:52 +0000</lastBuildDate>
	<language>nl-NL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>l365</title>
		<link>https://leiden365.nl/blog/nl/l365/</link>
		
		<dc:creator><![CDATA[adrie]]></dc:creator>
		<pubDate>Fri, 23 Oct 2026 08:41:08 +0000</pubDate>
				<category><![CDATA[Projecten]]></category>
		<category><![CDATA[Crypto]]></category>
		<category><![CDATA[L365]]></category>
		<guid isPermaLink="false">https://leiden365.nl/blog/?page_id=13062</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[        <div class="l365-wrapper" style="max-width: 860px; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #1e293b;">
            <div style="text-align: center; margin-bottom: 28px;">
                <h1 style="font-size: 2.2rem; margin-bottom: 6px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1fa99.png" alt="🪙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> $L365 Token Hub</h1>
                <p style="color: #64748b; font-size: 1.05rem; margin: 0;">The official micro-currency of Leiden365. Claim daily, tip creators, and track circulation.</p>
            </div>

            <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin-bottom: 24px;">
                <div style="background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 14px; text-align: center;">
                    <div style="font-size: 0.8rem; text-transform: uppercase; color: #64748b; font-weight: 600;">Total Supply</div>
                    <div style="font-size: 1.25rem; font-weight: 700; margin-top: 4px;">10,000,000</div>
                </div>
                <div style="background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 14px; text-align: center;">
                    <div style="font-size: 0.8rem; text-transform: uppercase; color: #64748b; font-weight: 600;">Total Claimed</div>
                    <div style="font-size: 1.25rem; font-weight: 700; margin-top: 4px; color: #0284c7;">20.00</div>
                </div>
                <div style="background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 14px; text-align: center;">
                    <div style="font-size: 0.8rem; text-transform: uppercase; color: #64748b; font-weight: 600;">Circulating</div>
                    <div style="font-size: 1.25rem; font-weight: 700; margin-top: 4px;">120.00</div>
                </div>
                <div style="background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 14px; text-align: center;">
                    <div style="font-size: 0.8rem; text-transform: uppercase; color: #64748b; font-weight: 600;">Holders</div>
                    <div style="font-size: 1.25rem; font-weight: 700; margin-top: 4px;">2</div>
                </div>
            </div>

            <div style="margin-bottom: 24px;">
                        <div style="background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); font-family: sans-serif;">
            <h3 style="margin-top: 0; font-size: 1.2rem; display: flex; align-items: center; gap: 8px;">
                <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span> Check Balance
            </h3>
            <p style="color: #64748b; font-size: 0.9rem; margin-bottom: 12px;">
                Enter an email to check current coin holdings in real time.
            </p>
            <div style="display: flex; gap: 8px;">
                <input type="email" id="l365-block-check-email" placeholder="you@example.com" style="flex: 1; padding: 10px; border: 1px solid #cbd5e1; border-radius: 6px;">
                <button type="button" id="l365-block-check-btn" style="padding: 10px 16px; background: #0f172a; color: #fff; border: none; border-radius: 6px; font-weight: 600; cursor: pointer;">
                    Lookup
                </button>
            </div>
            <div id="l365-block-check-res" style="display: none; margin-top: 14px; padding: 12px; background: #f8fafc; border-left: 4px solid #0284c7; border-radius: 4px;">
                <div style="font-size: 0.8rem; color: #64748b; text-transform: uppercase;">Holdings:</div>
                <div id="l365-block-check-bal" style="font-size: 1.5rem; font-weight: 700; color: #0f172a; margin: 4px 0;">0.00 $L365</div>
                <div id="l365-block-check-status" style="font-size: 0.85rem; color: #64748b;"></div>
            </div>
        </div>
        <script>
        document.getElementById('l365-block-check-btn')?.addEventListener('click', function() {
            const btn = this;
            const email = document.getElementById('l365-block-check-email').value;
            const resBox = document.getElementById('l365-block-check-res');
            const balEl = document.getElementById('l365-block-check-bal');
            const statusEl = document.getElementById('l365-block-check-status');

            if (!email) return;
            btn.disabled = true;

            fetch('https://leiden365.nl/blog/wp-admin/admin-ajax.php', {
                method: 'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body: new URLSearchParams({ action: 'l365_check_balance', email: email, security: 'c6ada39e31' })
            })
            .then(r => r.json())
            .then(d => {
                resBox.style.display = 'block';
                if (d.success) {
                    balEl.innerText = d.data.balance + ' $L365';
                    statusEl.innerText = d.data.can_claim ? '&#x2705; Daily faucet is ready!' : '&#x23f3; Daily faucet claimed today.';
                    
                    const claimIn = document.getElementById('l365-block-claim-email');
                    const sendIn  = document.getElementById('l365-block-send-from');
                    if (claimIn) claimIn.value = email;
                    if (sendIn) sendIn.value = email;
                } else {
                    balEl.innerText = 'Error';
                    statusEl.innerText = d.data.message;
                }
            })
            .finally(() => { btn.disabled = false; });
        });
        </script>
                    </div>

            <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 20px;">
                <div>        <div style="background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); font-family: sans-serif;">
            <h3 style="margin-top: 0; font-size: 1.2rem; display: flex; align-items: center; gap: 8px;">
                <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6b0.png" alt="🚰" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span> Daily Faucet (+10 $L365)
            </h3>
            <p style="color: #64748b; font-size: 0.9rem; margin-bottom: 12px;">
                Enter your email to claim your free daily allowance.
            </p>
            <input type="email" id="l365-block-claim-email" placeholder="you@example.com" style="width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 10px;">
            <button type="button" id="l365-block-claim-btn" style="width: 100%; padding: 10px; background: #0284c7; color: #fff; border: none; border-radius: 6px; font-weight: 600; cursor: pointer;">
                Claim Daily Coins
            </button>
            <div id="l365-block-claim-msg" style="margin-top: 10px; font-size: 0.88rem; min-height: 1.2em;"></div>
        </div>
        <script>
        document.getElementById('l365-block-claim-btn')?.addEventListener('click', function() {
            const btn = this;
            const email = document.getElementById('l365-block-claim-email').value;
            const msg = document.getElementById('l365-block-claim-msg');
            btn.disabled = true;

            fetch('https://leiden365.nl/blog/wp-admin/admin-ajax.php', {
                method: 'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body: new URLSearchParams({ action: 'l365_claim', email: email, security: 'c6ada39e31' })
            })
            .then(r => r.json())
            .then(d => {
                msg.innerText = d.data.message;
                msg.style.color = d.success ? '#15803d' : '#b91c1c';
            })
            .finally(() => { btn.disabled = false; });
        });
        </script>
        </div>
                <div>        <div style="background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); font-family: sans-serif;">
            <h3 style="margin-top: 0; font-size: 1.2rem; display: flex; align-items: center; gap: 8px;">
                <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4b8.png" alt="💸" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span> Send / Spend $L365
            </h3>
            <p style="color: #64748b; font-size: 0.9rem; margin-bottom: 12px;">
                Send coins to any email. You will receive an email to confirm the spend.
            </p>
            <input type="email" id="l365-block-send-from" placeholder="Sender (your email)" style="width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 8px;">
            <input type="email" id="l365-block-send-to" value="" placeholder="Recipient's email" style="width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 8px;">
            <input type="number" id="l365-block-send-amount" value="" placeholder="Amount ($L365)" min="0.0001" step="any" style="width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 10px;">
            <button type="button" id="l365-block-send-btn" style="width: 100%; padding: 10px; background: #0f172a; color: #fff; border: none; border-radius: 6px; font-weight: 600; cursor: pointer;">
                Send Confirmation Link
            </button>
            <div id="l365-block-send-msg" style="margin-top: 10px; font-size: 0.88rem; min-height: 1.2em;"></div>
        </div>
        <script>
        document.getElementById('l365-block-send-btn')?.addEventListener('click', function() {
            const btn = this;
            const from = document.getElementById('l365-block-send-from').value;
            const to = document.getElementById('l365-block-send-to').value;
            const amount = document.getElementById('l365-block-send-amount').value;
            const msg = document.getElementById('l365-block-send-msg');
            btn.disabled = true;

            fetch('https://leiden365.nl/blog/wp-admin/admin-ajax.php', {
                method: 'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body: new URLSearchParams({
                    action: 'l365_request_spend', from_email: from, to_email: to, amount: amount, security: 'c6ada39e31'
                })
            })
            .then(r => r.json())
            .then(d => {
                msg.innerText = d.data.message;
                msg.style.color = d.success ? '#15803d' : '#b91c1c';
            })
            .finally(() => { btn.disabled = false; });
        });
        </script>
        </div>
            </div>

            <div style="margin-top: 24px;">
                        <div style="background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); font-family: sans-serif;">
            <h3 style="margin-top: 0; font-size: 1.2rem; display: flex; align-items: center; gap: 8px;">
                <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e9.png" alt="📩" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span> Request $L365 Coins
            </h3>
            <p style="color: #64748b; font-size: 0.9rem; margin-bottom: 12px;">
                Send a payment request to another user with a 1-click payment link.
            </p>
            <input type="email" id="l365-req-my-email" placeholder="Your email (requester)" style="width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 8px;">
            <input type="email" id="l365-req-target-email" placeholder="Request from (their email)" style="width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 8px;">
            <input type="number" id="l365-req-amount" placeholder="Amount requested ($L365)" min="0.0001" step="any" style="width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 8px;">
            <input type="text" id="l365-req-note" placeholder="Note (e.g. coffee, arcade reward)" style="width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 10px;">
            <button type="button" id="l365-req-btn" style="width: 100%; padding: 10px; background: #0284c7; color: #fff; border: none; border-radius: 6px; font-weight: 600; cursor: pointer;">
                Send Payment Request
            </button>
            <div id="l365-req-msg" style="margin-top: 10px; font-size: 0.88rem; min-height: 1.2em;"></div>
        </div>
        <script>
        document.getElementById('l365-req-btn')?.addEventListener('click', function() {
            const btn = this;
            const myEmail = document.getElementById('l365-req-my-email').value;
            const targetEmail = document.getElementById('l365-req-target-email').value;
            const amount = document.getElementById('l365-req-amount').value;
            const note = document.getElementById('l365-req-note').value;
            const msg = document.getElementById('l365-req-msg');
            btn.disabled = true;

            fetch('https://leiden365.nl/blog/wp-admin/admin-ajax.php', {
                method: 'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body: new URLSearchParams({
                    action: 'l365_request_coins',
                    requester_email: myEmail,
                    target_email: targetEmail,
                    amount: amount,
                    note: note,
                    security: 'c6ada39e31'
                })
            })
            .then(r => r.json())
            .then(d => {
                msg.innerText = d.data.message;
                msg.style.color = d.success ? '#15803d' : '#b91c1c';
            })
            .finally(() => { btn.disabled = false; });
        });
        </script>
                    </div>
        </div>
        
        <div style="max-width: 760px; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #1e293b;">
            <div style="background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 24px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); margin-bottom: 24px;">
                <h2 style="margin: 0 0 8px 0; font-size: 1.4rem;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50e.png" alt="🔎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> $L365 Account Explorer</h2>
                <p style="color: #64748b; font-size: 0.95rem; margin-bottom: 16px;">
                    Enter any email address to view its holdings, daily faucet eligibility, and full transaction history.
                </p>

                <div style="display: flex; gap: 8px; flex-wrap: wrap;">
                    <input type="email" id="l365-acc-email" placeholder="Enter email address..." style="flex: 1; min-width: 240px; padding: 10px 14px; border: 1px solid #cbd5e1; border-radius: 6px; font-size: 1rem;">
                    <button type="button" id="l365-acc-btn" style="padding: 10px 20px; background: #0284c7; color: #fff; border: none; border-radius: 6px; font-weight: 600; cursor: pointer; font-size: 0.95rem;">
                        View Statement
                    </button>
                </div>
                <div id="l365-acc-error" style="color: #dc2626; font-size: 0.9rem; margin-top: 8px;"></div>
            </div>

            <div id="l365-acc-details" style="display: none;">
                <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-bottom: 24px;">
                    <div style="background: #ffffff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 16px;">
                        <div style="font-size: 0.8rem; text-transform: uppercase; color: #64748b; font-weight: 600;">Account Balance</div>
                        <div id="l365-stat-balance" style="font-size: 1.8rem; font-weight: 800; color: #0284c7; margin-top: 4px;">0.00 $L365</div>
                    </div>
                    <div style="background: #ffffff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 16px;">
                        <div style="font-size: 0.8rem; text-transform: uppercase; color: #64748b; font-weight: 600;">Faucet Status</div>
                        <div id="l365-stat-claim" style="font-size: 1.1rem; font-weight: 600; margin-top: 8px; color: #16a34a;">Ready</div>
                    </div>
                </div>

                <div style="background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.05);">
                    <h3 style="margin-top: 0; font-size: 1.15rem; margin-bottom: 16px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dc.png" alt="📜" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ledger Statement</h3>
                    <div style="overflow-x: auto;">
                        <table style="width: 100%; border-collapse: collapse; font-size: 0.9rem; text-align: left;">
                            <thead>
                                <tr style="border-bottom: 2px solid #e2e8f0; color: #64748b; font-size: 0.8rem; text-transform: uppercase;">
                                    <th style="padding: 10px 6px;">Action</th>
                                    <th style="padding: 10px 6px;">Counterparty</th>
                                    <th style="padding: 10px 6px; text-align: right;">Amount</th>
                                    <th style="padding: 10px 6px; text-align: right;">Timestamp</th>
                                </tr>
                            </thead>
                            <tbody id="l365-history-body"></tbody>
                        </table>
                    </div>
                </div>
            </div>

            <script>
            document.getElementById('l365-acc-btn')?.addEventListener('click', function() {
                const btn = this;
                const email = document.getElementById('l365-acc-email').value;
                const errorBox = document.getElementById('l365-acc-error');
                const detailsBox = document.getElementById('l365-acc-details');
                const historyBody = document.getElementById('l365-history-body');

                errorBox.innerText = '';
                if (!email) {
                    errorBox.innerText = 'Please enter an email address.';
                    return;
                }

                btn.disabled = true;
                btn.innerText = 'Loading...';

                fetch('https://leiden365.nl/blog/wp-admin/admin-ajax.php', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                    body: new URLSearchParams({
                        action: 'l365_fetch_account_data',
                        email: email,
                        security: 'c6ada39e31'
                    })
                })
                .then(r => r.json())
                .then(d => {
                    if (!d.success) {
                        errorBox.innerText = d.data.message;
                        detailsBox.style.display = 'none';
                        return;
                    }

                    document.getElementById('l365-stat-balance').innerText = d.data.balance + ' $L365';
                    const claimEl = document.getElementById('l365-stat-claim');
                    claimEl.innerText = d.data.claim_text;
                    claimEl.style.color = d.data.can_claim ? '#16a34a' : '#d97706';

                    historyBody.innerHTML = '';
                    if (d.data.history.length === 0) {
                        historyBody.innerHTML = '<tr><td colspan="4" style="text-align:center; padding: 20px; color: #94a3b8;">No recorded transactions for this email.</td></tr>';
                    } else {
                        d.data.history.forEach(tx => {
                            const tr = document.createElement('tr');
                            tr.style.borderBottom = '1px solid #f1f5f9';
                            const color = tx.is_inbound ? '#16a34a' : '#dc2626';
                            tr.innerHTML = `
                                <td style="padding: 10px 6px;">
                                    <span style="background: #f8fafc; border: 1px solid #e2e8f0; padding: 2px 6px; border-radius: 4px; font-size: 0.8rem; font-weight: 600;">
                                        ${tx.type}
                                    </span>
                                </td>
                                <td style="padding: 10px 6px; color: #475569;">${tx.counterpart}</td>
                                <td style="padding: 10px 6px; text-align: right; font-weight: 700; color: ${color};">${tx.amount}</td>
                                <td style="padding: 10px 6px; text-align: right; color: #94a3b8; font-size: 0.8rem;">${tx.date}</td>
                            `;
                            historyBody.appendChild(tr);
                        });
                    }

                    detailsBox.style.display = 'block';
                })
                .catch(() => {
                    errorBox.innerText = 'Failed to load account data. Please try again.';
                })
                .finally(() => {
                    btn.disabled = false;
                    btn.innerText = 'View Statement';
                });
            });
            </script>
        </div>
        
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
