-
-
-
+
-
+
${" "}
-
- docker run -d -p 1349:1349 -v snapotter-data:/data ghcr.io/ashim-hq/ashim:latest
-
+ {command}
diff --git a/apps/landing/src/components/navbar.tsx b/apps/landing/src/components/navbar.tsx
index 49acd6a5..23b2d337 100644
--- a/apps/landing/src/components/navbar.tsx
+++ b/apps/landing/src/components/navbar.tsx
@@ -4,9 +4,9 @@ import { Github, Menu, Star, X } from "lucide-react";
import { useState } from "react";
const links = [
- { label: "Features", href: "#features" },
{ label: "Download", href: "#how-it-works" },
- { label: "Pricing", href: "#enterprise" },
+ { label: "Features", href: "#features" },
+ { label: "Pricing", href: "#pricing" },
{ label: "Docs", href: "https://docs.snapotter.com" },
{ label: "Contact", href: "/contact" },
];
diff --git a/apps/landing/src/components/pricing.tsx b/apps/landing/src/components/pricing.tsx
new file mode 100644
index 00000000..92e6ad37
--- /dev/null
+++ b/apps/landing/src/components/pricing.tsx
@@ -0,0 +1,84 @@
+import { Check } from "lucide-react";
+
+import { FadeIn } from "./fade-in";
+
+const plans = [
+ {
+ name: "Free",
+ price: "Free",
+ subtitle: "For everyone",
+ features: [
+ "All 40+ tools included",
+ "Unlimited usage",
+ "Self-host anywhere",
+ "Community support",
+ "Open source (AGPL-3.0)",
+ ],
+ cta: "Get Started",
+ href: "#how-it-works",
+ highlighted: false,
+ },
+ {
+ name: "Enterprise",
+ price: "Custom",
+ subtitle: "For organizations",
+ features: [
+ "Everything in Free",
+ "Commercial license (no AGPL)",
+ "Priority support",
+ "Deployment assistance",
+ "Custom integrations",
+ ],
+ cta: "Contact Us",
+ href: "/contact",
+ highlighted: true,
+ },
+];
+
+export function Pricing() {
+ return (
+
+
+
+
+ Simple pricing
+
+
+ Free for everyone. Enterprise support when you need it.
+
+
+
+
+ {plans.map((plan, i) => (
+
+
+
{plan.subtitle}
+
{plan.price}
+
+
+ {plan.features.map((feature) => (
+ -
+
+ {feature}
+
+ ))}
+
+
+
+ {plan.cta}
+
+
+
+ ))}
+
+
+
+ );
+}
diff --git a/apps/landing/src/components/why-choose.tsx b/apps/landing/src/components/why-choose.tsx
index 3691faaa..01106c37 100644
--- a/apps/landing/src/components/why-choose.tsx
+++ b/apps/landing/src/components/why-choose.tsx
@@ -1,4 +1,15 @@
-import { BadgeCheck, CircleDollarSign, Layers, ShieldCheck, UserRoundX, Zap } from "lucide-react";
+import {
+ BadgeCheck,
+ CircleDollarSign,
+ Code,
+ Layers,
+ Plug,
+ ShieldCheck,
+ UserRoundX,
+ Workflow,
+ Zap,
+} from "lucide-react";
+
import { FadeIn } from "./fade-in";
const benefits = [
@@ -32,6 +43,21 @@ const benefits = [
description: "Powered by Sharp. Process images instantly.",
icon: Zap,
},
+ {
+ title: "Open Source",
+ description: "AGPL-3.0 licensed. Inspect every line of code.",
+ icon: Code,
+ },
+ {
+ title: "REST API",
+ description: "Every tool accessible via HTTP. Full OpenAPI docs.",
+ icon: Plug,
+ },
+ {
+ title: "Pipeline Automation",
+ description: "Chain tools together. Automate your workflows.",
+ icon: Workflow,
+ },
];
export function WhyChoose() {