"use client" import { useState } from "react" import { useSectionReveal } from "@/hooks/use-section-reveal" import { ExternalLink } from "lucide-react" interface NetworkNode { name: string domain: string description: string x: number y: number primary?: boolean } const NODES: NetworkNode[] = [ { name: "MycoStack", domain: "mycostack.xyz", description: "Technology-augmented commons", x: 50, y: 45, primary: true, }, { name: "Commons Stack", domain: "commonsstack.org", description: "Fund and govern the commons — primary root", x: 50, y: 8, }, { name: "P2P Foundation", domain: "wiki.p2pfoundation.net", description: "25,000 pages of commons knowledge", x: 50, y: 95, }, { name: "MycoFi", domain: "mycofi.earth", description: "Mycoeconomics & regenerative currencies", x: 20, y: 18, }, { name: "CoFi", domain: "cofi.earth", description: "Community finance — coordinating shared resources", x: 80, y: 18, }, { name: "NoFi", domain: "nofi.lol", description: "Post-finance — beyond the need for money", x: 92, y: 8, }, { name: "rFunds", domain: "rfunds.online", description: "Threshold-Based Flow Funding research", x: 15, y: 30, }, { name: "rStack", domain: "rstack.org", description: "Open source community coordination infrastructure", x: 78, y: 55, }, { name: "Compost Capitalism", domain: "compostcapitalism.xyz", description: "Decomposing extractive systems", x: 12, y: 55, }, { name: "The Undernet", domain: "undernet.earth", description: "Community-owned infrastructure", x: 88, y: 35, }, { name: "Post-Appitalism", domain: "post-appitalist.app", description: "Tools beyond extractive platforms", x: 15, y: 78, }, { name: "rSpace", domain: "yourspace.online", description: "Community-owned digital spaces", x: 65, y: 78, }, { name: "Psilo-Cyber", domain: "psilo-cyber.net", description: "Institutional neuroplasticity & adaptive systems", x: 88, y: 70, }, { name: "Trippin Balls", domain: "trippinballs.lol", description: "Expand your perspective", x: 38, y: 92, }, ] const CONNECTIONS: [string, string][] = [ ["mycostack.xyz", "commonsstack.org"], ["mycostack.xyz", "wiki.p2pfoundation.net"], ["mycostack.xyz", "mycofi.earth"], ["mycostack.xyz", "undernet.earth"], ["mycostack.xyz", "compostcapitalism.xyz"], ["mycostack.xyz", "yourspace.online"], ["mycostack.xyz", "rstack.org"], ["mycostack.xyz", "cofi.earth"], ["commonsstack.org", "wiki.p2pfoundation.net"], ["commonsstack.org", "mycofi.earth"], ["commonsstack.org", "rfunds.online"], ["commonsstack.org", "cofi.earth"], ["rfunds.online", "mycofi.earth"], ["cofi.earth", "mycofi.earth"], ["cofi.earth", "nofi.lol"], ["nofi.lol", "mycofi.earth"], ["rstack.org", "yourspace.online"], ["rstack.org", "undernet.earth"], ["wiki.p2pfoundation.net", "post-appitalist.app"], ["undernet.earth", "psilo-cyber.net"], ["compostcapitalism.xyz", "post-appitalist.app"], ["post-appitalist.app", "yourspace.online"], ["yourspace.online", "trippinballs.lol"], ["psilo-cyber.net", "rstack.org"], ] function getNode(domain: string) { return NODES.find((n) => n.domain === domain) } export function NoFiSection() { const sectionRef = useSectionReveal() const [hovered, setHovered] = useState(null) const isConnected = (domain: string) => { if (!hovered) return false return CONNECTIONS.some( ([a, b]) => (a === hovered && b === domain) || (b === hovered && a === domain) ) } const getLineOpacity = (a: string, b: string) => { if (!hovered) return 0.15 if ( (a === hovered || b === hovered) && (isConnected(a) || isConnected(b) || a === hovered || b === hovered) ) return 0.5 return 0.06 } return (
{/* Ecosystem header */}

The Ecosystem

The MycoStack doesn’t grow alone. It interweaves with parallel movements rethinking value, finance, coordination, and knowledge from the ground up. Each ecosystem reinforces the others — the way mycorrhizal networks link distinct species into shared resilience.

{/* Row 1: Root ecosystems */}

Root Systems

Commons Stack

The primary root. Token engineering, augmented bonding curves, conviction voting, and the Trusted Seed community — the tools and culture from which the MycoStack grows.

P2P Foundation

25,000 pages of commons knowledge. Commons-based peer production, the partner state, cosmo-localism — the theoretical bedrock and the frontier ahead.

{/* Row 2: Economic ecosystems */}

Economic Ecosystems

MycoFi

Mycelial finance — currencies that route value like fungi route nutrients. Sensing scarcity, bridging gaps, feeding the weak to strengthen the whole. Economics as ecology.

CoFi

Community finance — the practical layer where communities coordinate shared resources. The bridge between ReFi’s ideals and MycoFi’s living systems. Cooperative finance for the commons.

TradFi → DeFi → ReFi →
CoFi
→ MycoFi → NoFi
{/* Row 3: Cultural & infrastructure ecosystems */}

Culture & Infrastructure

Compost Capitalism

Decomposing extractive systems into nutrients for regeneration. The old economy isn’t destroyed — it’s composted into something that can sustain life.

The Undernet

Community-owned infrastructure. Self-provisioned servers, encrypted mesh networks, open protocols — the network beneath the network.

{/* Institutional Neuroplasticity */}

Institutional Neuroplasticity

The MycoStack doesn’t just build new institutions — it makes institutions capable of continuous adaptation. Structures that rewire themselves in response to changing conditions. Governance that evolves through use. Protocols that strengthen the pathways that work and prune those that don’t.

Dynamic Adaptivity

Rigid institutions fail because they can’t adapt. The MycoStack enables dynamic adaptivity — institutions that sense, respond, and reorganize like living systems. Not static bureaucracies but adaptive organisms.

“None of us are as resilient as all of us. The ecosystem is the unit of survival.”

{/* Network Map */}

The Network of Networks

Every node strengthens the whole. Every connection multiplies possibility.

{/* Desktop: SVG network map */}
{/* Connection lines */} {CONNECTIONS.map(([a, b]) => { const nodeA = getNode(a) const nodeB = getNode(b) if (!nodeA || !nodeB) return null return ( ) })} {/* Node cards */} {NODES.map((node) => { const isActive = hovered === node.domain const connected = isConnected(node.domain) const dimmed = hovered && !isActive && !connected return ( setHovered(node.domain)} onMouseLeave={() => setHovered(null)} >
{node.name}
{node.domain}
{isActive && (
{node.description}
)}
) })}
{/* Mobile: Simple card list */}
) }