"use client"; import { useState } from "react"; import Navbar from "@/components/Navbar"; const NODES = [ { id: "n1", name: "Void Exchange", onion: "voidexxxxx…onion", category: "Market", status: "up", uptime: "99.1%", last: "12s ago", guard: true }, { id: "n2", name: "Phantom Library", onion: "phantomll…onion", category: "Wiki", status: "up", uptime: "97.4%", last: "2m ago", guard: false }, { id: "n3", name: "Ghost Relay #7", onion: "ghostrly7…onion", category: "Relay", status: "up", uptime: "99.8%", last: "5s ago", guard: true }, { id: "n4", name: "Ember Forum", onion: "emberfrum…onion", category: "Forum", status: "down", uptime: "81.2%", last: "4h ago", guard: false }, { id: "n5", name: "Cipher Drop", onion: "ciphdrpxx…onion", category: "Drop", status: "up", uptime: "95.5%", last: "30s ago", guard: false }, { id: "n6", name: "Zero Wiki", onion: "zerowikxx…onion", category: "Wiki", status: "degraded", uptime: "91.0%", last: "8m ago", guard: true }, { id: "n7", name: "Dark Market", onion: "drkmarket…onion", category: "Market", status: "up", uptime: "98.3%", last: "18s ago", guard: true }, { id: "n8", name: "Nexus Gate", onion: "nexusgte…onion", category: "Relay", status: "up", uptime: "99.9%", last: "2s ago", guard: true }, ]; const STATUS_COLORS: Record = { up: "text-neon-green bg-neon-green/10 border-neon-green/30", down: "text-red-400 bg-red-500/10 border-red-500/30", degraded: "text-yellow-400 bg-yellow-500/10 border-yellow-500/30", }; const STATUS_DOT: Record = { up: "bg-neon-green", down: "bg-red-500", degraded: "bg-yellow-400", }; const CATS = ["All", "Market", "Wiki", "Forum", "Relay", "Drop"]; export default function NexusPage() { const [cat, setCat] = useState("All"); const [search, setSearch] = useState(""); const filtered = NODES.filter((n) => { const matchCat = cat === "All" || n.category === cat; const matchSearch = !search || n.name.toLowerCase().includes(search.toLowerCase()) || n.onion.includes(search.toLowerCase()); return matchCat && matchSearch; }); const up = NODES.filter((n) => n.status === "up").length; const down = NODES.filter((n) => n.status === "down").length; const degraded = NODES.filter((n) => n.status === "degraded").length; return ( <>

nexus · hidden service network tracker

THE NEXUS

Real-time monitoring of trusted hidden services across the Tor network. Submit your node to join the monitored ring.

{/* Status overview */}
{[ { label: "Online", count: up, color: "neon-green" }, { label: "Degraded", count: degraded, color: "yellow-400" }, { label: "Offline", count: down, color: "red-400" }, ].map((s) => (

{s.count}

{s.label}

))}
{/* Filters */}
setSearch(e.target.value)} />
{CATS.map((c) => ( ))}
{/* Node table */}
{["Node", "Category", "Onion", "Status", "Uptime", "Last seen", "Guard"].map((h) => ( ))} {filtered.map((node, i) => ( ))}
{h}
{node.name} {node.category} {node.onion} {node.status} {node.uptime} {node.last} {node.guard ? : }
{/* Submit */}

Submit your node

Add your hidden service to the Nexus monitoring ring. Requires a signed verification message.

); }