mirror of
https://github.com/Such-Software/smirk-website.git
synced 2026-10-17 05:51:28 +02:00
feat: add privacy policy page and download links
This commit is contained in:
+36
-12
@@ -164,18 +164,35 @@ export default function Home() {
|
||||
{step === 'initial' && (
|
||||
<div className="flex flex-col items-center gap-6">
|
||||
{hasExtension === false && (
|
||||
<p className="text-zinc-400 text-sm mb-4">
|
||||
Install the{' '}
|
||||
<a
|
||||
href="https://chrome.google.com/webstore/detail/smirk-wallet"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-[#fbeb0a] hover:underline"
|
||||
>
|
||||
Smirk extension
|
||||
</a>{' '}
|
||||
to continue
|
||||
</p>
|
||||
<div className="flex flex-col items-center gap-4 mb-4">
|
||||
<p className="creepster-text text-xl text-[#fbeb0a]">GET SMIRKED</p>
|
||||
<div className="flex gap-4">
|
||||
<a
|
||||
href="https://chrome.google.com/webstore/detail/smirk-wallet"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex items-center gap-2 px-4 py-2 bg-zinc-800 border border-zinc-700 rounded-lg
|
||||
hover:border-[#fbeb0a] hover:shadow-[0_0_12px_rgba(251,235,10,0.4)] transition-all"
|
||||
>
|
||||
<svg className="w-5 h-5" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M12 0C8.21 0 4.831 1.757 2.632 4.501l3.953 6.848A5.454 5.454 0 0 1 12 6.545h10.691A12 12 0 0 0 12 0zM1.931 5.47A11.943 11.943 0 0 0 0 12c0 6.012 4.42 10.991 10.189 11.864l3.953-6.847a5.45 5.45 0 0 1-6.865-2.29zm13.342 2.166a5.446 5.446 0 0 1 1.45 7.09l.002.001h-.002l-5.344 9.257c.206.01.413.016.621.016 6.627 0 12-5.373 12-12 0-1.54-.29-3.011-.818-4.364zM12 16.364a4.364 4.364 0 1 1 0-8.728 4.364 4.364 0 0 1 0 8.728z"/>
|
||||
</svg>
|
||||
<span className="text-sm">Chrome Store</span>
|
||||
</a>
|
||||
<a
|
||||
href="https://github.com/Such-Software/smirk-extension/releases"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex items-center gap-2 px-4 py-2 bg-zinc-800 border border-zinc-700 rounded-lg
|
||||
hover:border-[#fbeb0a] hover:shadow-[0_0_12px_rgba(251,235,10,0.4)] transition-all"
|
||||
>
|
||||
<svg className="w-5 h-5" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
|
||||
</svg>
|
||||
<span className="text-sm">GitHub</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<button
|
||||
@@ -294,6 +311,13 @@ export default function Home() {
|
||||
<p className="text-red-400 text-sm">{error}</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Footer */}
|
||||
<div className="fixed bottom-4 left-0 right-0 flex justify-center">
|
||||
<Link href="/privacy" className="text-zinc-500 text-sm hover:text-[#fbeb0a] transition-colors">
|
||||
Privacy Policy
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
'use client';
|
||||
|
||||
import Image from 'next/image';
|
||||
import Link from 'next/link';
|
||||
|
||||
export default function Privacy() {
|
||||
return (
|
||||
<div className="min-h-screen flex flex-col items-center p-8">
|
||||
{/* Header */}
|
||||
<div className="mb-8 flex flex-col items-center">
|
||||
<Link href="/" className="logo-glow mb-4">
|
||||
<Image
|
||||
src="/logo.svg"
|
||||
alt="Smirk"
|
||||
width={80}
|
||||
height={80}
|
||||
priority
|
||||
/>
|
||||
</Link>
|
||||
<h1 className="creepster-text text-3xl">Privacy Policy</h1>
|
||||
</div>
|
||||
|
||||
{/* Content */}
|
||||
<div className="max-w-2xl w-full bg-zinc-900/50 rounded-2xl p-8 space-y-8">
|
||||
<p className="text-zinc-300 text-lg leading-relaxed">
|
||||
At Smirk, we believe privacy is a fundamental human right. Our architecture is designed
|
||||
so that we never have access to your private keys, unencrypted funds, or the ability
|
||||
to spend your money.
|
||||
</p>
|
||||
|
||||
{/* Section 1 */}
|
||||
<section>
|
||||
<h2 className="text-xl font-bold text-[#fbeb0a] mb-4">1. The Non-Custodial Guarantee</h2>
|
||||
<p className="text-zinc-300 mb-4">Smirk is a <strong>non-custodial</strong> service.</p>
|
||||
<ul className="space-y-3 text-zinc-400">
|
||||
<li>
|
||||
<strong className="text-white">Private Spend Keys:</strong> Your private spend keys
|
||||
(the keys required to move money) are generated and stored locally on your device.
|
||||
They are never transmitted to our servers.
|
||||
</li>
|
||||
<li>
|
||||
<strong className="text-white">No Access:</strong> We cannot "freeze" accounts or
|
||||
"seize" funds because we do not hold the keys to move them.
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
{/* Section 2 */}
|
||||
<section>
|
||||
<h2 className="text-xl font-bold text-[#fbeb0a] mb-4">2. Information We Collect</h2>
|
||||
<p className="text-zinc-300 mb-4">
|
||||
To facilitate social tipping and identity verification, we collect the following:
|
||||
</p>
|
||||
|
||||
<h3 className="text-lg font-semibold text-white mt-6 mb-3">A. Monero & Wownero Private View Keys</h3>
|
||||
<p className="text-zinc-400 mb-3">
|
||||
To provide a fast mobile and extension experience without requiring you to download
|
||||
the entire blockchain, Smirk collects and stores your Private View Keys for Monero (XMR)
|
||||
and Wownero (WOW).
|
||||
</p>
|
||||
<ul className="space-y-2 text-zinc-400 ml-4">
|
||||
<li>
|
||||
<strong className="text-white">Purpose:</strong> These keys allow our Light Wallet Server (LWS)
|
||||
to scan the blockchain on your behalf to identify incoming tips.
|
||||
</li>
|
||||
<li>
|
||||
<strong className="text-white">Limitation:</strong> A View Key cannot be used to spend your funds.
|
||||
It only allows the server to see that a transaction has occurred. Your funds remain secure
|
||||
and spendable only by your local extension.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3 className="text-lg font-semibold text-white mt-6 mb-3">B. Social Identity Data</h3>
|
||||
<p className="text-zinc-400 mb-2">
|
||||
When you link a social account (Telegram, Discord, etc.), we store:
|
||||
</p>
|
||||
<ul className="space-y-2 text-zinc-400 ml-4">
|
||||
<li>Your platform-specific User ID and Username.</li>
|
||||
<li>Your public wallet address (so others can find you to send tips).</li>
|
||||
</ul>
|
||||
|
||||
<h3 className="text-lg font-semibold text-white mt-6 mb-3">C. Transaction Metadata & Payloads</h3>
|
||||
<ul className="space-y-2 text-zinc-400 ml-4">
|
||||
<li><strong className="text-white">Encrypted Payloads:</strong> The ciphertext of the tip (which we cannot read).</li>
|
||||
<li><strong className="text-white">Status & Timestamps:</strong> Metadata regarding when a tip was created or claimed.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
{/* Section 3 */}
|
||||
<section>
|
||||
<h2 className="text-xl font-bold text-[#fbeb0a] mb-4">3. How We Protect Your Data</h2>
|
||||
<ul className="space-y-3 text-zinc-400">
|
||||
<li>
|
||||
<strong className="text-white">Backend Security:</strong> Our Rust-based backend utilizes
|
||||
SQLx type safety and memory-safe architecture to protect your stored view keys and social data.
|
||||
</li>
|
||||
<li>
|
||||
<strong className="text-white">No Sale of Data:</strong> We do not, and will never,
|
||||
sell your social handles, transaction history, or view key data to third parties.
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
{/* Smirk Approach */}
|
||||
<section className="bg-zinc-800/50 rounded-xl p-6">
|
||||
<h2 className="text-lg font-bold text-[#fbeb0a] mb-4 flex items-center gap-2">
|
||||
<span>🛡️</span> Why do we need your View Key? (The "Smirk" Approach)
|
||||
</h2>
|
||||
<p className="text-zinc-300 mb-4">Traditional Monero wallets require hours of syncing. By providing your Private View Key to our server:</p>
|
||||
<ul className="space-y-2 text-zinc-400">
|
||||
<li>✓ We scan the blockchain for you in real-time.</li>
|
||||
<li>✓ We notify your extension when a tip arrives.</li>
|
||||
<li>✓ You remain the only one with the Private Spend Key required to actually move those funds.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
{/* Quick Summary */}
|
||||
<section className="border border-zinc-700 rounded-xl p-6">
|
||||
<h2 className="text-lg font-bold text-white mb-4">🛡️ Quick-Glance Summary</h2>
|
||||
<ul className="space-y-2 text-zinc-400">
|
||||
<li><strong className="text-[#fbeb0a]">Non-Custodial:</strong> We never see your private spend keys. Your money is yours.</li>
|
||||
<li><strong className="text-[#fbeb0a]">View Keys:</strong> We collect Monero/Wownero view keys to scan for your tips so you don't have to sync the whole blockchain.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Encrypted:</strong> All tip payloads are encrypted on your device.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Identity:</strong> We only store your Social ID to help people find your public key.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
{/* Back link */}
|
||||
<div className="pt-4 text-center">
|
||||
<Link
|
||||
href="/"
|
||||
className="text-[#fbeb0a] hover:underline"
|
||||
>
|
||||
← Back to Smirk
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user