a8341bf737
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
77 lines
4.6 KiB
HTML
77 lines
4.6 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<title>PolHunter</title>
|
|
<meta name="description" content="Missions across the network. Visit a site, find the thing, get a drip of POL to your wallet.">
|
|
<link rel="stylesheet" href="/style.css?v=5">
|
|
</head>
|
|
<body>
|
|
<div class="wrap">
|
|
<header class="top">
|
|
<a class="mark" href="/"><span class="coin"></span>PolHunter</a>
|
|
<nav class="nav">
|
|
<a class="btn ghost sm" href="#how">How it works</a>
|
|
<a class="btn ghost sm" href="#ledger">Paid so far</a>
|
|
<a class="btn sm" id="signin" href="https://instantadpay.com/api/my/polhunter">Open my board</a>
|
|
</nav>
|
|
</header>
|
|
|
|
<section class="hero">
|
|
<picture class="hero-art" aria-hidden="true">
|
|
<source type="image/webp" media="(max-width:820px)" srcset="/img/hero-800.webp">
|
|
<source type="image/webp" srcset="/img/hero.webp">
|
|
<img src="/img/hero.jpg" alt="" fetchpriority="high" decoding="async">
|
|
</picture>
|
|
<div class="hero-copy">
|
|
<span class="pill"><i></i> Paying in POL on Polygon</span>
|
|
<h1>Visit it. Find it.<br><b>Get paid in POL.</b></h1>
|
|
<p>Every mission is a few minutes on one of our sites, one thing to find, and a drip of POL straight to your wallet when you find it. Your code is yours alone, and the hiding place moves.</p>
|
|
<a class="btn" href="https://instantadpay.com/api/my/polhunter">Start hunting</a>
|
|
<a class="btn ghost" href="#how" style="margin-left:8px">See how</a>
|
|
<p id="signinNote" style="font-size:13px;color:var(--dim);margin-top:14px;display:none">Sign in with your InstantAdPay account: the button sends you through InstantAdPay and straight back here. No password, no new account.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section" id="how">
|
|
<h2>How a hunt works</h2>
|
|
<div class="sub">Three steps, one code, real POL.</div>
|
|
<div class="steps">
|
|
<div class="step"><b>Pick a mission</b> on your board. Each one names a site and what to find there.</div>
|
|
<div class="step"><b>Go find it.</b> Spend the time on the site. Your personal code appears when you have, somewhere on the page.</div>
|
|
<div class="step"><b>Type the code.</b> If it is yours, a random drip between the day's range lands in your wallet, on-chain, with a link to prove it.</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section" id="ledger">
|
|
<h2>Paid so far</h2>
|
|
<div class="sub">Every drip is a Polygon transaction you can open.</div>
|
|
<div class="stats" id="stats"></div>
|
|
<div class="ledger" id="recent"><div class="row"><span class="site">Loading…</span></div></div>
|
|
</section>
|
|
|
|
<div class="adslot" data-ad="home-footer"><!-- nas: 468x60 on phones, 728x90 on wider screens --><script>(function(){var m=window.innerWidth<600;document.write('<scr'+'ipt src="https://www.networkadspace.com/showadss.php?'+(m?'w=468&h=60&n=1&bw=468&bh=60':'w=728&h=90&n=1&bw=728&bh=90')+'&c=999"></scr'+'ipt>');})();</script></div>
|
|
|
|
<footer class="foot">
|
|
PolHunter rewards completed missions. Rewards are not income and are not guaranteed; the daily pool is limited and drips are random within the posted range. Cryptocurrency involves risk of loss. Hunters sign in with an InstantAdPay account; no account is created here.
|
|
<br><a href="https://instantadpay.com">InstantAdPay</a> · <a href="/admin" rel="nofollow" style="color:var(--dim)">·</a>
|
|
</footer>
|
|
</div>
|
|
<script>
|
|
(async () => {
|
|
if (new URLSearchParams(location.search).get('signin')) document.getElementById('signinNote').style.display = 'block';
|
|
try {
|
|
const r = await (await fetch('/api/ledger')).json();
|
|
const t = r.totals || {};
|
|
document.getElementById('stats').innerHTML = [['POL paid', (t.pol || 0).toLocaleString('en-US', { maximumFractionDigits: 2 })], ['drips', t.paid || 0], ['hunters', t.hunters || 0], ['today', (t.today || 0).toLocaleString('en-US', { maximumFractionDigits: 2 }) + ' POL']]
|
|
.map(([l, v]) => '<div class="stat"><div class="v num">' + v + '</div><div class="l">' + l + '</div></div>').join('');
|
|
const cfg = await (await fetch('/api/config')).json();
|
|
document.getElementById('recent').innerHTML = (r.recent || []).length ? r.recent.map(x => '<div class="row"><span>' + x.who + '</span><span class="site">' + x.site + '</span><span class="pol">+' + x.pol + ' POL</span><a class="when" href="' + cfg.explorer + '/tx/' + x.tx + '" target="_blank" rel="noopener">verify ↗</a></div>').join('')
|
|
: '<div class="row"><span class="site">No drips yet. The first hunter gets the first line.</span></div>';
|
|
} catch (e) {}
|
|
})();
|
|
</script>
|
|
</body>
|
|
</html>
|