forked from emre/www_projectmycelium_com
refactor: consolidate cloud and agents page components
- Removed duplicate hero component variations (AgentsHero/AgentsHeroAlt, CloudHero/CloudHeroAlt) - Deleted unused CloudCTA, CloudGettingStarted, and CloudDesign components - Cleaned up empty files and legacy page structure
This commit is contained in:
120
src/pages/storage/archive/StorageDeveloperExperience.tsx
Normal file
120
src/pages/storage/archive/StorageDeveloperExperience.tsx
Normal file
@@ -0,0 +1,120 @@
|
||||
import { Container } from '../../../components/Container'
|
||||
import { Eyebrow, SectionHeader, P } from '../../../components/Texts'
|
||||
|
||||
type Experience = {
|
||||
title: string
|
||||
description: string
|
||||
code: string
|
||||
language: string
|
||||
}
|
||||
|
||||
const experiences: Experience[] = [
|
||||
{
|
||||
title: 'S3-Compatible Access',
|
||||
description:
|
||||
'Use familiar AWS SDKs to read and write data against the Mycelium Storage endpoint.',
|
||||
language: 'python',
|
||||
code: `import boto3
|
||||
|
||||
s3_client = boto3.client(
|
||||
's3',
|
||||
endpoint_url='https://storage.mycelium.com',
|
||||
aws_access_key_id='your_access_key',
|
||||
aws_secret_access_key='your_secret_key'
|
||||
)
|
||||
|
||||
s3_client.upload_file('local_file.txt', 'my-bucket', 'remote_file.txt')
|
||||
s3_client.download_file('my-bucket', 'remote_file.txt', 'downloaded_file.txt')`,
|
||||
},
|
||||
{
|
||||
title: 'WebDAV Mount',
|
||||
description:
|
||||
'Mount storage as a filesystem for desktop workflows and legacy integrations.',
|
||||
language: 'bash',
|
||||
code: `mount -t davfs https://storage.mycelium.com/dav /mnt/storage
|
||||
cp /mnt/storage/data.txt ./
|
||||
echo "Data updated" > /mnt/storage/updated.txt`,
|
||||
},
|
||||
{
|
||||
title: 'IPFS Integration',
|
||||
description:
|
||||
'Leverage IPFS for decentralized addressability without duplicating datasets.',
|
||||
language: 'python',
|
||||
code: `import ipfshttpclient
|
||||
|
||||
client = ipfshttpclient.connect('/ip4/127.0.0.1/tcp/5001')
|
||||
result = client.add('data.txt')
|
||||
print(f"File available at: {result['Hash']}")`,
|
||||
},
|
||||
{
|
||||
title: 'Geo-Aware Placement Policy',
|
||||
description:
|
||||
'Declare residency, redundancy, and protocol availability in a single configuration.',
|
||||
language: 'yaml',
|
||||
code: `apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: storage-config
|
||||
data:
|
||||
placement: |
|
||||
geo_aware_storage:
|
||||
residency: "eu-west"
|
||||
redundancy: 3
|
||||
zones:
|
||||
- "zone-1"
|
||||
- "zone-2"
|
||||
- "zone-3"
|
||||
protocols:
|
||||
- "s3"
|
||||
- "ipfs"
|
||||
- "webdav"`,
|
||||
},
|
||||
]
|
||||
|
||||
export function StorageDeveloperExperience() {
|
||||
return (
|
||||
<section
|
||||
id="storage-developer-experience"
|
||||
className="bg-gray-900 py-24 sm:py-32"
|
||||
>
|
||||
<Container>
|
||||
<div className="mx-auto max-w-3xl text-center">
|
||||
<Eyebrow className="tracking-[0.32em] uppercase text-cyan-300">
|
||||
Developer Experience
|
||||
</Eyebrow>
|
||||
<SectionHeader as="h2" color="light" className="mt-6">
|
||||
Build with the interfaces you already know.
|
||||
</SectionHeader>
|
||||
<P color="lightSecondary" className="mt-6">
|
||||
Every protocol rides the same quantum-safe storage fabric, so moving
|
||||
between APIs is as simple as switching adapters. Choose the workflow
|
||||
that fits your stack.
|
||||
</P>
|
||||
</div>
|
||||
<div className="mt-16 grid gap-8 lg:grid-cols-2">
|
||||
{experiences.map((experience) => (
|
||||
<div
|
||||
key={experience.title}
|
||||
className="flex h-full flex-col rounded-3xl border border-white/10 bg-white/4 p-8 backdrop-blur-sm transition hover:-translate-y-1 hover:border-cyan-300/50 hover:bg-white/8"
|
||||
>
|
||||
<div>
|
||||
<h3 className="text-xl font-semibold text-white">
|
||||
{experience.title}
|
||||
</h3>
|
||||
<p className="mt-4 text-sm leading-relaxed text-gray-300">
|
||||
{experience.description}
|
||||
</p>
|
||||
</div>
|
||||
<pre className="mt-6 overflow-x-auto rounded-2xl border border-white/10 bg-black/70 p-4 text-xs text-cyan-100">
|
||||
<code>{experience.code}</code>
|
||||
</pre>
|
||||
<span className="mt-4 inline-flex w-fit items-center rounded-full border border-cyan-500/40 px-3 py-1 text-[0.65rem] font-semibold uppercase tracking-[0.3em] text-cyan-200">
|
||||
{experience.language}
|
||||
</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</Container>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
65
src/pages/storage/archive/StorageDifferentiators.tsx
Normal file
65
src/pages/storage/archive/StorageDifferentiators.tsx
Normal file
@@ -0,0 +1,65 @@
|
||||
import { Container } from '../../../components/Container'
|
||||
import { Eyebrow, SectionHeader, P } from '../../../components/Texts'
|
||||
|
||||
const differentiators = [
|
||||
{
|
||||
title: 'Quantum-Safe Protection',
|
||||
description:
|
||||
'Data is encrypted with algorithms that resist quantum attacks, preserving integrity for decades.',
|
||||
},
|
||||
{
|
||||
title: 'Autonomous Self-Healing',
|
||||
description:
|
||||
'Failures and corruption are detected and repaired automatically—no on-call rotations required.',
|
||||
},
|
||||
{
|
||||
title: 'Universal Protocol Support',
|
||||
description:
|
||||
'Serve the same data through IPFS, S3, WebDAV, HTTP, and native file systems without duplication.',
|
||||
},
|
||||
{
|
||||
title: 'Geo-Aware Data Governance',
|
||||
description:
|
||||
'Define residency, redundancy, and distribution policies per workload and enforce them automatically.',
|
||||
},
|
||||
{
|
||||
title: 'Ultra-Efficient Storage',
|
||||
description:
|
||||
'Zero-image technology reduces artifacts by up to 100x, cutting bandwidth and accelerating deployment.',
|
||||
},
|
||||
]
|
||||
|
||||
export function StorageDifferentiators() {
|
||||
return (
|
||||
<section className="bg-gray-950 py-24 sm:py-32">
|
||||
<Container>
|
||||
<div className="mx-auto max-w-3xl text-center">
|
||||
<Eyebrow className="tracking-[0.32em] uppercase text-cyan-300">
|
||||
Key Differentiators
|
||||
</Eyebrow>
|
||||
<SectionHeader as="h2" color="light" className="mt-6">
|
||||
Sovereignty, resilience, and flexibility in one fabric.
|
||||
</SectionHeader>
|
||||
<P color="lightSecondary" className="mt-6">
|
||||
Mycelium Storage blends quantum safety, autonomous operations, and
|
||||
protocol choice into a single platform that meets the most demanding
|
||||
requirements for modern data services.
|
||||
</P>
|
||||
</div>
|
||||
<div className="mt-16 grid gap-8 md:grid-cols-2">
|
||||
{differentiators.map((item) => (
|
||||
<div
|
||||
key={item.title}
|
||||
className="rounded-3xl border border-white/10 bg-white/4 p-8 backdrop-blur-sm transition hover:-translate-y-1 hover:border-cyan-300/50 hover:bg-white/8"
|
||||
>
|
||||
<h3 className="text-lg font-semibold text-white">{item.title}</h3>
|
||||
<p className="mt-4 text-sm leading-relaxed text-gray-300">
|
||||
{item.description}
|
||||
</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</Container>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
113
src/pages/storage/archive/StorageFeatures.tsx
Normal file
113
src/pages/storage/archive/StorageFeatures.tsx
Normal file
@@ -0,0 +1,113 @@
|
||||
import { Container } from '../../../components/Container'
|
||||
import { Eyebrow, SectionHeader, P, Small } from '../../../components/Texts'
|
||||
|
||||
const features = [
|
||||
{
|
||||
title: 'Quantum-Safe Storage (QSS)',
|
||||
description:
|
||||
'Quantum-resistant encryption secures data beyond the application layer so ownership stays yours.',
|
||||
bullets: [
|
||||
'Beyond AES-256 with post-quantum algorithms.',
|
||||
'Multi-layer protection enforced automatically.',
|
||||
'Future-proof against emerging quantum threats.',
|
||||
'Total control of keys, residency, and governance.',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Self-Healing Storage System',
|
||||
description:
|
||||
'Autonomous recovery heals failures or corruption instantly with no human intervention.',
|
||||
bullets: [
|
||||
'Instant detection and repair of anomalies.',
|
||||
'Integrity preserved while data is restored.',
|
||||
'Continuous verification validates every replica.',
|
||||
'Zero-ops recovery that runs around the clock.',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Multi-Protocol Data Access',
|
||||
description:
|
||||
'Serve the same dataset over IPFS, S3, WebDAV, HTTP, and native file systems.',
|
||||
bullets: [
|
||||
'IPFS for decentralized, content-addressed retrieval.',
|
||||
'S3-compatible API for existing tooling and SDKs.',
|
||||
'WebDAV for mounted filesystem access.',
|
||||
'HTTP and POSIX for direct application integration.',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Geo-Aware Placement & Replication',
|
||||
description:
|
||||
'Define residency, redundancy, and distribution on a per-workload basis.',
|
||||
bullets: [
|
||||
'Pin data to specific jurisdictions or zones.',
|
||||
'Custom redundancy policies per dataset.',
|
||||
'Automatic zone-to-zone replication for resilience.',
|
||||
'Global distribution across the ThreeFold Grid.',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Ultra-Efficient Zero-Images (Flists)',
|
||||
description:
|
||||
'Metadata-only flists shrink images up to 100x, enabling instant Zero-OS deployments.',
|
||||
bullets: [
|
||||
'Drastically reduced storage footprint for artifacts.',
|
||||
'Metadata-driven delivery accelerates boot times.',
|
||||
'Bandwidth-efficient transfers to any node.',
|
||||
'Perfect for immutable workloads and rapid rollback.',
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
export function StorageFeatures() {
|
||||
return (
|
||||
<section id="storage-features" className="bg-white py-24 sm:py-32">
|
||||
<Container>
|
||||
<div className="mx-auto max-w-3xl text-center">
|
||||
<Eyebrow>
|
||||
Core Features
|
||||
</Eyebrow>
|
||||
<SectionHeader as="h2" className="mt-6 text-gray-900">
|
||||
Data services engineered for sovereignty and speed.
|
||||
</SectionHeader>
|
||||
<P className="mt-6 text-gray-600">
|
||||
Mycelium Storage combines quantum-safe cryptography, autonomous
|
||||
healing, and universal protocol support. It adapts to every workload
|
||||
without sacrificing control or performance.
|
||||
</P>
|
||||
</div>
|
||||
<div className="mt-16 grid gap-8 md:grid-cols-2">
|
||||
{features.map((feature) => (
|
||||
<div
|
||||
key={feature.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"
|
||||
>
|
||||
<div>
|
||||
<Small className="text-xs uppercase tracking-[0.3em] text-cyan-500">
|
||||
Capability
|
||||
</Small>
|
||||
<h3 className="mt-4 text-xl font-semibold text-gray-900">
|
||||
{feature.title}
|
||||
</h3>
|
||||
<p className="mt-4 text-sm leading-relaxed text-gray-600">
|
||||
{feature.description}
|
||||
</p>
|
||||
</div>
|
||||
<ul className="mt-6 space-y-3 text-sm text-gray-600">
|
||||
{feature.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>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user