Snapshot: full project state

This commit is contained in:
2026-10-06 23:43:23 -07:00
commit ed212cdbd9
21 changed files with 2090 additions and 0 deletions

28
templates/auth.html Normal file
View File

@@ -0,0 +1,28 @@
{% extends "base.html" %}
{% block title %}{{ "Sign up" if mode == "signup" else "Sign in" }} — Supernova{% endblock %}
{% block content %}
<div class="auth-card">
<div class="card">
<h3 style="font-size:1.4rem">{{ "Create your account" if mode == "signup" else "Welcome back" }}</h3>
<div class="meta">Pay in Bitcoin. Boost any platform.</div>
<form method="POST" style="margin-top:20px">
<div class="field">
<label>Email</label>
<input type="email" name="email" required placeholder="you@example.com">
</div>
<div class="field">
<label>Password</label>
<input type="password" name="password" required minlength="8" placeholder="••••••••">
</div>
<button class="btn" type="submit" style="width:100%">{{ "Sign up" if mode == "signup" else "Sign in" }}</button>
</form>
<div class="meta center mt-2">
{% if mode == "signup" %}
Already have an account? <a href="{{ url_for('login') }}" style="color:var(--nebula-b)">Sign in</a>
{% else %}
New here? <a href="{{ url_for('signup') }}" style="color:var(--nebula-b)">Create account</a>
{% endif %}
</div>
</div>
</div>
{% endblock %}

97
templates/base.html Normal file
View File

@@ -0,0 +1,97 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}Supernova — Buy Instagram, TikTok & YouTube Followers Cheap | Bitcoin SMM Panel{% endblock %}</title>
<meta name="description" content="{% block description %}Buy cheap Instagram, TikTok, YouTube, Facebook & X followers, likes and views from $0.02 per 1k. Pay with Bitcoin, instant automated delivery, 361 services across 18+ platforms.{% endblock %}">
<meta name="keywords" content="buy instagram followers, buy tiktok followers, buy youtube views, buy followers cheap, smm panel, social media marketing panel, buy likes, buy views, buy facebook followers, buy x twitter followers, bitcoin smm panel">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://supernova.thetempleofdoom.com/">
<!-- Open Graph -->
<meta property="og:type" content="website">
<meta property="og:site_name" content="Supernova">
<meta property="og:title" content="Supernova — Buy Instagram, TikTok & YouTube Followers Cheap | Bitcoin SMM Panel">
<meta property="og:description" content="Buy cheap followers, likes and views for Instagram, TikTok, YouTube, Facebook & X. Pay with Bitcoin. Instant automated delivery. 361 services, 18+ platforms.">
<meta property="og:url" content="https://supernova.thetempleofdoom.com/">
<meta property="og:image" content="https://supernova.thetempleofdoom.com/static/og.png">
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Supernova — Buy Instagram, TikTok & YouTube Followers Cheap">
<meta name="twitter:description" content="Buy cheap followers, likes & views. Pay with Bitcoin. Instant automated delivery across 18+ platforms.">
<meta name="twitter:image" content="https://supernova.thetempleofdoom.com/static/og.png">
<!-- JSON-LD -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Supernova",
"url": "https://supernova.thetempleofdoom.com/",
"description": "Bitcoin-powered social media growth panel. Buy Instagram, TikTok, YouTube, Facebook and X followers, likes and views.",
"logo": "https://supernova.thetempleofdoom.com/static/og.png"
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Supernova",
"url": "https://supernova.thetempleofdoom.com/",
"potentialAction": {
"@type": "SearchAction",
"target": "https://supernova.thetempleofdoom.com/services?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}
</script>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}?v=3">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🌌</text></svg>">
<!-- Umami analytics -->
<script async src="https://analytics.thetempleofdoom.com/script.js" data-website-id="953c15df-ba4c-453a-a7c6-465fa9e3f202"></script>
</head>
<body>
<canvas id="starfield"></canvas>
<div class="nebula"></div>
<nav class="top">
<div class="inner">
<a class="brand" href="{{ url_for('index') }}"><span class="orb"></span>Supernova</a>
<div class="navlinks">
<a href="{{ url_for('services') }}">Services</a>
{% if user %}
<a href="{{ url_for('dashboard') }}">Dashboard</a>
<a href="{{ url_for('orders') }}">Orders</a>
<span class="balance-pill">₿ ${{ "%.2f"|format(user["balance"]) }}</span>
<a class="btn sm" href="{{ url_for('deposit') }}">+ Add funds</a>
<a href="{{ url_for('logout') }}">Log out</a>
{% else %}
<a href="{{ url_for('login') }}">Sign in</a>
<a class="btn sm" href="{{ url_for('signup') }}">Get started</a>
{% endif %}
</div>
</div>
</nav>
<main class="wrap">
{% with msgs = get_flashed_messages(with_categories=true) %}
{% for cat, m in msgs %}
<div class="flash {{ cat }}">{{ m }}</div>
{% endfor %}
{% endwith %}
{% block content %}{% endblock %}
</main>
<footer class="site">
<div class="wrap">
Powered by Supernova · <a href="https://buymeacoffee.com/r26xrthzttg" target="_blank" rel="noopener">☕ Support this project</a>
</div>
</footer>
<script src="{{ url_for('static', filename='app.js') }}?v=3"></script>
</body>
</html>

72
templates/bg-demo.html Normal file
View File

@@ -0,0 +1,72 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Cosmic Backgrounds — theme gallery</title>
<style>
* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; font-family: -apple-system, "Segoe UI", Roboto, sans-serif; color: #e8eaf6; background: #050510; }
.overlay {
position: relative; z-index: 2;
max-width: 900px; margin: 0 auto; padding: 60px 24px;
}
h1 { font-size: 2rem; margin: 0 0 6px; }
.sub { color: #9aa0c0; margin: 0 0 28px; }
.picker { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 40px; }
.picker a {
text-decoration: none; color: #cfc4ff; font-weight: 600; font-size: 0.92rem;
padding: 10px 18px; border-radius: 999px;
border: 1px solid rgba(130,110,255,0.3);
background: rgba(20,18,48,0.55);
transition: all .2s ease;
}
.picker a.active, .picker a:hover {
background: linear-gradient(135deg, #7b2ff7, #2b6cff);
color: #fff; border-color: transparent;
box-shadow: 0 4px 20px rgba(123,47,247,0.4);
}
.card {
background: rgba(20,18,48,0.6);
border: 1px solid rgba(130,110,255,0.2);
border-radius: 18px; padding: 28px;
backdrop-filter: blur(8px);
margin-bottom: 16px;
}
.card h2 { margin: 0 0 10px; font-size: 1.2rem; }
.card p { color: #9aa0c0; line-height: 1.7; margin: 0; }
code {
display: block; margin-top: 40px; padding: 14px 18px;
background: rgba(10,10,30,0.7); border: 1px solid rgba(130,110,255,0.2);
border-radius: 10px; font-size: 0.85rem; color: #7cffb0;
overflow-x: auto; white-space: nowrap;
}
</style>
</head>
<body>
<script src="{{ url_for('static', filename='cosmic-bg.js') }}" data-theme="{{ theme }}"></script>
<div class="overlay">
<h1>✨ Cosmic Backgrounds</h1>
<p class="sub">Current theme: <strong>{{ theme }}</strong> — click any to preview. Drop into any site with one script tag.</p>
<div class="picker">
{% for t in themes %}
<a href="{{ url_for('bg_demo') }}?theme={{ t }}" class="{{ 'active' if t == theme else '' }}">{{ t }}</a>
{% endfor %}
</div>
<div class="card">
<h2>This is how your content sits over it</h2>
<p>The background is a fixed, pointer-events-none canvas layered behind everything — your existing site, nav, cards and text all render on top unchanged. Every theme is slow + smooth, and pauses automatically when the tab is in the background (zero wasted CPU).</p>
</div>
<div class="card">
<h2>Add it to any site</h2>
<p>One line in the <code>&lt;head&gt;</code> — swap <code>data-theme</code> to taste:</p>
</div>
<code>&lt;script src="https://supernova.thetempleofdoom.com/static/cosmic-bg.js" data-theme="{{ theme }}"&gt;&lt;/script&gt;</code>
</div>
</body>
</html>

43
templates/dashboard.html Normal file
View File

@@ -0,0 +1,43 @@
{% extends "base.html" %}
{% block title %}Dashboard — Supernova{% endblock %}
{% block content %}
<div class="section-title" style="margin-top:36px">Your command deck</div>
<div class="stats">
<div class="stat"><div class="n">₿ ${{ "%.2f"|format(user.balance) }}</div><div class="l">balance</div></div>
<div class="stat"><div class="n">{{ orders|length }}</div><div class="l">recent orders</div></div>
<div class="stat"><div class="n">⚡</div><div class="l">auto-fulfilled</div></div>
</div>
<div class="platform-grid">
<div class="card">
<h3>Add funds</h3>
<div class="meta">Deposit Bitcoin — credited instantly on confirmation.</div>
<div class="row"><a class="btn sm" href="{{ url_for('deposit') }}">Deposit ₿</a></div>
</div>
<div class="card">
<h3>New boost</h3>
<div class="meta">Browse the catalog and launch a campaign.</div>
<div class="row"><a class="btn sm" href="{{ url_for('services') }}">Explore →</a></div>
</div>
<div class="card">
<h3>Order history</h3>
<div class="meta">Track every boost and its status.</div>
<div class="row"><a class="btn sm ghost" href="{{ url_for('orders') }}">View all</a></div>
</div>
</div>
<div class="section-title">Live delivery</div>
<div class="card" style="padding:22px">
<div id="ticker"><div class="muted center">Loading your boosts…</div></div>
</div>
{% if deposits %}
<div class="section-title">Recent deposits</div>
<table class="list">
<tr><th>Amount</th><th>Status</th></tr>
{% for d in deposits %}
<tr><td>${{ "%.2f"|format(d.amount) }}</td><td><span class="badge {{ d.status }}">{{ d.status }}</span></td></tr>
{% endfor %}
</table>
{% endif %}
{% endblock %}

18
templates/deposit.html Normal file
View File

@@ -0,0 +1,18 @@
{% extends "base.html" %}
{% block title %}Deposit — Supernova{% endblock %}
{% block content %}
<div class="auth-card">
<div class="card">
<h3 style="font-size:1.4rem">Add Bitcoin funds</h3>
<div class="meta">Current balance: <strong style="color:#7cffb0">${{ "%.2f"|format(user.balance) }}</strong>. Deposits credit automatically once the BTC confirms.</div>
<form method="POST" style="margin-top:20px">
<div class="field">
<label>Amount (USD)</label>
<input type="number" name="amount" step="0.01" min="0.50" required placeholder="25.00">
</div>
<button class="btn" type="submit" style="width:100%">⚡ Generate ₿ invoice</button>
</form>
<div class="meta center mt-2">You'll be redirected to a Bitcoin checkout page.</div>
</div>
</div>
{% endblock %}

69
templates/index.html Normal file
View File

@@ -0,0 +1,69 @@
{% extends "base.html" %}
{% block title %}Supernova — Buy Instagram, TikTok & YouTube Followers Cheap | Bitcoin SMM Panel{% endblock %}
{% block content %}
<div class="hero">
<h1>Grow your reach<br>across the galaxy</h1>
<p class="sub">Followers, likes and views for every platform — paid in Bitcoin, delivered to your handle. Pick your world, choose your boost, watch it rise.</p>
<div class="cta">
<a class="btn" href="{{ url_for('services') }}">🌌 Explore services</a>
{% if not user %}<a class="btn ghost" href="{{ url_for('signup') }}">Create account</a>{% endif %}
</div>
</div>
<div class="stats">
<div class="stat"><div class="n">361</div><div class="l">services</div></div>
<div class="stat"><div class="n">18+</div><div class="l">platforms</div></div>
<div class="stat"><div class="n">₿</div><div class="l">Bitcoin payments</div></div>
<div class="stat"><div class="n">100%</div><div class="l">automated</div></div>
</div>
<div class="section-title">Spin the galaxy — choose your world</div>
<div class="orbit-wrap">
<div class="orbit-sun">🌌</div>
<div class="orbit-ring" id="orbit">
{% for name, icon in [("Instagram","📸"),("TikTok","🎵"),("YouTube","▶️"),("X / Twitter","🐦"),("Facebook","👥"),("Spotify","🎧"),("Telegram","✈️"),("Snapchat","👻")] %}
<a class="planet-orb" href="{{ url_for('services') }}" data-i="{{ loop.index0 }}" data-name="{{ name }}">
<span class="po-emoji">{{ icon }}</span>
<span class="po-name">{{ name }}</span>
</a>
{% endfor %}
</div>
</div>
<div class="center muted" style="margin-top:10px">← drag to spin · click a planet to explore →</div>
<section class="seo-block">
<h2>Buy followers, likes & views for every social platform</h2>
<p>Supernova is a <strong>Bitcoin-powered social media marketing panel</strong> — the fastest way to grow your presence on <a href="{{ url_for('services') }}">Instagram</a>, TikTok, YouTube, Facebook, X (Twitter), Spotify, Telegram and more. With <strong>361 services</strong> starting from just <strong>$0.02 per 1,000</strong>, you can buy exactly the engagement you need and watch it land automatically.</p>
<h3>Instagram</h3>
<p>Buy Instagram followers, likes, views, reel views and comments. From lifetime likes to real low-drop followers and country-targeted growth — boost your profile and look established overnight.</p>
<h3>TikTok</h3>
<p>Buy TikTok followers, likes, views, shares and saves. Kickstart the algorithm and push your videos into the For You feed with fast, drip-fed delivery.</p>
<h3>YouTube</h3>
<p>Buy YouTube views, subscribers, likes and watch-time. Grow your channel's authority and signal relevance to YouTube's recommendation engine.</p>
<h3>X (Twitter) & Facebook</h3>
<p>Buy X followers, retweets, likes and impressions — plus Facebook page likes, followers, comments and live-stream viewers.</p>
<h3>Why Supernova</h3>
<ul>
<li><strong>Pay with Bitcoin</strong> — private, no KYC, instant credit.</li>
<li><strong>Fully automated</strong> — order and delivery starts in minutes.</li>
<li><strong>Cheap & scalable</strong> — from a few hundred to millions of units.</li>
<li><strong>Refill & drip-feed</strong> — services with lifetime refill and gradual delivery.</li>
</ul>
<p class="cta-line"><a class="btn" href="{{ url_for('services') }}">Browse all 361 services →</a></p>
</section>
<style>
.seo-block { margin-top: 64px; padding: 8px 0 24px; }
.seo-block h2 { font-size: 1.6rem; font-weight: 800; }
.seo-block h3 { font-size: 1.15rem; margin-top: 26px; }
.seo-block p { color: var(--muted); line-height: 1.7; }
.seo-block a { color: var(--nebula-b); }
.seo-block ul { color: var(--muted); line-height: 1.8; }
.seo-block .cta-line { margin-top: 28px; }
</style>
{% endblock %}

29
templates/order.html Normal file
View File

@@ -0,0 +1,29 @@
{% extends "base.html" %}
{% block title %}Order {{ s.name }} — Supernova{% endblock %}
{% block content %}
<div class="auth-card" style="max-width:560px">
<div class="card">
<h3 style="font-size:1.4rem;margin-bottom:6px">{{ s.name }}</h3>
<div class="meta">Category: {{ s.category }} · rate ${{ "%.2f"|format(s.rate|float) }}/1k · min {{ s.min }} · max {{ "{:,}".format(s.max) }}</div>
<form method="POST" action="{{ url_for('order', service_id=s.service) }}">
<div class="field" style="margin-top:22px">
<label>Target link / username</label>
<input type="text" name="link" placeholder="https://instagram.com/yourhandle" required>
</div>
<div class="slider-wrap">
<label>Quantity</label>
<div class="live-price" id="live-price">$0.00</div>
<input type="range" id="qty" name="quantity" data-service="{{ s.service }}"
min="{{ s.min }}" max="{{ [s.max, 50000]|min }}" step="{{ [1, s.min//10]|max }}">
<div class="meta center" style="margin-top:10px"><span id="qty-val">{{ s.min }}</span> units</div>
</div>
<button class="btn launch" type="submit" style="width:100%;margin-top:14px"><span class="rocket">🚀</span> Launch boost</button>
</form>
<div class="meta center mt-2">Charged from your balance. {% if s.refill %}♻️ Auto-refill included.{% endif %}</div>
</div>
</div>
{% endblock %}

25
templates/orders.html Normal file
View File

@@ -0,0 +1,25 @@
{% extends "base.html" %}
{% block title %}Orders — Supernova{% endblock %}
{% block content %}
<div id="launch-banner">🚀 Boost launched — delivery starting!</div>
<div class="section-title" style="margin-top:36px">Your boosts</div>
{% if orders %}
<table class="list">
<tr><th>Service</th><th>Link</th><th>Qty</th><th>Cost</th><th>Status</th></tr>
{% for o in orders %}
<tr>
<td>{{ o.service_name }}</td>
<td class="muted" style="max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">{{ o.link }}</td>
<td>{{ "{:,}".format(o.quantity) }}</td>
<td>${{ "%.2f"|format(o.cost) }}</td>
<td><span class="badge {{ o.status }}">{{ o.status }}</span></td>
</tr>
{% endfor %}
</table>
{% else %}
<div class="card center" style="padding:40px">
<div style="font-size:2rem">🪐</div>
<div class="muted mt-2">No orders yet. <a href="{{ url_for('services') }}" style="color:var(--nebula-b)">Launch your first boost →</a></div>
</div>
{% endif %}
{% endblock %}

57
templates/services.html Normal file
View File

@@ -0,0 +1,57 @@
{% extends "base.html" %}
{% block title %}Services — Supernova{% endblock %}
{% block content %}
<div class="hero" style="padding:48px 0 24px">
<h1 style="font-size:2.4rem">Services</h1>
<p class="sub">Search the catalog. Every boost is fulfilled automatically.</p>
<div class="field" style="max-width:520px;margin:0 auto">
<input id="search" type="text" placeholder="Search — e.g. Instagram likes, TikTok views…" autocomplete="off">
</div>
</div>
<div id="catalog">
{% for cat, items in cats.items() %}
<section class="cat-block" data-cat="{{ cat|lower }}">
<h2 class="section-title">{{ cat }} <span class="muted" style="font-size:0.9rem">({{ items|length }})</span></h2>
<div class="platform-grid">
{% for s in items %}
<div class="card" data-name="{{ s.name|lower }}">
<h3>{{ s.name }}</h3>
<div class="meta">min {{ s.min }} · max {{ "{:,}".format(s.max) }}</div>
<div class="price">${{ "%.2f"|format(s.rate|float) }} <span class="muted" style="font-size:0.8rem">/ 1k</span></div>
<div class="row">
<span class="meta">{% if s.refill %}♻️ refill{% endif %}{% if s.dripfeed %} 💧 dripfeed{% endif %}{% if not s.refill and not s.dripfeed %}·{% endif %}</span>
<a class="btn sm" href="{{ url_for('order', service_id=s.service) }}">Boost →</a>
</div>
</div>
{% endfor %}
</div>
</section>
{% endfor %}
</div>
<div id="no-results" class="center muted" style="display:none;padding:40px 0">No services match your search.</div>
<script>
(function () {
const search = document.getElementById('search');
const cards = document.querySelectorAll('.card[data-name]');
const blocks = document.querySelectorAll('.cat-block');
const noRes = document.getElementById('no-results');
search.addEventListener('input', () => {
const q = search.value.trim().toLowerCase();
let any = false;
cards.forEach(c => {
const hit = !q || c.dataset.name.includes(q);
c.style.display = hit ? '' : 'none';
if (hit) any = true;
});
blocks.forEach(b => {
const has = Array.from(b.querySelectorAll('.card[data-name]')).some(c => c.style.display !== 'none');
b.style.display = has ? '' : 'none';
});
noRes.style.display = any ? 'none' : '';
});
})();
</script>
{% endblock %}