1 Commits

Author SHA1 Message Date
Emre
4c30524504 new cloud page 2025-10-23 13:07:24 +03:00
24 changed files with 452 additions and 492 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

View File

@@ -214,7 +214,7 @@
</filter> </filter>
<radialGradient id="b" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" <radialGradient id="b" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0 727 -642 0 184 1)"> gradientTransform="matrix(0 727 -642 0 184 1)">
<stop stop-color="#FFFFFF" /> <stop stop-color="#FAFAFA" />
<stop offset="1" stop-color="#E6E6E6" /> <stop offset="1" stop-color="#E6E6E6" />
</radialGradient> </radialGradient>
<radialGradient id="c" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" <radialGradient id="c" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse"

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

View File

@@ -10,8 +10,8 @@ export function Footer() {
<div className="flex items-center text-gray-900"> <div className="flex items-center text-gray-900">
<img src="/src/images/logomark.svg" alt="Mycelium Logomark" className="h-20 w-20 flex-none" /> <img src="/src/images/logomark.svg" alt="Mycelium Logomark" className="h-20 w-20 flex-none" />
<div className="ml-4"> <div className="ml-4">
<p className="text-base font-semibold">Mycelium</p> <p className="text-base font-semibold">Project Mycelium</p>
<p className="mt-1 text-sm">Unleash the Power of Decentralized Networks</p> <p className="mt-1 text-sm">Unleash the Power of Decentralization</p>
</div> </div>
</div> </div>
<nav className="mt-10 flex gap-8"> <nav className="mt-10 flex gap-8">

View File

@@ -4,7 +4,7 @@ import { Footer } from './Footer'
export function Layout() { export function Layout() {
return ( return (
<div className="bg-white antialiased" style={{ fontFamily: 'var(--font-inter)' }}> <div className="bg-gray-50 antialiased" style={{ fontFamily: 'var(--font-inter)' }}>
<Header /> <Header />
<main> <main>
<Outlet /> <Outlet />

BIN
src/images/desktop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

View File

@@ -214,7 +214,7 @@
</filter> </filter>
<radialGradient id="b" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" <radialGradient id="b" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0 727 -642 0 184 1)"> gradientTransform="matrix(0 727 -642 0 184 1)">
<stop stop-color="#FFFFFF" /> <stop stop-color="#FAFAFA" />
<stop offset="1" stop-color="#E6E6E6" /> <stop offset="1" stop-color="#E6E6E6" />
</radialGradient> </radialGradient>
<radialGradient id="c" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" <radialGradient id="c" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse"

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -48,7 +48,7 @@ export function GallerySection() {
const prev = () => setActive((i) => wrap(0, galleryItems.length, i - 1)) const prev = () => setActive((i) => wrap(0, galleryItems.length, i - 1))
return ( return (
<div className="bg-white"> <div className="bg-[#FAFAFA]">
<div className="relative isolate pt-8 pb-0 text-center w-full"> <div className="relative isolate pt-8 pb-0 text-center w-full">
<FadeIn transition={{ duration: 0.8, delay: 0.1 }}> <FadeIn transition={{ duration: 0.8, delay: 0.1 }}>
<div className="mx-auto max-w-5xl lg:mt-12"> <div className="mx-auto max-w-5xl lg:mt-12">

View File

@@ -1,35 +1,35 @@
import { motion } from 'framer-motion'
import { Container } from '../../components/Container' import { Container } from '../../components/Container'
import { Button } from '../../components/Button' import { Button } from '../../components/Button'
import { CircleBackground } from '../../components/CircleBackground'
export function CloudCTA() { export function CloudCTA() {
return ( return (
<section className="relative bg-white py-20 lg:py-32 overflow-hidden"> <section className="relative overflow-hidden py-24 lg:py-32">
<CircleBackground color="cyan" className="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" />
<Container className="relative"> <Container className="relative">
<motion.div <div className="relative mx-auto max-w-5xl overflow-hidden rounded-3xl border border-gray-200/60 bg-white/90 px-10 py-16 text-center shadow-[0_30px_120px_-70px_rgba(6,182,212,0.65)] backdrop-blur lg:px-16 lg:py-20">
initial={{ opacity: 0, y: 20 }} <div className="max-w-3xl mx-auto">
whileInView={{ opacity: 1, y: 0 }} <p className="text-sm font-semibold uppercase tracking-[0.3em] text-cyan-500">
viewport={{ once: true }} Ready Today
transition={{ duration: 0.8 }}
className="mx-auto max-w-3xl text-center"
>
<h2 className="text-3xl lg:text-5xl font-medium tracking-tight text-gray-900">
Ready to Transform Your Kubernetes Experience?
</h2>
<p className="mt-6 text-lg lg:text-xl text-gray-600">
Join thousands of developers and DevOps engineers who trust Mycelium Cloud for their production workloads.
</p> </p>
<div className="mt-10 flex flex-wrap gap-4 justify-center"> <h2 className="mt-6 text-3xl font-semibold tracking-tight text-gray-900 lg:text-5xl">
<Button to="/download" variant="solid" color="cyan"> Join thousands of developers and DevOps engineers who trust Mycelium Cloud for their production workloads.
Start Your Free Trial </h2>
</Button> <p className="mt-6 text-lg text-gray-600">
<Button to="https://manual.grid.tf" variant="outline" color="gray"> Revolutionary Kubernetes automation, deterministic compute, and quantum-safe storagedelivered as a turnkey platform so your team can deploy, scale, and operate cloud-native applications with confidence.
Read Documentation </p>
<div className="mt-10 flex justify-center">
<Button
to="https://myceliumcloud.tf"
as="a"
variant="solid"
color="cyan"
target="_blank"
rel="noreferrer"
>
Start Deploying
</Button> </Button>
</div> </div>
</motion.div> </div>
</div>
</Container> </Container>
</section> </section>
) )

View File

@@ -1,65 +1,122 @@
import { motion } from 'framer-motion' import { useId } from 'react'
import { Globe } from '../../components/ui/Globe'
import { CountUpNumber } from '../../components/CountUpNumber' import { Button } from '../../components/Button'
import { Container } from '../../components/Container' import { Container } from '../../components/Container'
const stats = [ function BackgroundIllustration(props: React.ComponentPropsWithoutRef<'div'>) {
{ value: 54958, label: 'CPU Cores' }, const id = useId()
{ value: 1493, label: 'Nodes' },
{ value: 5388956, label: 'GB Storage' }, return (
{ value: 44, label: 'Countries' }, <div {...props}>
] <svg
viewBox="0 0 1026 1026"
fill="none"
aria-hidden="true"
className="absolute inset-0 h-full w-full animate-spin-slow"
>
<path
d="M1025 513c0 282.77-229.23 512-512 512S1 795.77 1 513 230.23 1 513 1s512 229.23 512 512Z"
stroke="#D4D4D4"
strokeOpacity="0.7"
/>
<path
d="M513 1025C230.23 1025 1 795.77 1 513"
stroke={`url(#${id}-gradient-1)`}
strokeLinecap="round"
/>
<defs>
<linearGradient
id={`${id}-gradient-1`}
x1="1"
y1="513"
x2="1"
y2="1025"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#06b6d4" />
<stop offset="1" stopColor="#06b6d4" stopOpacity="0" />
</linearGradient>
</defs>
</svg>
<svg
viewBox="0 0 1026 1026"
fill="none"
aria-hidden="true"
className="absolute inset-0 h-full w-full animate-spin-reverse-slower"
>
<path
d="M913 513c0 220.914-179.086 400-400 400S113 733.914 113 513s179.086-400 400-400 400 179.086 400 400Z"
stroke="#D4D4D4"
strokeOpacity="0.7"
/>
<path
d="M913 513c0 220.914-179.086 400-400 400"
stroke={`url(#${id}-gradient-2)`}
strokeLinecap="round"
/>
<defs>
<linearGradient
id={`${id}-gradient-2`}
x1="913"
y1="513"
x2="913"
y2="913"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#06b6d4" />
<stop offset="1" stopColor="#06b6d4" stopOpacity="0" />
</linearGradient>
</defs>
</svg>
</div>
)
}
export function CloudHero() { export function CloudHero() {
return ( return (
<section className="relative bg-white py-20 lg:py-32"> <div className="overflow-hidden pb-24 lg:py-32 lg:pb-0">
<Container> <Container>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center"> <div className="flex flex-col-reverse gap-y-16 lg:grid lg:grid-cols-12 lg:gap-x-8 lg:gap-y-20">
{/* Text Content */} <div className="relative z-10 mx-auto max-w-2xl lg:col-span-7 lg:max-w-none lg:pt-6 xl:col-span-6">
<motion.div <h1 className="text-4xl font-medium tracking-tight text-gray-900 lg:text-6xl">
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8 }}
>
<h1 className="text-4xl lg:text-6xl font-medium tracking-tight text-gray-900">
Mycelium Cloud Mycelium Cloud
</h1> </h1>
<p className="mt-6 text-lg lg:text-xl text-gray-600"> <h2 className="mt-6 text-xl leading-normal tracking-tight text-gray-600 lg:text-2xl">
Revolutionary Kubernetes platform that transforms how teams deploy and manage cloud-native applications at scale Own every workload with certainty.
</h2>
<p className="mt-6 text-lg text-gray-600 leading-tight lg:text-xl lg:leading-normal">
Mycelium Cloud blends deterministic compute with quantum-safe storage, delivering a sovereign platform built for zero-ops automation.
</p> </p>
</motion.div> <div className="mt-8 flex flex-wrap gap-x-6 gap-y-4">
<Button to="/download" variant="solid" color="cyan">
{/* Globe */} Start Deploying
<motion.div </Button>
initial={{ opacity: 0, scale: 0.9 }} <Button
animate={{ opacity: 1, scale: 1 }} to="https://manual.grid.tf"
transition={{ duration: 0.8, delay: 0.2 }} as="a"
className="flex items-center justify-center" variant="outline"
color="gray"
target="_blank"
rel="noreferrer"
> >
<div className="relative w-full max-w-[500px] aspect-square"> View Documentation
<Globe className="w-full h-full" /> </Button>
</div> </div>
</motion.div>
</div> </div>
<div className="relative mt-0 lg:mt-10 lg:col-span-5 lg:row-span-2 xl:col-span-6">
{/* Stats */} <BackgroundIllustration className="absolute left-1/2 top-4 h-[1026px] w-[1026px] -translate-x-1/2 stroke-gray-300/70 sm:top-16 lg:-top-12 lg:ml-12" />
<div className="mt-16 grid grid-cols-2 md:grid-cols-4 gap-6"> <div className="mx-auto h-[420px] max-w-[640px] mask-[linear-gradient(to_bottom,white_60%,transparent)] lg:absolute lg:-inset-x-10 lg:-top-24 lg:h-auto lg:pt-10 xl:-bottom-36">
{stats.map((stat, index) => ( <img
<motion.div src="/src/images/desktop.png"
key={stat.label} alt="Mycelium Cloud dashboard preview"
initial={{ opacity: 0, y: 20 }} className="mx-auto w-full max-w-[640px]"
animate={{ opacity: 1, y: 0 }} width={1366}
transition={{ duration: 0.5, delay: 0.4 + index * 0.1 }} height={768}
className="rounded-2xl bg-gray-50 border border-gray-200 p-6 text-center hover:shadow-md transition-shadow" />
> </div>
<div className="text-2xl lg:text-3xl font-bold text-cyan-500">
<CountUpNumber end={stat.value} />
</div> </div>
<p className="mt-2 text-sm text-gray-600">{stat.label}</p>
</motion.div>
))}
</div> </div>
</Container> </Container>
</section> </div>
) )
} }

View File

@@ -0,0 +1,65 @@
import { CircleBackground } from '../../components/CircleBackground'
import { Container } from '../../components/Container'
const focusAreas = [
{
title: 'Sovereign by Design',
description:
'Control jurisdiction, residency, and governance for every workload with transparent, verifiable operations.',
},
{
title: 'Secure by Default',
description:
'Cryptographic verification, secure boot, and zero-image delivery protect the entire lifecycle automatically.',
},
{
title: 'Ready to Scale',
description:
'Autonomous orchestration keeps the platform elastic, cost-efficient, and always available across the globe.',
},
]
export function CloudOverview() {
return (
<section className="relative overflow-hidden bg-gray-900 py-24 lg:py-32">
<div className="pointer-events-none absolute inset-0">
<CircleBackground
color="#06b6d4"
className="absolute left-1/2 top-full -translate-x-1/2 -translate-y-1/2 opacity-40"
/>
<CircleBackground
color="#22d3ee"
className="absolute -top-24 right-1/4 h-[420px] w-[420px] opacity-30 sm:opacity-40"
/>
</div>
<Container className="relative">
<div className="mx-auto max-w-3xl text-center">
<p className="text-sm font-semibold uppercase tracking-[0.3em] text-cyan-400">
Mycelium Cloud
</p>
<h2 className="mt-6 text-3xl font-medium tracking-tight text-white lg:text-5xl">
A sovereign, self-healing cloud built for trusted automation.
</h2>
<p className="mt-6 text-lg text-gray-300">
Run critical workloads on a programmable substrate that keeps data private, compute deterministic, and operations autonomous.
</p>
</div>
<div className="mt-16 grid gap-8 lg:grid-cols-3">
{focusAreas.map((item) => (
<div
key={item.title}
className="rounded-3xl border border-white/10 bg-white/5 p-8 text-left shadow-[0_20px_60px_-40px_rgba(6,182,212,0.6)] backdrop-blur"
>
<div className="text-base font-semibold text-cyan-200">
{item.title}
</div>
<p className="mt-4 text-sm leading-relaxed text-gray-200">
{item.description}
</p>
</div>
))}
</div>
</Container>
</section>
)
}

View File

@@ -1,42 +1,28 @@
import { AnimatedSection } from '../../components/AnimatedSection' import { AnimatedSection } from '../../components/AnimatedSection'
import { CloudHero } from './CloudHero' import { CloudHero } from './CloudHero'
import { FeaturesSection } from './FeaturesSection' import { CloudOverview } from './CloudOverview'
import { MyceliumNetworking } from './MyceliumNetworking' import { ComputeStorageSplit } from './ComputeStorageSplit'
import { WebGateway } from './WebGateway' import { SecurityPillars } from './SecurityPillars'
import { MultiMaster } from './MultiMaster'
import { LoadBalancing } from './LoadBalancing'
import { CloudCTA } from './CloudCTA' import { CloudCTA } from './CloudCTA'
export default function CloudPage() { export default function CloudPage() {
return ( return (
<div> <>
<AnimatedSection> <AnimatedSection>
<CloudHero /> <CloudHero />
</AnimatedSection> </AnimatedSection>
<AnimatedSection> <AnimatedSection>
<FeaturesSection /> <CloudOverview />
</AnimatedSection> </AnimatedSection>
<AnimatedSection> <AnimatedSection>
<MyceliumNetworking /> <ComputeStorageSplit />
</AnimatedSection> </AnimatedSection>
<AnimatedSection> <AnimatedSection>
<WebGateway /> <SecurityPillars />
</AnimatedSection> </AnimatedSection>
<AnimatedSection>
<MultiMaster />
</AnimatedSection>
<AnimatedSection>
<LoadBalancing />
</AnimatedSection>
<AnimatedSection> <AnimatedSection>
<CloudCTA /> <CloudCTA />
</AnimatedSection> </AnimatedSection>
</div> </>
) )
} }

View File

@@ -0,0 +1,144 @@
import { Container } from '../../components/Container'
const computeFeatures = [
{
title: 'Deterministic Deployments',
description:
'Cryptographic verification ensures every workload deploys exactly as intended—no tampering, no drift.',
},
{
title: 'Self-Managing & Stateless Infrastructure',
description:
'Fully autonomous infrastructure that scales globally without manual intervention.',
},
{
title: 'Zero-Image Technology (100x Compression)',
description:
'Metadata-driven zero-images cut artifacts up to 100x, slashing bandwidth and deployment overhead.',
},
{
title: 'Smart Contract-Based Deployment',
description:
'Cryptographically signed contracts orchestrate every workload with transparent, tamper-proof execution.',
},
{
title: 'Multi-Workload Compatibility with Secure Boot',
description:
'Run containers, VMs, and Linux workloads anywhere with stateless secure boot and continuous verification.',
},
]
const storageFeatures = [
{
title: 'Quantum-Safe Storage (QSS)',
description:
'Quantum-resistant encryption secures data beyond the app layer so ownership and control stay yours.',
},
{
title: 'Self-Healing Storage System',
description:
'Autonomous recovery heals failures or corruption instantly, preserving integrity without human intervention.',
},
{
title: 'Multi-Protocol Data Access',
description:
'Serve the same data via IPFS, S3, WebDAV, HTTP, and native file systems for seamless integration.',
},
{
title: 'Geo-Aware Data Placement & Replication',
description:
'Define residency, redundancy, and distribution per workload while zone-to-zone replication hardens resilience.',
},
{
title: 'Ultra-Efficient Zero-Images (Flists)',
description:
'Metadata-only flists shrink images up to 100x, replacing heavy VMs and powering instant Zero-OS deployments.',
},
]
export function ComputeStorageSplit() {
return (
<section className="relative overflow-hidden bg-white">
<div className="absolute inset-0 bg-gradient-to-br from-cyan-50 via-white to-slate-50" />
<Container className="relative py-24 lg:py-32">
<div className="grid gap-12 lg:grid-cols-12 lg:gap-16">
<div className="flex flex-col items-center gap-10 text-center lg:col-span-5 lg:items-center lg:text-center">
<div className="max-w-xs">
<p className="text-xs font-semibold uppercase tracking-[0.35em] text-cyan-500">
Compute
</p>
<h2 className="mt-4 text-3xl font-medium tracking-tight text-gray-900">
Deterministic compute fabric.
</h2>
<p className="mt-4 text-sm text-gray-500">
Launch workloads with cryptographic certainty and autonomous operations.
</p>
</div>
<ul className="grid w-full gap-4">
{computeFeatures.map((item) => (
<li
key={item.title}
className="flex flex-col gap-1 rounded-2xl border border-cyan-100 bg-white/80 p-4 text-center transition hover:border-cyan-400/70 hover:bg-cyan-50/60 dark:bg-white/10"
>
<span className="text-sm font-semibold text-gray-900">
{item.title}
</span>
<span
className="text-xs text-gray-500 leading-relaxed"
style={{
display: '-webkit-box',
WebkitLineClamp: 2,
WebkitBoxOrient: 'vertical',
overflow: 'hidden',
}}
>
{item.description}
</span>
</li>
))}
</ul>
</div>
<div className="hidden lg:flex lg:col-span-2 lg:items-center lg:justify-center">
<span className="h-full w-px bg-gradient-to-b from-transparent via-cyan-200 to-transparent" />
</div>
<div className="flex flex-col items-center gap-10 text-center lg:col-span-5 lg:items-center lg:text-center">
<div className="max-w-xs">
<p className="text-xs font-semibold uppercase tracking-[0.35em] text-slate-500">
Storage
</p>
<h2 className="mt-4 text-3xl font-medium tracking-tight text-gray-900">
Quantum-safe, sovereign data plane.
</h2>
<p className="mt-4 text-sm text-gray-500">
Protect and place data precisely while keeping access effortless.
</p>
</div>
<ul className="grid w-full gap-4">
{storageFeatures.map((item) => (
<li
key={item.title}
className="flex flex-col gap-1 rounded-2xl border border-slate-200 bg-white/80 p-4 text-center transition hover:border-cyan-400/60 hover:bg-cyan-50/40 dark:bg-white/10"
>
<span className="text-sm font-semibold text-gray-900">
{item.title}
</span>
<span
className="text-xs text-gray-500 leading-relaxed"
style={{
display: '-webkit-box',
WebkitLineClamp: 2,
WebkitBoxOrient: 'vertical',
overflow: 'hidden',
}}
>
{item.description}
</span>
</li>
))}
</ul>
</div>
</div>
</Container>
</section>
)
}

View File

@@ -1,75 +0,0 @@
import { motion } from 'framer-motion'
import { Container } from '../../components/Container'
const features = [
{
icon: '☁️',
title: 'Cloud-Native Architecture',
description: 'Built for the cloud with support for all major cloud providers and on-premise deployments.',
},
{
icon: '🛡️',
title: 'Enterprise Security',
description: 'Advanced security features including RBAC, network policies, and compliance monitoring.',
},
{
icon: '📊',
title: 'Real-time Monitoring',
description: 'Comprehensive monitoring and alerting with detailed metrics and performance insights.',
},
{
icon: '🚀',
title: 'One-Click Deployments',
description: 'Streamlined deployment process with automated CI/CD pipelines and rollback capabilities.',
},
{
icon: '👥',
title: 'Team Collaboration',
description: 'Built-in collaboration tools for teams with role-based access and shared workspaces.',
},
{
icon: '⚙️',
title: 'Advanced Configuration',
description: 'Flexible configuration management with support for Helm charts and custom resources.',
},
]
export function FeaturesSection() {
return (
<section className="bg-gray-50 py-20 lg:py-32">
<Container>
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.8 }}
className="text-center mb-16"
>
<h2 className="text-3xl lg:text-4xl font-medium tracking-tight text-gray-900">
Everything You Need to Succeed
</h2>
<p className="mt-6 text-lg text-gray-600 max-w-3xl mx-auto">
Powerful tools and features designed for modern cloud-native applications
</p>
</motion.div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{features.map((feature, index) => (
<motion.div
key={feature.title}
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.5, delay: index * 0.1 }}
className="rounded-2xl bg-white border border-gray-200 p-8 hover:border-cyan-500 hover:shadow-lg transition-all duration-300 text-center"
>
<div className="text-4xl mb-4">{feature.icon}</div>
<h3 className="text-xl font-semibold text-gray-900 mb-3">{feature.title}</h3>
<p className="text-gray-600">{feature.description}</p>
</motion.div>
))}
</div>
</Container>
</section>
)
}

View File

@@ -1,52 +0,0 @@
import { motion } from 'framer-motion'
import { Container } from '../../components/Container'
export function LoadBalancing() {
return (
<section className="bg-gray-50 py-20 lg:py-32">
<Container>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
{/* Visual Placeholder */}
<motion.div
initial={{ opacity: 0, x: -20 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.8 }}
className="relative aspect-square rounded-2xl bg-gradient-to-br from-blue-50 to-cyan-50 border border-gray-200 flex items-center justify-center"
>
<div className="text-center p-8">
<div className="text-6xl mb-4"></div>
<p className="text-gray-600">Auto-scaling & Load Balancing</p>
</div>
</motion.div>
{/* Content */}
<motion.div
initial={{ opacity: 0, x: 20 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.8 }}
>
<h2 className="text-3xl lg:text-4xl font-medium tracking-tight text-gray-900">
Effortless Load Balancing & Scaling
</h2>
<p className="mt-6 text-lg text-gray-600">
Mycelium Cloud automatically balances traffic and scales your services up or down based on demand. Enjoy high availability and optimal performance with zero manual intervention.
</p>
<div className="mt-6 flex flex-wrap gap-3">
<span className="inline-flex items-center rounded-full border border-cyan-500 px-4 py-2 text-sm font-medium text-cyan-500">
Auto-scaling
</span>
<span className="inline-flex items-center rounded-full border border-cyan-500 px-4 py-2 text-sm font-medium text-cyan-500">
Built-in load balancing
</span>
<span className="inline-flex items-center rounded-full border border-cyan-500 px-4 py-2 text-sm font-medium text-cyan-500">
High availability
</span>
</div>
</motion.div>
</div>
</Container>
</section>
)
}

View File

@@ -1,52 +0,0 @@
import { motion } from 'framer-motion'
import { Container } from '../../components/Container'
export function MultiMaster() {
return (
<section className="bg-white py-20 lg:py-32">
<Container>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
{/* Content */}
<motion.div
initial={{ opacity: 0, x: -20 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.8 }}
>
<h2 className="text-3xl lg:text-4xl font-medium tracking-tight text-gray-900">
Multi-Master Clusters
</h2>
<p className="mt-6 text-lg text-gray-600">
High-availability Kubernetes clusters with multiple control plane nodes. Automatic failover, leader election, and zero-downtime upgrades built-in.
</p>
<div className="mt-6 flex flex-wrap gap-3">
<span className="inline-flex items-center rounded-full border border-cyan-500 px-4 py-2 text-sm font-medium text-cyan-500">
HA Control Plane
</span>
<span className="inline-flex items-center rounded-full border border-cyan-500 px-4 py-2 text-sm font-medium text-cyan-500">
Automatic Failover
</span>
<span className="inline-flex items-center rounded-full border border-cyan-500 px-4 py-2 text-sm font-medium text-cyan-500">
Zero-downtime Upgrades
</span>
</div>
</motion.div>
{/* Visual Placeholder */}
<motion.div
initial={{ opacity: 0, x: 20 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.8 }}
className="relative aspect-square rounded-2xl bg-gradient-to-br from-cyan-50 to-blue-50 border border-gray-200 flex items-center justify-center"
>
<div className="text-center p-8">
<div className="text-6xl mb-4"></div>
<p className="text-gray-600">High Availability Clusters</p>
</div>
</motion.div>
</div>
</Container>
</section>
)
}

View File

@@ -1,49 +0,0 @@
import { motion } from 'framer-motion'
import { Container } from '../../components/Container'
export function MyceliumNetworking() {
return (
<section className="bg-white py-20 lg:py-32">
<Container>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
{/* Content */}
<motion.div
initial={{ opacity: 0, x: -20 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.8 }}
>
<h2 className="text-3xl lg:text-4xl font-medium tracking-tight text-gray-900">
Mycelium Networking
</h2>
<p className="mt-6 text-lg text-gray-600">
Ultra-fast, decentralized networking inspired by nature. Mycelium Networking forms a resilient, adaptive mesh that routes around failures and optimizes for speed and security.
</p>
<div className="mt-6 flex flex-wrap gap-3">
<span className="inline-flex items-center rounded-full border border-cyan-500 px-4 py-2 text-sm font-medium text-cyan-500">
End-to-end encrypted
</span>
<span className="inline-flex items-center rounded-full border border-cyan-500 px-4 py-2 text-sm font-medium text-cyan-500">
Nature-inspired
</span>
</div>
</motion.div>
{/* Visual Placeholder */}
<motion.div
initial={{ opacity: 0, x: 20 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.8 }}
className="relative aspect-square rounded-2xl bg-gradient-to-br from-cyan-50 to-blue-50 border border-gray-200 flex items-center justify-center"
>
<div className="text-center p-8">
<div className="text-6xl mb-4">🕸</div>
<p className="text-gray-600">Decentralized Mesh Network</p>
</div>
</motion.div>
</div>
</Container>
</section>
)
}

View File

@@ -0,0 +1,62 @@
import { CircleBackground } from '../../components/CircleBackground'
import { Container } from '../../components/Container'
const pillars = [
{
title: 'Provable Sovereignty',
description:
'Assign workloads to trusted zones, verify state with cryptographic proofs, and maintain full lineage for every byte.',
},
{
title: 'Autonomous Zero-Trust',
description:
'Identity, policy, and attestation are enforced continuously—no manual keys, no hidden backdoors, no shared control.',
},
{
title: 'Planetary-Scale Resilience',
description:
'Mesh-connected infrastructure routes around failure, keeping applications responsive even when regions go dark.',
},
]
export function SecurityPillars() {
return (
<section className="relative overflow-hidden bg-gray-900 py-24 lg:py-32">
<div className="pointer-events-none absolute inset-0">
<CircleBackground
color="#22d3ee"
className="absolute -top-20 left-1/2 h-[520px] w-[520px] -translate-x-1/2 opacity-30"
/>
<div className="absolute inset-x-0 bottom-0 h-40 bg-gradient-to-t from-gray-900 to-transparent" />
</div>
<Container className="relative">
<div className="mx-auto max-w-3xl text-center">
<p className="text-sm font-semibold uppercase tracking-[0.3em] text-cyan-400">
Sovereign Architecture
</p>
<h2 className="mt-6 text-3xl font-medium tracking-tight text-white lg:text-5xl">
Built for security, trust, and unstoppable continuity.
</h2>
<p className="mt-6 text-lg text-gray-300">
Every control surface is auditable and automated, enabling critical workloads to run with confidence.
</p>
</div>
<div className="mt-16 grid gap-8 lg:grid-cols-3">
{pillars.map((pillar) => (
<div
key={pillar.title}
className="rounded-3xl border border-white/10 bg-white/5 p-8 text-left backdrop-blur-sm transition hover:-translate-y-1 hover:border-cyan-400/60"
>
<div className="text-lg font-semibold text-white">
{pillar.title}
</div>
<p className="mt-4 text-sm leading-relaxed text-gray-300">
{pillar.description}
</p>
</div>
))}
</div>
</Container>
</section>
)
}

View File

@@ -1,52 +0,0 @@
import { motion } from 'framer-motion'
import { Container } from '../../components/Container'
export function WebGateway() {
return (
<section className="bg-gray-50 py-20 lg:py-32">
<Container>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
{/* Visual Placeholder */}
<motion.div
initial={{ opacity: 0, x: -20 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.8 }}
className="relative aspect-square rounded-2xl bg-gradient-to-br from-blue-50 to-cyan-50 border border-gray-200 flex items-center justify-center"
>
<div className="text-center p-8">
<div className="text-6xl mb-4">🌐</div>
<p className="text-gray-600">Simple Web Gateway</p>
</div>
</motion.div>
{/* Content */}
<motion.div
initial={{ opacity: 0, x: 20 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.8 }}
>
<h2 className="text-3xl lg:text-4xl font-medium tracking-tight text-gray-900">
Simple Web Gateway Access
</h2>
<p className="mt-6 text-lg text-gray-600">
Expose any service to the public web with a simple Kubernetes resource. No complex Ingress controllers. Domain and prefix-based routing is built-in.
</p>
<div className="mt-6 flex flex-wrap gap-3">
<span className="inline-flex items-center rounded-full border border-cyan-500 px-4 py-2 text-sm font-medium text-cyan-500">
Simple configuration
</span>
<span className="inline-flex items-center rounded-full border border-cyan-500 px-4 py-2 text-sm font-medium text-cyan-500">
Built-in routing
</span>
<span className="inline-flex items-center rounded-full border border-cyan-500 px-4 py-2 text-sm font-medium text-cyan-500">
No ingress controllers
</span>
</div>
</motion.div>
</div>
</Container>
</section>
)
}

View File

@@ -1,37 +1,36 @@
'use client' import { motion } from 'framer-motion'
import { TypeAnimation } from 'react-type-animation'
import { H1, P } from '@/components/Texts' import { Container } from '../../components/Container'
import { FadeIn } from '@/components/FadeIn'
import { Button } from '@/components/Button'
export function HomeHero() { export function HomeHero() {
return ( return (
<div <section className="relative bg-white py-20 lg:py-32">
className="relative isolate overflow-hidden bg-white" <Container>
style={{ <div className="mx-auto max-w-4xl text-center">
backgroundImage: 'url(/images/cloud.png)', <h1 className="text-4xl lg:text-6xl font-medium tracking-tight text-gray-900">
backgroundSize: 'cover', <TypeAnimation
backgroundPosition: 'center', sequence={[
}} 'Decentralized Autonomous Agentic Cloud.',
1000,
]}
wrapper="span"
speed={50}
repeat={0}
/>
</h1>
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: 1, delay: 1 }}
className="mt-8"
> >
<div className="mx-auto max-w-7xl px-6 py-24 lg:py-32 lg:flex lg:px-8"> <p className="text-lg lg:text-xl text-gray-600">
<div className="mx-auto max-w-2xl shrink-0 lg:mx-0 lg:pt-8">
<H1 color="primary" className="mt-10 text-5xl font-semibold tracking-tight text-pretty sm:text-7xl">
Decentralized Autonomous Agentic Cloud.
</H1>
<P color="secondary" className="mt-8 text-lg font-medium text-pretty sm:text-xl/8">
Mycelium's advancements in Agentic infrastructure supports private, secure and autonomous Agents that connect, learn and grow with you. Mycelium's advancements in Agentic infrastructure supports private, secure and autonomous Agents that connect, learn and grow with you.
</P> </p>
<div className="mt-10 flex items-center gap-x-6"> </motion.div>
<Button variant="solid" color="cyan" href="#">
Get started
</Button>
<a href="#" className="text-sm/6 font-semibold text-gray-50">
Learn more <span aria-hidden="true"></span>
</a>
</div>
</div>
</div>
</div> </div>
</Container>
</section>
) )
} }

View File

@@ -1,69 +0,0 @@
'use client'
import { useRef, useEffect } from 'react'
import { H1, H5 } from '@/components/Texts'
export function HomeHeroLight2() {
const videoRef = useRef<HTMLVideoElement>(null);
useEffect(() => {
const video = videoRef.current;
if (video) {
video.playbackRate = 0.4;
const playPromise = video.play();
if (playPromise !== undefined) {
playPromise.catch(error => {
console.error("Video autoplay was prevented:", error);
});
}
}
}, []);
return (
<section className="relative h-screen overflow-hidden">
{/* Background video */}
<video
ref={videoRef}
src="/videos/cloud.mp4"
autoPlay
loop
muted
playsInline
className="absolute inset-0 h-full w-full object-cover z-[-10]"
/>
{/* Global soft wash + blur (Temporarily commented out for debugging) */}
{/* <div className="absolute inset-0 bg-white opacity-30 backdrop-blur-md z-0" /> */}
{/* Center “halo” for text legibility (Temporarily commented out for debugging) */}
{/* <div
className="absolute inset-0 z-0"
style={{
background:
'radial-gradient(ellipse at center, rgba(255,255,255,0.96) 0%, rgba(255,255,255,0.88) 15%, rgba(255,255,255,0.72) 35%, rgba(255,255,255,0.08) 75%)'
}}
/> */}
{/* Content */}
<div className="relative z-10 h-full flex items-center justify-center">
<div className="mx-auto max-w-4xl text-center px-6 lg:px-8">
<H1
className="pt-6"
style={{ textShadow: '0 2px 8px rgba(0,0,0,0.08)' }}
>
Decentralized Autonomous Agentic Cloud.
</H1>
<H5
className="mt-8"
style={{ textShadow: '0 1px 4px rgba(0,0,0,0.06)' }}
>
Mycelium&apos;s advancements in Agentic infrastructure support private, secure, and
autonomous Agents that connect, learn, and grow with you.
</H5>
</div>
</div>
</section>
)
}

View File

@@ -2,7 +2,6 @@ import { AnimatedSection } from '../../components/AnimatedSection'
import { HomeHero } from './HomeHero' import { HomeHero } from './HomeHero'
import { WorldMapSection } from './WorldMapSection' import { WorldMapSection } from './WorldMapSection'
import { StackSection } from './StackSection' import { StackSection } from './StackSection'
import { HomeHeroLight2 } from './HomeHeroLight2'
export default function HomePage() { export default function HomePage() {
return ( return (

View File

@@ -24,7 +24,7 @@ const stackData = [
export function StackSection() { export function StackSection() {
return ( return (
<section className="relative bg-black py-20 lg:py-32"> <section className="relative bg-white py-20 lg:py-32">
<Container> <Container>
<div className="grid grid-cols-1 lg:grid-cols-3 gap-12 items-start"> <div className="grid grid-cols-1 lg:grid-cols-3 gap-12 items-start">
{/* Left Column - Text */} {/* Left Column - Text */}
@@ -35,7 +35,7 @@ export function StackSection() {
transition={{ duration: 0.5 }} transition={{ duration: 0.5 }}
className="lg:col-span-1" className="lg:col-span-1"
> >
<h2 className="text-3xl lg:text-4xl font-medium tracking-tight text-white"> <h2 className="text-3xl lg:text-4xl font-medium tracking-tight text-gray-900">
The Mycelium Stack The Mycelium Stack
</h2> </h2>
<p className="mt-6 text-lg text-gray-600"> <p className="mt-6 text-lg text-gray-600">

View File

@@ -78,7 +78,7 @@ export function Hero() {
<div className="flex flex-col-reverse gap-y-16 lg:grid lg:grid-cols-12 lg:gap-x-8 lg:gap-y-20"> <div className="flex flex-col-reverse gap-y-16 lg:grid lg:grid-cols-12 lg:gap-x-8 lg:gap-y-20">
<div className="relative z-10 mx-auto max-w-2xl lg:col-span-7 lg:max-w-none lg:pt-6 xl:col-span-6"> <div className="relative z-10 mx-auto max-w-2xl lg:col-span-7 lg:max-w-none lg:pt-6 xl:col-span-6">
<h1 className="text-4xl lg:text-6xl font-medium tracking-tight text-gray-900"> <h1 className="text-4xl lg:text-6xl font-medium tracking-tight text-gray-900">
Mycelium Mycelium Network
</h1> </h1>
<h2 className="mt-6 lg:text-2xl text-xl tracking-tight leading-normal text-gray-600"> <h2 className="mt-6 lg:text-2xl text-xl tracking-tight leading-normal text-gray-600">
Unleashing the Power of Decentralized Networks Unleashing the Power of Decentralized Networks
@@ -86,9 +86,6 @@ export function Hero() {
<p className="mt-6 lg:text-xl text-lg text-gray-600 lg:leading-normal leading-tight"> <p className="mt-6 lg:text-xl text-lg text-gray-600 lg:leading-normal leading-tight">
Discover Mycelium, an end-to-end encrypted IPv6 overlay network. The future of secure, efficient, and scalable networking. Discover Mycelium, an end-to-end encrypted IPv6 overlay network. The future of secure, efficient, and scalable networking.
</p> </p>
<p className="mt-6 text-lg text-gray-600">
Coming Soon: New Decentralized Features
</p>
<div className="mt-8 flex flex-wrap gap-x-6 gap-y-4"> <div className="mt-8 flex flex-wrap gap-x-6 gap-y-4">
<Button to="/download" variant="solid" color="cyan"> <Button to="/download" variant="solid" color="cyan">
Get Mycelium Get Mycelium