Files
dark-lord/app/hidden-wiki/page.tsx
drjones 78a071ba02 Harden onion boot flow and deepen site surfaces
Add persistent onion key backup and restore, improve startup resilience, and flesh out the major site verticals with richer navigation, search coverage, and operator documentation.

Made-with: Cursor
2026-04-07 21:35:52 -07:00

274 lines
9.9 KiB
TypeScript

"use client";
import Link from "next/link";
import { PLACEHOLDER_ONION_URL } from "@/lib/placeholderOnion";
/** @deprecated use PLACEHOLDER_ONION_URL */
export const HIDDEN_WIKI_PLACEHOLDER_ONION = PLACEHOLDER_ONION_URL;
type WikiItem = {
title: string;
note: string;
href: string;
external: boolean;
};
const ENTRIES: { cat: string; items: WikiItem[] }[] = [
{
cat: "Reference",
items: [
{
title: "Tor Project (documentation)",
note: "Official browser and onion-service documentation (clearnet).",
href: "https://www.torproject.org/",
external: true,
},
{
title: "CyberLux primary hub",
note: "Main storefront — verify hostname against signed mirror list.",
href: "/",
external: false,
},
{
title: "Darknet Atlas (taxonomy)",
note: "Intel-style map of underground verticals — swap in vetted onions after PGP cross-check.",
href: "/darknet-atlas",
external: false,
},
{
title: "Account & dashboard",
note: "Client-side vault unlock; dashboard aggregates forum, exchange, and barter handles.",
href: "/sign-in",
external: false,
},
{
title: "Account on every hidden mirror",
note: "Each .onion hostname has its own storage — register on each host or import a portable bundle.",
href: "/account/hidden-services",
external: false,
},
{
title: "Void crawler (internal search)",
note: "Ring-local crawler — indexes signed CyberLux routes only; no outbound onions.",
href: "/search",
external: false,
},
],
},
{
cat: "Directories & indexes",
items: [
{
title: "OnionDir (mirror slot 1)",
note: "Template row — paste a signed directory .onion after you verify the key.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
{
title: "Glass index (mirror slot 2)",
note: "Awaiting mirror hostname.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
{
title: "Card-file aggregator (slot 3)",
note: "Awaiting mirror hostname.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
{
title: "Fresh mirror list (slot 4)",
note: "Awaiting mirror hostname.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
],
},
{
cat: "Markets & trading (unverified)",
items: [
{
title: "Market slot A",
note: "Replace with your verified link + PGP proof.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
{
title: "Market slot B",
note: "Replace with your verified link + PGP proof.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
{
title: "Market slot C",
note: "Replace with your verified link + PGP proof.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
],
},
{
cat: "Comms & privacy",
items: [
{
title: "Secure chat relay (slot 1)",
note: "Self-hosted bridge — verify certs when you swap URL.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
{
title: "VPN / review matrix (slot 2)",
note: "Crowd-sourced; assume bias.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
{
title: "Encrypted mail drop (slot 3)",
note: "Hostname pending operator upload.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
],
},
{
cat: "Hosting & infrastructure",
items: [
{
title: "Bulletproof-style host (slot 1)",
note: "Rumor link — due diligence on you; hosting laws vary by territory.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
{
title: "Collocation / VPS gossip (slot 2)",
note: "Hostname pending operator upload.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
],
},
{
cat: "Forums & social",
items: [
{
title: "Forum mirror (slot 1)",
note: "Hostname pending operator upload.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
{
title: "Chan / imageboard mirror (slot 2)",
note: "Hostname pending operator upload.",
href: PLACEHOLDER_ONION_URL,
external: true,
},
],
},
{
cat: "This deployment (internal)",
items: [
{ title: "Relay grid", note: "Themed entry nodes — same wallet session as hub.", href: "/syndicate", external: false },
{ title: "Sign up (local)", note: "Create a handle on this hostname for forum, listings, and dashboard.", href: "/sign-up", external: false },
{ title: "Void Aggregate (forums)", note: "Ringed boards — local session data.", href: "/forum", external: false },
{ title: "Hub chatter archive", note: "Paged index of threads about the main storefront.", href: "/chatter", external: false },
{ title: "Classifieds", note: "WTS / WTB — same deployment.", href: "/exchange", external: false },
{ title: "Ash Pit (barter)", note: "Have / want swap board — dark trading floor.", href: "/barter", external: false },
{ title: "Link garden", note: "Alternate directory layout.", href: "/links", external: false },
{ title: "Checkout", note: "BTC settlement & balance.", href: "/checkout", external: false },
],
},
];
export default function HiddenWikiPage() {
return (
<div className="min-h-screen bg-[#080a0e] text-[#c5d0e0] selection:bg-[#3d5a80] selection:text-white">
<div
className="pointer-events-none fixed inset-0 z-0 opacity-[0.12]"
style={{
backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='80' height='80' filter='url(%23n)' opacity='0.15'/%3E%3C/svg%3E")`,
}}
/>
<div className="pointer-events-none fixed inset-0 z-0 bg-[radial-gradient(ellipse_at_50%_0%,rgba(61,90,128,0.2),transparent_50%)]" />
<header className="relative z-10 border-b border-[#2a3444] bg-[#0c1018]/95 px-4 py-6 backdrop-blur-sm">
<div className="mx-auto max-w-3xl">
<p className="font-mono text-[10px] uppercase tracking-[0.4em] text-[#5b8def]/80">mirror wiki layer</p>
<h1 className="mt-2 font-serif text-3xl font-bold tracking-tight text-[#e2e8f0] md:text-4xl">
Scrapbook <span className="font-normal italic text-[#94a3b8]">directory</span>
</h1>
<p className="mt-3 border-l-4 border-[#e07a5f]/80 pl-4 text-sm leading-relaxed text-[#94a8b8]">
<strong className="text-[#e2e8f0]">Unvetted links.</strong> Anyone can paste an .onion string that does not
mean it is safe, online, or honest. Verify hostnames against signed posts from sources you already trust.
</p>
<p className="mt-3 font-mono text-[11px] text-[#6b7c91]">
External rows ship with a boilerplate{" "}
<code className="rounded bg-[#1a2332] px-1.5 py-0.5 text-[#7eb8ff]">111111111111111111111.onion</code> stub until an
operator publishes a signed replacement list.
</p>
<nav className="mt-5 flex flex-wrap gap-2 font-mono text-xs">
<Link
href="/"
className="border border-[#3d5a80]/60 bg-[#141c2c] px-3 py-1.5 text-[#7eb8ff] hover:border-[#5b8def] hover:bg-[#1a2740]"
>
Hub
</Link>
<Link
href="/sign-up"
className="border border-[#2a4a32]/60 bg-[#0f1a14] px-3 py-1.5 text-[#7ef9b9] hover:border-[#3ddf8c]/50"
>
Sign up
</Link>
<Link
href="/account/hidden-services"
className="border border-[#2a3444] bg-[#0f141c] px-3 py-1.5 text-[#94a8b8] hover:border-[#3d5a80]/50"
>
All mirrors
</Link>
<Link
href="/syndicate"
className="border border-[#2a3444] bg-[#0f141c] px-3 py-1.5 text-[#94a8b8] hover:border-[#3d5a80]/50"
>
Relay grid
</Link>
</nav>
</div>
</header>
<main className="relative z-10 mx-auto max-w-3xl px-4 pb-20 pt-10">
{ENTRIES.map((section) => (
<section key={section.cat} className="mb-12">
<h2 className="font-mono text-xs font-bold uppercase tracking-widest text-[#e07a5f]/90">{section.cat}</h2>
<ul className="mt-4 space-y-4 border-t border-[#2a3444] pt-4">
{section.items.map((item) => (
<li key={`${section.cat}-${item.title}`} className="border-b border-[#2a3444]/80 pb-4 last:border-0">
{item.external ? (
<a
href={item.href}
className="font-mono text-sm font-semibold text-[#7eb8ff] underline decoration-[#5b8def]/40 underline-offset-4 hover:decoration-[#7eb8ff]"
rel="noopener noreferrer"
>
{item.title}
</a>
) : (
<Link
href={item.href}
className="font-mono text-sm font-semibold text-[#7eb8ff] underline decoration-[#5b8def]/40 underline-offset-4 hover:decoration-[#7eb8ff]"
>
{item.title}
</Link>
)}
<p className="mt-1 font-serif text-sm text-[#94a8b8]">{item.note}</p>
{item.external ? (
<p className="mt-1.5 font-mono text-xs break-all text-[#6b7c91]">{item.href}</p>
) : null}
</li>
))}
</ul>
</section>
))}
</main>
</div>
);
}