feat: restructure GPU page layout and simplify content presentation

- Reordered sections to improve information flow (Capabilities → Design → Architecture → Overview)
- Simplified use cases and overview sections by removing redundant bullet points
- Added new GpuCapabilities and GpuDesign components with cleaner, more focused messaging
This commit is contained in:
2025-11-04 16:50:15 +01:00
parent 8b892c9432
commit 865252274c
6 changed files with 253 additions and 115 deletions

View File

@@ -0,0 +1,75 @@
import { Container } from '../../components/Container'
import { Eyebrow, SectionHeader, P } from '../../components/Texts'
const architectureSections = [
{
title: 'Distributed GPU Mesh',
description:
'A peer-to-peer fabric connects GPU nodes across the ThreeFold Grid, exposing them through the Mycelium network.',
bullets: [
'GPU nodes distributed globally for on-demand acceleration.',
'Mycelium network provides encrypted peer-to-peer connectivity.',
'Smart contract orchestration allocates and governs resources.',
'Real-time monitoring tracks utilization and health.',
],
},
{
title: 'Performance Characteristics',
description:
'Consistency and transparency are built into the fabric so workloads behave predictably anywhere on the planet.',
bullets: [
'Edge-to-core deployment flexibility for every workload profile.',
'Adaptive intelligence optimizes allocation automatically.',
'Deterministic performance guarantees availability when booked.',
'Transparent cost tracking for every GPU cycle consumed.',
],
},
]
export function GpuArchitectureArchive() {
return (
<section id="gpu-architecture" className="bg-white py-24 sm:py-32">
<Container>
<div className="mx-auto max-w-3xl text-center">
<Eyebrow>
Technical Architecture
</Eyebrow>
<SectionHeader as="h2" className="mt-6 text-gray-900">
A peer-to-peer mesh purpose-built for acceleration.
</SectionHeader>
<P className="mt-6 text-gray-600">
Mycelium GPU treats every node as part of a sovereign mesh. Encrypted
networking, smart contract orchestration, and transparent monitoring
ensure your workloads receive precisely the power they request.
</P>
</div>
<div className="mt-16 grid gap-8 lg:grid-cols-2">
{architectureSections.map((section) => (
<div
key={section.title}
className="flex h-full flex-col rounded-3xl border border-slate-200 bg-white p-8 shadow-sm transition hover:-translate-y-1 hover:border-cyan-300 hover:shadow-lg"
>
<h3 className="text-xl font-semibold text-gray-900">
{section.title}
</h3>
<p className="mt-4 text-sm leading-relaxed text-gray-600">
{section.description}
</p>
<ul className="mt-6 space-y-3 text-sm text-gray-600">
{section.bullets.map((bullet) => (
<li
key={bullet}
className="flex items-start gap-3 rounded-2xl border border-cyan-100 bg-cyan-50/60 p-3 leading-relaxed"
>
<span className="mt-1 inline-block size-2 rounded-full bg-cyan-500" />
<span>{bullet}</span>
</li>
))}
</ul>
</div>
))}
</div>
</Container>
</section>
)
}

View File

@@ -0,0 +1,52 @@
import { Container } from '../../components/Container'
import { Eyebrow, SectionHeader, P } from '../../components/Texts'
const architecture = [
{
title: 'Sovereign Compute Nodes',
description: 'GPUs hosted on hardware you trust.',
},
{
title: 'Encrypted Mesh Networking',
description: 'Secure, private connectivity to workloads.',
},
{
title: 'Reservation & Verification Layer',
description: 'Guarantees GPU access and consistency.',
},
]
export function GpuArchitecture() {
return (
<section id="gpu-architecture" className="bg-white py-24 sm:py-32">
<Container>
<div className="mx-auto max-w-3xl text-center">
<Eyebrow>ARCHITECTURE</Eyebrow>
<SectionHeader as="h2" className="mt-6 text-gray-900">
HOW IT WORKS
</SectionHeader>
<P className="mt-6 text-gray-600">
A sovereign GPU fabric built for transparent access, secure routing,
and guaranteed performanceno opaque clouds or shared queues.
</P>
</div>
<div className="mx-auto mt-16 max-w-4xl space-y-6">
{architecture.map((item) => (
<div
key={item.title}
className="rounded-3xl border border-slate-200 bg-white p-8 shadow-sm transition hover:-translate-y-1 hover:border-cyan-300 hover:shadow-lg"
>
<h3 className="text-xl font-semibold text-gray-900">
{item.title}
</h3>
<p className="mt-3 text-sm leading-relaxed text-gray-600">
{item.description}
</p>
</div>
))}
</div>
</Container>
</section>
)
}

View File

@@ -0,0 +1,62 @@
import { Container } from '../../components/Container'
import { Eyebrow, H3, P, CT } from '../../components/Texts'
import {
BoltIcon,
BanknotesIcon,
GlobeAltIcon,
ShieldCheckIcon,
} from '@heroicons/react/24/solid'
const benefits = [
{
name: 'Consistent, reserved GPU performance (no noisy neighbor effects)',
icon: BoltIcon,
},
{
name: 'Transparent cost (no markup, no surprise billing)',
icon: BanknotesIcon,
},
{
name: 'Run anywhere cloud, on-prem, edge, home lab',
icon: GlobeAltIcon,
},
{
name: 'Your data never leaves your control',
icon: ShieldCheckIcon,
},
]
export function GpuDesign() {
return (
<section className="bg-white py-24 sm:py-32">
<Container>
{/* Header */}
<div className="mx-auto max-w-3xl sm:text-center">
<Eyebrow>CORE VALUE</Eyebrow>
<H3 className="mt-4 text-gray-900">GPU Power You Actually Control</H3>
<P className="mt-6 text-gray-600">
Mycelium GPU gives you access to real hardware, not gated queues or
proprietary runtimes.
</P>
</div>
{/* Key Benefits */}
<div className="mx-auto mt-16 max-w-5xl">
<dl className="grid grid-cols-1 gap-12 sm:grid-cols-2 lg:grid-cols-2">
{benefits.map((benefit) => (
<div key={benefit.name} className="relative pl-12">
<benefit.icon
className="absolute left-0 top-1 size-6 text-cyan-600"
aria-hidden="true"
/>
<CT className="font-semibold text-gray-900">
{benefit.name}
</CT>
</div>
))}
</dl>
</div>
</Container>
</section>
)
}

View File

@@ -1,48 +1,30 @@
import { import {
CodeBracketSquareIcon, AdjustmentsHorizontalIcon,
CubeTransparentIcon, GlobeAltIcon,
LockClosedIcon, BanknotesIcon,
Squares2X2Icon,
} from '@heroicons/react/24/outline' } from '@heroicons/react/24/outline'
import { Container } from '../../components/Container' import { Container } from '../../components/Container'
import { Eyebrow, SectionHeader, P, Small } from '../../components/Texts' import { Eyebrow, SectionHeader, P } from '../../components/Texts'
const overviewCards = [ const coreFeatures = [
{ {
label: 'Overview', name: 'Deterministic GPU Allocation',
title: 'Unified GPU acceleration across the ThreeFold Grid',
description: description:
'Mycelium GPU aggregates distributed hardware into a single fabric, delivering sovereign acceleration for AI, ML, and rendering workloads.', 'Reserve the GPU type you need and get exactly that, every time.',
icon: AdjustmentsHorizontalIcon,
}, },
{ {
label: 'Core Concept', name: 'Multi-Topology Deployment',
title: 'Sovereign intelligence layer',
description: description:
'No silos, no intermediaries—just raw, verifiable GPU power orchestrated through smart contracts and APIs you control.', 'Run workloads in data centers, at the edge, or on self-hosted nodes.',
}, icon: GlobeAltIcon,
]
const principles = [
{
name: 'No Silos',
description: 'Every GPU resource is accessible through a single interface.',
icon: Squares2X2Icon,
}, },
{ {
name: 'No Intermediaries', name: 'Transparent Cost Structure',
description: 'Direct access to hardware without centralized brokers.', description:
icon: CubeTransparentIcon, 'No inflated pricing, no hidden fees, no marketplace brokerage.',
}, icon: BanknotesIcon,
{
name: 'Verifiable Power',
description: 'Every GPU cycle is attested and cryptographically verified.',
icon: LockClosedIcon,
},
{
name: 'Code-Orchestrated',
description: 'Smart contracts and APIs automate allocation and policy.',
icon: CodeBracketSquareIcon,
}, },
] ]
@@ -52,52 +34,31 @@ export function GpuOverview() {
<Container> <Container>
<div className="mx-auto max-w-3xl text-center"> <div className="mx-auto max-w-3xl text-center">
<Eyebrow className="tracking-[0.32em] uppercase text-cyan-300"> <Eyebrow className="tracking-[0.32em] uppercase text-cyan-300">
Platform Overview PLATFORM OVERVIEW
</Eyebrow> </Eyebrow>
<SectionHeader as="h2" color="light" className="mt-6 font-medium"> <SectionHeader as="h2" color="light" className="mt-6 font-medium">
The sovereign acceleration layer for intelligent workloads. Core Features
</SectionHeader> </SectionHeader>
<P color="lightSecondary" className="mt-6"> <P color="lightSecondary" className="mt-6">
Mycelium GPU makes distributed acceleration feel like one machine. The Mycelium GPU layer provides predictable, sovereign acceleration
Harness global GPUs with deterministic performance, transparent without arbitrary limits or hidden economics.
costs, and end-to-end verification.
</P> </P>
</div> </div>
<div className="mt-16 grid gap-8 lg:grid-cols-2">
{overviewCards.map((card) => ( <div className="mx-auto mt-16 max-w-5xl grid gap-8 sm:grid-cols-2 lg:grid-cols-3">
{coreFeatures.map((feature) => (
<div <div
key={card.title} key={feature.name}
className="group relative overflow-hidden rounded-3xl border border-white/10 bg-white/[0.04] p-8 backdrop-blur-sm transition hover:-translate-y-1 hover:border-cyan-300/50 hover:bg-white/[0.08]" className="rounded-3xl border border-white/10 bg-white/[0.04] p-8 text-left backdrop-blur-sm transition hover:-translate-y-1 hover:border-cyan-300/50 hover:bg-white/[0.08]"
>
<div className="absolute inset-0 bg-gradient-to-br from-cyan-500/0 via-white/[0.05] to-cyan-300/20 opacity-0 transition group-hover:opacity-100" />
<div className="relative">
<Small className="text-xs uppercase tracking-[0.35em] text-cyan-200">
{card.label}
</Small>
<h3 className="mt-4 text-lg font-semibold text-white">
{card.title}
</h3>
<p className="mt-4 text-sm leading-relaxed text-gray-300">
{card.description}
</p>
</div>
</div>
))}
</div>
<div className="mt-16 grid gap-8 sm:grid-cols-2 lg:grid-cols-4">
{principles.map((principle) => (
<div
key={principle.name}
className="rounded-3xl border border-white/10 bg-white/[0.04] p-6 text-left transition hover:-translate-y-1 hover:border-cyan-300/50 hover:bg-white/[0.08]"
> >
<div className="mb-6 flex size-12 items-center justify-center rounded-full bg-cyan-500/15"> <div className="mb-6 flex size-12 items-center justify-center rounded-full bg-cyan-500/15">
<principle.icon aria-hidden="true" className="size-6 text-cyan-300" /> <feature.icon className="size-6 text-cyan-300" aria-hidden="true" />
</div> </div>
<h3 className="text-base font-semibold text-white"> <h3 className="text-lg font-semibold text-white">
{principle.name} {feature.name}
</h3> </h3>
<p className="mt-3 text-sm leading-relaxed text-gray-300"> <p className="mt-3 text-sm leading-relaxed text-gray-300">
{principle.description} {feature.description}
</p> </p>
</div> </div>
))} ))}

View File

@@ -7,6 +7,8 @@ import { GpuUseCases } from './GpuUseCases'
import { GpuGettingStarted } from './GpuGettingStarted' import { GpuGettingStarted } from './GpuGettingStarted'
import { GpuDifferentiators } from './GpuDifferentiators' import { GpuDifferentiators } from './GpuDifferentiators'
import { CallToAction } from './CallToAction' import { CallToAction } from './CallToAction'
import { GpuCapabilities } from './GpuCapabilities'
import { GpuDesign } from './GpuDesign'
export default function GpuPage() { export default function GpuPage() {
return ( return (
@@ -14,24 +16,39 @@ export default function GpuPage() {
<AnimatedSection> <AnimatedSection>
<GpuHero /> <GpuHero />
</AnimatedSection> </AnimatedSection>
<AnimatedSection> <AnimatedSection>
<GpuOverview /> <GpuCapabilities />
</AnimatedSection> </AnimatedSection>
<AnimatedSection>
<GpuDesign />
</AnimatedSection>
<AnimatedSection> <AnimatedSection>
<GpuArchitecture /> <GpuArchitecture />
</AnimatedSection> </AnimatedSection>
<AnimatedSection> <AnimatedSection>
<GpuIntegration /> <GpuOverview />
</AnimatedSection> </AnimatedSection>
<AnimatedSection> <AnimatedSection>
<GpuUseCases /> <GpuUseCases />
</AnimatedSection> </AnimatedSection>
<AnimatedSection>
<GpuIntegration />
</AnimatedSection>
<AnimatedSection> <AnimatedSection>
<GpuGettingStarted /> <GpuGettingStarted />
</AnimatedSection> </AnimatedSection>
<AnimatedSection> <AnimatedSection>
<GpuDifferentiators /> <GpuDifferentiators />
</AnimatedSection> </AnimatedSection>
<AnimatedSection> <AnimatedSection>
<CallToAction /> <CallToAction />
</AnimatedSection> </AnimatedSection>

View File

@@ -1,34 +1,18 @@
import { Container } from '../../components/Container' import { Container } from '../../components/Container'
import { Eyebrow, SectionHeader, P } from '../../components/Texts' import { Eyebrow, SectionHeader, P } from '../../components/Texts'
const useCases = [ const gpuUseCases = [
{ {
title: 'AI / ML Training', title: 'AI / ML Training & Inference',
description: description: 'Scale model execution across sovereign GPU nodes.',
'Scale training, fine-tuning, and inference workloads anywhere on the grid.',
bullets: ['GPU acceleration', 'Scalable compute', 'Cost optimization'],
}, },
{ {
title: 'Rendering & Visualization', title: 'Rendering & Visualization',
description: description: 'Run 3D, scientific, simulation, or generative rendering pipelines.',
'Drive high-performance graphics pipelines for media, science, and immersive experiences.',
bullets: [
'Distributed 3D rendering',
'Scientific visualization',
'Real-time VR / AR processing',
'Digital twin simulations',
],
}, },
{ {
title: 'General GPU Computing', title: 'Distributed & Edge Compute',
description: description: 'Place GPU power close to where data is generated.',
'Harness sovereign acceleration for simulations, finance, blockchain, and research.',
bullets: [
'Scientific simulations',
'Financial modeling',
'Blockchain processing',
'Protein folding and discovery',
],
}, },
] ]
@@ -37,41 +21,28 @@ export function GpuUseCases() {
<section className="bg-white py-24 sm:py-32"> <section className="bg-white py-24 sm:py-32">
<Container> <Container>
<div className="mx-auto max-w-3xl text-center"> <div className="mx-auto max-w-3xl text-center">
<Eyebrow> <Eyebrow>USE CASES</Eyebrow>
Use Cases
</Eyebrow>
<SectionHeader as="h2" className="mt-6 text-gray-900"> <SectionHeader as="h2" className="mt-6 text-gray-900">
Acceleration for every intelligent workload. Built for Intelligent Workloads
</SectionHeader> </SectionHeader>
<P className="mt-6 text-gray-600"> <P className="mt-6 text-gray-600">
From deep learning to immersive visualization, Mycelium GPU delivers From sovereign AI execution to real-time rendering and edge inference,
deterministic access to the power you need without the waitlists or Mycelium GPU ensures predictable acceleration with full ownership and no centralized control.
markups of centralized clouds.
</P> </P>
</div> </div>
<div className="mt-16 grid gap-8 lg:grid-cols-3">
{useCases.map((useCase) => ( <div className="mx-auto mt-16 max-w-4xl space-y-6 lg:space-y-0 lg:grid lg:grid-cols-3 lg:gap-8">
{gpuUseCases.map((useCase) => (
<div <div
key={useCase.title} key={useCase.title}
className="flex h-full flex-col rounded-3xl border border-slate-200 bg-white p-8 shadow-sm transition hover:-translate-y-1 hover:border-cyan-300 hover:shadow-lg" className="rounded-3xl border border-slate-200 bg-white p-8 shadow-sm transition hover:-translate-y-1 hover:border-cyan-300 hover:shadow-lg"
> >
<h3 className="text-xl font-semibold text-gray-900"> <h3 className="text-xl font-semibold text-gray-900">
{useCase.title} {useCase.title}
</h3> </h3>
<p className="mt-4 text-sm leading-relaxed text-gray-600"> <p className="mt-3 text-sm leading-relaxed text-gray-600">
{useCase.description} {useCase.description}
</p> </p>
<ul className="mt-6 space-y-3 text-sm text-gray-600">
{useCase.bullets.map((bullet) => (
<li
key={bullet}
className="flex items-start gap-3 rounded-2xl border border-cyan-100 bg-cyan-50/60 p-3 leading-relaxed"
>
<span className="mt-1 inline-block size-2 rounded-full bg-cyan-500" />
<span>{bullet}</span>
</li>
))}
</ul>
</div> </div>
))} ))}
</div> </div>