mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat: add Enterprise and How It Works sections
This commit is contained in:
@@ -0,0 +1,56 @@
|
|||||||
|
import { Lock, Server, Users } from "lucide-react";
|
||||||
|
|
||||||
|
import { FadeIn } from "./fade-in";
|
||||||
|
|
||||||
|
const features = [
|
||||||
|
{
|
||||||
|
title: "Data Sovereignty",
|
||||||
|
description:
|
||||||
|
"Your images never leave your network. No external API calls, no cloud dependencies. Full GDPR, HIPAA, CCPA compliance by architecture.",
|
||||||
|
icon: Lock,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Enterprise Controls",
|
||||||
|
description:
|
||||||
|
"Multi-user authentication, team permissions, API key management, and audit logging. Everything you need for regulated environments.",
|
||||||
|
icon: Users,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Deploy Anywhere",
|
||||||
|
description:
|
||||||
|
"Docker, Kubernetes, bare metal. ARM and x86. Air-gapped networks. One container, any infrastructure.",
|
||||||
|
icon: Server,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export function Enterprise() {
|
||||||
|
return (
|
||||||
|
<section id="enterprise" className="bg-dark-bg px-6 py-24 text-dark-fg md:py-36">
|
||||||
|
<div className="mx-auto max-w-6xl">
|
||||||
|
<FadeIn>
|
||||||
|
<h2 className="text-center text-3xl font-bold tracking-tight md:text-4xl">
|
||||||
|
Built for organizations that take data seriously.
|
||||||
|
</h2>
|
||||||
|
<p className="mx-auto mt-4 max-w-xl text-center text-lg text-dark-muted">
|
||||||
|
Healthcare, legal, defense, finance — when images are sensitive, SnapOtter keeps them on
|
||||||
|
your infrastructure.
|
||||||
|
</p>
|
||||||
|
</FadeIn>
|
||||||
|
|
||||||
|
<div className="mt-16 grid gap-12 md:grid-cols-3 md:gap-16">
|
||||||
|
{features.map((feat, i) => (
|
||||||
|
<FadeIn key={feat.title} delay={i * 0.1}>
|
||||||
|
<div>
|
||||||
|
<div className="flex h-12 w-12 items-center justify-center rounded-xl border border-white/10 bg-white/5">
|
||||||
|
<feat.icon size={22} className="text-accent" />
|
||||||
|
</div>
|
||||||
|
<h3 className="mt-4 text-xl font-bold">{feat.title}</h3>
|
||||||
|
<p className="mt-3 leading-relaxed text-dark-muted">{feat.description}</p>
|
||||||
|
</div>
|
||||||
|
</FadeIn>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
import { FadeIn } from "./fade-in";
|
||||||
|
|
||||||
|
const steps = [
|
||||||
|
{
|
||||||
|
number: "1",
|
||||||
|
title: "Pull",
|
||||||
|
code: "docker pull snapotter/snapotter",
|
||||||
|
description: "One image. Everything included.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
number: "2",
|
||||||
|
title: "Deploy",
|
||||||
|
code: "docker run -p 8080:8080 snapotter/snapotter",
|
||||||
|
description: "One command. Any server.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
number: "3",
|
||||||
|
title: "Use",
|
||||||
|
code: null,
|
||||||
|
description: "Browser UI, REST API, or pipeline automation.",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export function HowItWorks() {
|
||||||
|
return (
|
||||||
|
<section className="bg-background-alt px-6 py-24 md:py-36">
|
||||||
|
<div className="mx-auto max-w-6xl">
|
||||||
|
<FadeIn>
|
||||||
|
<h2 className="text-center text-3xl font-bold tracking-tight md:text-4xl">
|
||||||
|
Up and running in 60 seconds.
|
||||||
|
</h2>
|
||||||
|
</FadeIn>
|
||||||
|
|
||||||
|
<div className="mt-16 grid gap-8 md:grid-cols-3 md:gap-12">
|
||||||
|
{steps.map((step, i) => (
|
||||||
|
<FadeIn key={step.number} delay={i * 0.1}>
|
||||||
|
<div className="text-center">
|
||||||
|
<div className="mx-auto flex h-10 w-10 items-center justify-center rounded-full bg-accent text-accent-foreground text-sm font-bold">
|
||||||
|
{step.number}
|
||||||
|
</div>
|
||||||
|
<h3 className="mt-4 text-xl font-bold">{step.title}</h3>
|
||||||
|
{step.code && (
|
||||||
|
<div className="mt-3 rounded-lg bg-dark-bg px-4 py-2.5 font-mono text-sm text-dark-fg">
|
||||||
|
{step.code}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<p className="mt-3 text-muted">{step.description}</p>
|
||||||
|
</div>
|
||||||
|
</FadeIn>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user