From 545872edee65ede977ff54c27873590d720c6c14 Mon Sep 17 00:00:00 2001 From: Marc Campbell Date: Tue, 3 Feb 2026 00:40:37 +0000 Subject: [PATCH] Jazz up website content with Factory.ai-inspired design - Hero: gradient text, glow effects, punchy copy, social proof - Features: colorful gradient icons, compelling descriptions - How-to: tabbed interface with Docker/Helm/GitHub Actions examples - Use Cases: real-world scenarios with highlighted benefits - Time Limits: clean visual TTL reference - Footer: cleaner, more modern layout - Header: improved nav with better hover states Copy is now more engaging and developer-focused Signed-off-by: Marc Campbell --- web/src/components/features.tsx | 77 +++++++++------ web/src/components/footer.tsx | 50 ++++++---- web/src/components/header.tsx | 84 ++++++++--------- web/src/components/hero.tsx | 101 +++++++++++++------- web/src/components/how-to.tsx | 144 +++++++++++++++++++++-------- web/src/components/time-limits.tsx | 52 ++++++----- web/src/components/use-cases.tsx | 79 ++++++++++------ 7 files changed, 371 insertions(+), 216 deletions(-) diff --git a/web/src/components/features.tsx b/web/src/components/features.tsx index b41e20f..b2fc98a 100644 --- a/web/src/components/features.tsx +++ b/web/src/components/features.tsx @@ -1,56 +1,79 @@ -import { Clock, Shield, Zap, Package } from "lucide-react"; +"use client"; + +import { Shield, Zap, Globe, Lock, Clock, Workflow } from "lucide-react"; const features = [ { icon: Shield, - title: "Anonymous", - description: - "No login required. Image names provide the initial secrecy for access. Add a UUID to reduce discoverability.", + title: "Zero Authentication", + description: "No tokens. No passwords. No API keys to rotate. Push and pull without any credentials whatsoever.", + gradient: "from-green-500 to-emerald-500", }, { icon: Clock, - title: "Ephemeral", - description: - "Image tags set the time limit. Default is 24 hours, max is 24 hours. Valid formats: :5m, :1600s, :4h, :1d", + title: "Auto-Expiring", + description: "Set your TTL from minutes to 24 hours. When time's up, the image vanishes. No cleanup, no bloat.", + gradient: "from-blue-500 to-cyan-500", }, { icon: Zap, - title: "Fast", - description: - "Pulling images is really quick thanks to Cloudflare CDN. Works great even if you aren't near us-east-1.", + title: "Blazing Fast", + description: "Global CDN-backed infrastructure. Pull your images lightning fast from anywhere in the world.", + gradient: "from-yellow-500 to-orange-500", }, { - icon: Package, + icon: Globe, title: "OCI Compatible", - description: - "Supports Helm charts and other OCI artifacts. Push with helm push my-chart.tgz oci://ttl.sh/your-name", + description: "Works with Docker, Podman, Helm charts, and any OCI-compliant tooling. Standards-based, zero lock-in.", + gradient: "from-purple-500 to-pink-500", + }, + { + icon: Lock, + title: "Privacy First", + description: "We don't track. We don't log. We don't even know what you're pushing. It's none of our business.", + gradient: "from-red-500 to-rose-500", + }, + { + icon: Workflow, + title: "CI/CD Native", + description: "Built for pipelines. No secrets to configure, no credentials to leak. Just works in any CI system.", + gradient: "from-indigo-500 to-violet-500", }, ]; export function Features() { return ( -
-
+
+
+ +
-

- Simple by design +

+ Why developers{" "} + + love it +

-

- No configuration, no authentication, no hassle. Just push and pull. +

+ We removed everything annoying about container registries. +
+ What's left is pure simplicity.

-
- {features.map((feature) => ( +
+ {features.map((feature, i) => (
-
- +
+
-

{feature.title}

-

+

+ {feature.title} +

+

{feature.description}

diff --git a/web/src/components/footer.tsx b/web/src/components/footer.tsx index 9f969d8..170b7eb 100644 --- a/web/src/components/footer.tsx +++ b/web/src/components/footer.tsx @@ -1,48 +1,64 @@ +"use client"; + +import { Heart } from "lucide-react"; + export function Footer() { return ( -