-
+
+
+
+
+
+
+
-
+
Post-Appitalism Awaits
-
- Beyond post-capitalism lies post-appitalism—where decentralized applications enable regenerative
- economies, mutual aid networks, and collective flourishing.
+
+ A key part of post-capitalism is post-APPitalism—where decentralized applications dissolve the silos of traditional app models (premised on capitalist value extraction) to enable new technologies for collective flourishing.
-
- Enter the future →
-
+
diff --git a/components/cta-section.tsx b/components/cta-section.tsx
index 38f108a..34f64b6 100644
--- a/components/cta-section.tsx
+++ b/components/cta-section.tsx
@@ -11,7 +11,7 @@ export function CTASection() {
className="text-4xl md:text-5xl font-bold mb-4 text-balance"
style={{ fontFamily: "var(--font-crimson)" }}
>
- Explore the Myco-Economic Future
+ Welcome to the Myco-Economic Future
Dive deeper into regenerative economics and permaculture currencies
diff --git a/components/footer.tsx b/components/footer.tsx
index 35f9b49..4e17755 100644
--- a/components/footer.tsx
+++ b/components/footer.tsx
@@ -3,31 +3,34 @@ import { Sprout } from "lucide-react"
export function Footer() {
return (
-
+
-
+
MycoFi
-
+
Regenerative Economics for a Living Future
-
+
Exploring regenerative economic systems inspired by mycelial networks and nature's resource allocation
algorithms.
-
Resources
+
Resources
The Book
@@ -36,7 +39,7 @@ export function Footer() {
Substack Article
@@ -45,7 +48,7 @@ export function Footer() {
Shop
@@ -54,13 +57,13 @@ export function Footer() {
-
Connect
+
Connect
All Links
@@ -69,7 +72,7 @@ export function Footer() {
-
+
© {new Date().getFullYear()} MycoFi. Building regenerative futures together.
diff --git a/components/header.tsx b/components/header.tsx
index ff83f37..36cd0a2 100644
--- a/components/header.tsx
+++ b/components/header.tsx
@@ -1,11 +1,19 @@
import Link from "next/link"
import { Button } from "@/components/ui/button"
+import Image from "next/image"
export function Header() {
return (
-
-
+
+
+
MycoFi
diff --git a/components/hero-section.tsx b/components/hero-section.tsx
index 9d3d443..e12999a 100644
--- a/components/hero-section.tsx
+++ b/components/hero-section.tsx
@@ -15,33 +15,36 @@ export function HeroSection() {
-
-
- Exploring MycoFi : Mycelial Design Patterns for Web3 & Beyond
-
+
+ {/* Text content */}
+
+
+ Exploring MycoFi : Mycelial Design Patterns for Web3 & Beyond
+
-
- Exploring economic systems inspired by mycelial networks—where cooperation, redistribution, and mutual aid
- create resilient, regenerative communities.
-
+
+ Exploring economic systems inspired by mycelial networks—where cooperation, redistribution, and mutual aid
+ create resilient, regenerative communities.
+
-
-
-
- Read the Book
-
-
-
-
- Learn More
-
-
+
+
+
+ Read the Book
+
+
+
+
+ Learn More
+
+
+
diff --git a/components/hyphal-canvas.tsx b/components/hyphal-canvas.tsx
index 2a9b5e1..77d68f5 100644
--- a/components/hyphal-canvas.tsx
+++ b/components/hyphal-canvas.tsx
@@ -16,6 +16,8 @@ interface HyphalNode {
connections: HyphalNode[]
opacity: number
isPersistent: boolean
+ createdAt: number
+ connectionDensity: number
}
export function HyphalCanvas() {
@@ -24,6 +26,17 @@ export function HyphalCanvas() {
const mouseRef = useRef({ x: 0, y: 0, isMoving: false })
const animationRef = useRef
()
+ const getDensityColor = (density: number, opacity: number): string => {
+ // Map density (0-10+) to hue (0-300 degrees)
+ // Low density = red/orange (0-60), high density = blue/violet (240-300)
+ const normalizedDensity = Math.min(density / 10, 1)
+ const hue = normalizedDensity * 300
+ // Muted colors: lower saturation (40-50%) and medium lightness (50-60%)
+ const saturation = 40 + normalizedDensity * 10
+ const lightness = 50 + normalizedDensity * 10
+ return `hsla(${hue}, ${saturation}%, ${lightness}%, ${opacity})`
+ }
+
useEffect(() => {
const canvas = canvasRef.current
if (!canvas) return
@@ -65,6 +78,8 @@ export function HyphalCanvas() {
connections: [],
opacity: 1,
isPersistent: false,
+ createdAt: Date.now(),
+ connectionDensity: 0,
}
}
@@ -81,10 +96,8 @@ export function HyphalCanvas() {
const createMeshConnections = () => {
nodesRef.current.forEach((node, i) => {
const maturityFactor = node.age / node.maxAge
- // Reduced max connections from 6/3 to 4/2
const maxConnections = node.isPersistent ? 7 : maturityFactor > 0.6 ? 4 : 2
const connectionDistance = maturityFactor > 0.6 ? 80 : 50
- // Increased probability threshold to reduce connections
const connectionProbability = maturityFactor > 0.6 ? 0.97 : 0.99
if (node.age < 20 || node.connections.length >= maxConnections) return
@@ -119,12 +132,18 @@ export function HyphalCanvas() {
x2: number,
y2: number,
opacity: number,
+ color: string,
+ fragmentationFactor: number,
) => {
const dx = x2 - x1
const dy = y2 - y1
const distance = Math.sqrt(dx * dx + dy * dy)
- // For short distances, draw straight line
+ if (fragmentationFactor > 0.5 && Math.random() > fragmentationFactor) {
+ // Skip drawing some connections to create fragmentation effect
+ return
+ }
+
if (distance < 30) {
ctx.beginPath()
ctx.moveTo(x1, y1)
@@ -133,7 +152,6 @@ export function HyphalCanvas() {
return
}
- // Create branching path with 1-2 intermediate points
const numBranches = distance > 60 ? 2 : 1
const points = [{ x: x1, y: y1 }]
@@ -141,7 +159,6 @@ export function HyphalCanvas() {
const t = (i + 1) / (numBranches + 1)
const midX = x1 + dx * t
const midY = y1 + dy * t
- // Add perpendicular offset for organic branching
const perpX = -dy / distance
const perpY = dx / distance
const offset = (Math.random() - 0.5) * distance * 0.3
@@ -153,7 +170,6 @@ export function HyphalCanvas() {
points.push({ x: x2, y: y2 })
- // Draw smooth curve through points
ctx.beginPath()
ctx.moveTo(points[0].x, points[0].y)
@@ -171,6 +187,8 @@ export function HyphalCanvas() {
ctx.fillStyle = "rgba(250, 248, 245, 0.08)"
ctx.fillRect(0, 0, canvas.width, canvas.height)
+ const currentTime = Date.now()
+
if (mouseRef.current.isMoving && Math.random() > 0.65) {
const burstCount = Math.floor(Math.random() * 2) + 1
const nearbyPersistent = findNearbyPersistentNodes(mouseRef.current.x, mouseRef.current.y, 100)
@@ -196,9 +214,17 @@ export function HyphalCanvas() {
createMeshConnections()
}
+ nodesRef.current.forEach((node) => {
+ node.connectionDensity = node.connections.length
+ })
+
nodesRef.current = nodesRef.current.filter((node) => {
node.age++
+ const timeSinceCreation = currentTime - node.createdAt
+ const fadeOutDuration = 30000 // 30 seconds
+ const fadeOutFactor = Math.min(timeSinceCreation / fadeOutDuration, 1)
+
if (!node.isPersistent) {
node.angle += node.angleChangeRate
if (Math.random() > 0.92) {
@@ -221,14 +247,18 @@ export function HyphalCanvas() {
const ageFactor = node.age / node.maxAge
if (node.isPersistent) {
- node.opacity = 0.15
+ node.opacity = Math.max(0, 0.15 * (1 - fadeOutFactor))
} else if (ageFactor >= 1) {
node.isPersistent = true
- node.opacity = 0.15
+ node.opacity = 0.15 * (1 - fadeOutFactor)
node.vx = 0
node.vy = 0
} else {
- node.opacity = Math.max(0.15, 1 - ageFactor * 0.85)
+ node.opacity = Math.max(0, (1 - ageFactor * 0.85) * (1 - fadeOutFactor * 0.5))
+ }
+
+ if (fadeOutFactor >= 1) {
+ return false
}
if (
@@ -244,12 +274,14 @@ export function HyphalCanvas() {
}
if (node.parent) {
- const gradient = ctx.createLinearGradient(node.parent.x, node.parent.y, node.x, node.y)
+ const avgDensity = (node.connectionDensity + node.parent.connectionDensity) / 2
const parentOpacity = node.parent.opacity * 0.5
const nodeOpacity = node.opacity * 0.5
- gradient.addColorStop(0, `rgba(120, 120, 120, ${parentOpacity})`)
- gradient.addColorStop(0.5, `rgba(120, 120, 120, ${(parentOpacity + nodeOpacity) / 2})`)
- gradient.addColorStop(1, `rgba(120, 120, 120, ${nodeOpacity})`)
+
+ const gradient = ctx.createLinearGradient(node.parent.x, node.parent.y, node.x, node.y)
+ gradient.addColorStop(0, getDensityColor(node.parent.connectionDensity, parentOpacity))
+ gradient.addColorStop(0.5, getDensityColor(avgDensity, (parentOpacity + nodeOpacity) / 2))
+ gradient.addColorStop(1, getDensityColor(node.connectionDensity, nodeOpacity))
ctx.strokeStyle = gradient
ctx.lineWidth = 2.5 + Math.random() * 1.5
@@ -262,15 +294,31 @@ export function HyphalCanvas() {
node.connections.forEach((connected) => {
if (nodesRef.current.includes(connected)) {
+ const avgDensity = (node.connectionDensity + connected.connectionDensity) / 2
const avgOpacity = ((node.opacity + connected.opacity) / 2) * 0.35
- ctx.strokeStyle = `rgba(120, 120, 120, ${avgOpacity})`
+
+ // Calculate fragmentation based on time
+ const nodeFragmentation = Math.min((currentTime - node.createdAt) / fadeOutDuration, 1)
+ const connectedFragmentation = Math.min((currentTime - connected.createdAt) / fadeOutDuration, 1)
+ const avgFragmentation = (nodeFragmentation + connectedFragmentation) / 2
+
+ ctx.strokeStyle = getDensityColor(avgDensity, avgOpacity)
ctx.lineWidth = 1.5
ctx.lineCap = "round"
- drawBranchingConnection(ctx, node.x, node.y, connected.x, connected.y, avgOpacity)
+ drawBranchingConnection(
+ ctx,
+ node.x,
+ node.y,
+ connected.x,
+ connected.y,
+ avgOpacity,
+ ctx.strokeStyle,
+ avgFragmentation,
+ )
}
})
- ctx.fillStyle = `rgba(120, 120, 120, ${node.opacity * 0.7})`
+ ctx.fillStyle = getDensityColor(node.connectionDensity, node.opacity * 0.7)
ctx.beginPath()
ctx.arc(node.x, node.y, 2.5, 0, Math.PI * 2)
ctx.fill()
diff --git a/components/image-gallery.tsx b/components/image-gallery.tsx
index c4337c4..6330e4c 100644
--- a/components/image-gallery.tsx
+++ b/components/image-gallery.tsx
@@ -1,59 +1,66 @@
-import Image from "next/image"
+import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
+import { Button } from "@/components/ui/button"
+import { ExternalLink } from "lucide-react"
export function ImageGallery() {
return (
-
The Mycelial Vision
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
The Mycelial Vision
+
+ Exploring the intersection of natural systems, regenerative economics, and decentralized coordination
+
+
+
+
+
+ Compost Capitalism
+
+
+
+ Just as mycelium breaks down dead matter to create fertile soil, we can transform dying economic structures into nourishment for new regenerative systems. Composting capitalism invokes the cycles of decay and renewal inherent in natural ecosystems, recognizing that institutional senescence and the end of extractive systems creates the conditions for regenerative abundance.
+
+
+
+
+
+
+
+
+ Psilocybernetics
+
+
+
+ Psilocybernetics explores how mycelial wisdom and cybernetic systems thinking converge to create new models of collective coordination. Like mycelial networks that process distributed information, we can design systems that enhance collective intelligence and distributed decision-making with new forms of economy, democracy, and technology.
+
+
+
+
+
diff --git a/components/mycofi-intro.tsx b/components/mycofi-intro.tsx
index 14f5ab4..2f2464f 100644
--- a/components/mycofi-intro.tsx
+++ b/components/mycofi-intro.tsx
@@ -23,7 +23,7 @@ export function MycoFiIntro() {
-
+
@@ -37,20 +37,20 @@ export function MycoFiIntro() {
>
What is MycoFi?
-
- MycoFi (Mycelial Finance) is an exploration of{" "}
- mycoeconomics —economic systems inspired by the
- intelligence of fungal networks. Just as mycelium redistributes nutrients through underground
- connections, MycoFi envisions decentralized financial systems built on cooperation, mutual aid, and
- regenerative principles.
-
-
- By emulating nature's evolutionary resource allocation algorithms, we can design Web3 protocols and
- economic structures that prioritize collective wellbeing over extractive growth—moving from currency
- monocultures to diverse, resilient permaculture currencies.
-
+
+ MycoFi (Mycelial Finance) is an exploration of{" "}
+ mycoeconomics —economic systems inspired by the intelligence
+ of fungal networks. Just as mycelium redistributes nutrients through underground connections, MycoFi
+ envisions decentralized financial systems built on cooperation, mutual aid, and regenerative principles.
+
+
+ By emulating nature's evolutionary resource allocation algorithms, we can design Web3 protocols and
+ economic structures that prioritize collective wellbeing over extractive growth—moving from currency
+ monocultures to diverse, resilient permaculture currencies.
+
+ {/* */}
diff --git a/public/images/exploring-mycofi-cover.png b/public/images/exploring-mycofi-cover.png
new file mode 100644
index 0000000..4051e82
Binary files /dev/null and b/public/images/exploring-mycofi-cover.png differ
diff --git a/public/mycofi-logo.jpg b/public/mycofi-logo.jpg
new file mode 100644
index 0000000..21961b7
Binary files /dev/null and b/public/mycofi-logo.jpg differ