import Link from 'next/link'; import { ArrowRight, Github, MoveRight } from 'lucide-react'; import { CtaLink } from '@/components/marketing/cta-link'; import { FeatureComparisonTable } from '@/components/marketing/feature-comparison-table'; import { MarketingFooter } from '@/components/marketing/marketing-footer'; import { MarketingHeader } from '@/components/marketing/marketing-header'; import { PricingComparison } from '@/components/marketing/pricing-comparison'; import { ProductVisual } from '@/components/marketing/product-visual'; import type { ComparisonPageDefinition } from '@/lib/marketing/comparison-types'; import { getCompetitorName, comparisonPageMap } from '@/lib/marketing/comparison-pages'; import { seoConfig } from '@/lib/seo'; interface ComparisonPageProps { page: ComparisonPageDefinition; isLoggedIn: boolean; } export function ComparisonPage({ page, isLoggedIn }: ComparisonPageProps) { const hostedCtaHref = isLoggedIn ? '/dashboard' : '/register'; const hostedCtaLabel = isLoggedIn ? 'Open dashboard' : 'Start 7-day free trial, no card required'; const competitorName = getCompetitorName(page) ?? 'Alternatives'; const relatedSlugs = page.relatedSlugs.filter((slug) => slug in comparisonPageMap); return (

{page.eyebrow}

{page.headline}

{page.subheadline}

No per-member or guest fees. One $10/month hosted plan covers your whole team and every client reviewer link.

{hostedCtaLabel} View GitHub

{page.solutionTitle}

{page.solutionNarrative}

Where OpenFrame fits best

    {page.bestForOpenFrame.map((item) => (
  • - {item}
  • ))}

Where {competitorName} may still fit

    {page.bestForCompetitor.map((item) => (
  • - {item}
  • ))}

OpenFrame advantages

    {page.openframeWins.map((item) => (
  • {item}
  • ))}

{competitorName} advantages

    {page.competitorWins.map((item) => (
  • {item}
  • ))}

Feature comparison

Honest tradeoffs based on official product, pricing, and help documentation. Verify current plans before buying.

Pricing comparison

OpenFrame is $10/month flat with a 7-day free trial that never asks for a card. You do not pay per team member, collaborator, or guest reviewer. Self-hosting is free with Docker.

FAQ

{page.faq.map((item) => (

{item.question}

{item.answer}

))}
{relatedSlugs.length > 0 ? (

Related comparisons

{relatedSlugs.map((slug) => ( {slug.replaceAll('-', ' ')} ))}
) : null}

Start your free trial

Your first client review link takes minutes.

{hostedCtaLabel} View GitHub
); }