'use client'; import { motion } from 'framer-motion'; import { ArrowRightIcon, CalendarIcon, CookieIcon, CreditCardIcon, GithubIcon, ShieldCheckIcon, } from 'lucide-react'; import Image from 'next/image'; import Link from 'next/link'; import { useState } from 'react'; import { Competition } from '@/components/competition'; import { EuFlag } from '@/components/eu-flag'; import { GetStartedButton } from '@/components/get-started-button'; import { Perks } from '@/components/perks'; import { Button } from '@/components/ui/button'; import { cn } from '@/lib/utils'; const perks = [ { text: 'Free trial 30 days', icon: CalendarIcon }, { text: 'No credit card required', icon: CreditCardIcon }, { text: 'GDPR compliant', icon: ShieldCheckIcon }, { text: 'EU hosted', icon: EuFlag }, { text: 'Cookie-less tracking', icon: CookieIcon }, { text: 'Open-source', icon: GithubIcon }, ]; const aspectRatio = 2946 / 1329; const width = 2346; const height = width / aspectRatio; function HeroImage({ className }: { className?: string }) { const [isLoaded, setIsLoaded] = useState(false); return ( Hero setIsLoaded(true)} src="/hero-dark.webp" style={{ width, minWidth: width, height, }} width={width} /> Hero setIsLoaded(true)} src="/hero-light.webp" style={{ width, minWidth: width, height, }} width={width} /> ); } export function Hero() { return (
TRUSTED BY 1,000+ PROJECTS

The open-source alternative to

An open-source web and product analytics platform that combines the power of Mixpanel with the ease of Plausible and one of the best Google Analytics replacements.

{/* Window controls */}