"use client"; import Link from "next/link"; import { useMemo, useState } from "react"; import { DARKNET_ATLAS, atlasCategoryMatchesQuery, type AtlasCategory, } from "@/lib/darknetAtlas"; function isClearnet(href: string): boolean { if (href.toLowerCase().includes(".onion")) return false; return href.startsWith("https://") || href.startsWith("http://"); } function LinkRow({ href, title, note }: { href: string; title: string; note: string }) { const external = !href.startsWith("/"); const clearnet = isClearnet(href); const body = ( <> {title}
{note}
{clearnet ? clearnet · : null} {href}
> ); if (external) { return ( {body} ); } return ( {body} ); } export default function DarknetAtlasPage() { const [q, setQ] = useState(""); const visible = useMemo( () => DARKNET_ATLAS.filter((c) => atlasCategoryMatchesQuery(c, q)), [q], ); return (reference · taxonomy
Analyst-facing taxonomy for how underground ecosystems get clustered in threat intel — markets, access brokers, leak blogs, whistleblowing rails, opsec boutiques, and rumor boards. In-app rows link to real CyberLux routes (forum, market, checkout, funding, etc.); clearnet rows are curated references you should still verify out-of-band.
{visible.length} / {DARKNET_ATLAS.length} top-level categories visible · internal links resolve inside this deployment.
No sections match that filter.
) : ( visible.map((cat) =>{cat.overview}
{cat.literacy}
{sub.blurb}