import { Logo } from "../components/Logo"; import { Badge } from "../components/primitives"; import { Icons, type IconName } from "../components/icons"; import { useSession } from "../lib/queries"; import { useT } from "../lib/i18n"; import { PublicControls } from "../components/PublicControls"; const GITHUB_URL = "https://github.com/airano-ir/mcphub"; const BLOG_URL = "https://blog.palebluedot.live/"; const SUPPORT_URL = "https://nowpayments.io/donation/airano"; const PUBLIC_PLUGINS = [ "WordPress", "WooCommerce", "WordPress Specialist", "Supabase", "OpenPanel", "Gitea", "n8n", "Coolify", ]; export function LandingPage() { const t = useT(); const session = useSession(); const signedIn = session.data?.authenticated === true; const servedFromPublicRoot = typeof window !== "undefined" && !window.location.pathname.startsWith("/dashboard"); const dashboardPath = (path: string) => (servedFromPublicRoot ? `/dashboard${path}` : path); const primaryTo = signedIn ? dashboardPath("/overview") : dashboardPath("/onboarding"); const primaryLabel = signedIn ? t("landing.continue_dashboard", "Continue to dashboard") : t("landing.start_60", "Start in 60 seconds"); const secondaryTo = signedIn ? dashboardPath("/sites") : dashboardPath("/login"); const secondaryLabel = signedIn ? t("my_sites", "Sites") : t("login.sign_in", "Sign in"); return (
{t( "landing.hero_body", "MCP Hub is the control plane between your self-hosted services and the AI tools that work on them. Issue keys, connect Claude.ai, Claude Desktop, ChatGPT, Cursor, or Codex, and review every call from one clean surface.", )}
{t( "landing.cta_body", "Deploy on any Coolify instance. Free for personal use. Self-hosted forever.", )}