Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6f561d8f50 | |||
| b41daa976c | |||
| c4917ffd79 | |||
| b38cdfe1f4 |
333
src/app/page.tsx
333
src/app/page.tsx
@@ -10,6 +10,7 @@ import ContactText from "@/components/sections/contact/ContactText";
|
|||||||
import TestimonialAboutCard from "@/components/sections/about/TestimonialAboutCard";
|
import TestimonialAboutCard from "@/components/sections/about/TestimonialAboutCard";
|
||||||
import PricingCardTwo from "@/components/sections/pricing/PricingCardTwo";
|
import PricingCardTwo from "@/components/sections/pricing/PricingCardTwo";
|
||||||
import FooterSimple from "@/components/sections/footer/FooterSimple";
|
import FooterSimple from "@/components/sections/footer/FooterSimple";
|
||||||
|
import RadialGradientBackground from "@/components/background/RadialGradientBackground";
|
||||||
import { Database, Globe, Shield, Sparkles, Zap, ArrowRight, Check } from "lucide-react";
|
import { Database, Globe, Shield, Sparkles, Zap, ArrowRight, Check } from "lucide-react";
|
||||||
|
|
||||||
export default function LandingPage() {
|
export default function LandingPage() {
|
||||||
@@ -39,161 +40,225 @@ export default function LandingPage() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="hero" data-section="hero">
|
<div id="hero" data-section="hero">
|
||||||
<HeroBillboardRotatedCarousel
|
<div className="relative">
|
||||||
title="The investment analysis platform Europe's property market deserves."
|
<RadialGradientBackground
|
||||||
description="Paste any European property listing URL. Get a full investment report in 60 seconds — net yield, tax breakdown, risk score, three scenarios."
|
centerColor="var(--background)"
|
||||||
tag="Private beta · 847 investors waiting"
|
edgeColor="var(--color-background-accent)"
|
||||||
tagIcon={Zap}
|
size="130% 130%"
|
||||||
background={{ variant: "radial-gradient" }}
|
position="50% 15%"
|
||||||
buttons={[{ text: "Get early access →", href: "#waitlist" }]}
|
/>
|
||||||
carouselItems={[
|
<HeroBillboardRotatedCarousel
|
||||||
{
|
title="The investment analysis platform Europe's property market deserves."
|
||||||
id: "1", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-68ywkcgf.jpg?_wi=1", imageAlt: "Investment analysis dashboard showing metrics"
|
description="Paste any European property listing URL. Get a full investment report in 60 seconds — net yield, tax breakdown, risk score, three scenarios."
|
||||||
},
|
tag="Private beta · 847 investors waiting"
|
||||||
{
|
tagIcon={Zap}
|
||||||
id: "2", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-qj0y48af.jpg?_wi=1", imageAlt: "Property investment report interface"
|
background={{ variant: "radial-gradient" }}
|
||||||
},
|
buttons={[{ text: "Get early access →", href: "#waitlist" }]}
|
||||||
{
|
carouselItems={[
|
||||||
id: "3", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-rn2r740d.jpg?_wi=1", imageAlt: "Real estate market analysis dashboard"
|
{
|
||||||
},
|
id: "1", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-68ywkcgf.jpg?_wi=1", imageAlt: "Investment analysis dashboard showing metrics"
|
||||||
{
|
},
|
||||||
id: "4", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-yb3ch9ok.png?_wi=1", imageAlt: "Investment scenario comparison view"
|
{
|
||||||
},
|
id: "2", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-qj0y48af.jpg?_wi=1", imageAlt: "Property investment report interface"
|
||||||
{
|
},
|
||||||
id: "5", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-68ywkcgf.jpg?_wi=2", imageAlt: "Tax breakdown and yield calculation"
|
{
|
||||||
},
|
id: "3", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-rn2r740d.jpg?_wi=1", imageAlt: "Real estate market analysis dashboard"
|
||||||
{
|
},
|
||||||
id: "6", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-qj0y48af.jpg?_wi=2", imageAlt: "Risk assessment and scoring interface"
|
{
|
||||||
}
|
id: "4", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-yb3ch9ok.png?_wi=1", imageAlt: "Investment scenario comparison view"
|
||||||
]}
|
},
|
||||||
autoPlay={true}
|
{
|
||||||
autoPlayInterval={5000}
|
id: "5", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-68ywkcgf.jpg?_wi=2", imageAlt: "Tax breakdown and yield calculation"
|
||||||
/>
|
},
|
||||||
|
{
|
||||||
|
id: "6", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-qj0y48af.jpg?_wi=2", imageAlt: "Risk assessment and scoring interface"
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
autoPlay={true}
|
||||||
|
autoPlayInterval={5000}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="social-proof" data-section="social-proof">
|
<div id="social-proof" data-section="social-proof">
|
||||||
<SocialProofOne
|
<div className="relative">
|
||||||
title="Trusted by investors across Europe"
|
<RadialGradientBackground
|
||||||
description="Join hundreds of property investors already using Terrivio"
|
centerColor="var(--background)"
|
||||||
textboxLayout="default"
|
edgeColor="var(--color-background-accent)"
|
||||||
useInvertedBackground={false}
|
size="140% 140%"
|
||||||
names={[
|
position="50% 20%"
|
||||||
"Dutch Investors", "German Analysts", "French Partners", "Spanish Funds", "Italian Groups", "Swiss Wealth", "Belgian Teams"
|
/>
|
||||||
]}
|
<SocialProofOne
|
||||||
speed={40}
|
title="Trusted by investors across Europe"
|
||||||
showCard={true}
|
description="Join hundreds of property investors already using Terrivio"
|
||||||
/>
|
textboxLayout="default"
|
||||||
|
useInvertedBackground={false}
|
||||||
|
names={[
|
||||||
|
"Dutch Investors", "German Analysts", "French Partners", "Spanish Funds", "Italian Groups", "Swiss Wealth", "Belgian Teams"
|
||||||
|
]}
|
||||||
|
speed={40}
|
||||||
|
showCard={true}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="metrics" data-section="metrics">
|
<div id="metrics" data-section="metrics">
|
||||||
<MetricCardThree
|
<div className="relative">
|
||||||
title="Why Terrivio Stands Out"
|
<RadialGradientBackground
|
||||||
description="Powerful metrics that drive investor confidence"
|
centerColor="var(--background)"
|
||||||
textboxLayout="default"
|
edgeColor="var(--color-background-accent)"
|
||||||
useInvertedBackground={false}
|
size="135% 135%"
|
||||||
animationType="slide-up"
|
position="50% 25%"
|
||||||
metrics={[
|
/>
|
||||||
{ id: "1", icon: Globe, title: "European Markets", value: "13" },
|
<MetricCardThree
|
||||||
{ id: "2", icon: Database, title: "Data Sources", value: "8" },
|
title="Why Terrivio Stands Out"
|
||||||
{ id: "3", icon: Zap, title: "Report Time", value: "~60s" },
|
description="Powerful metrics that drive investor confidence"
|
||||||
{ id: "4", icon: Shield, title: "Gross Margin", value: "96%" }
|
textboxLayout="default"
|
||||||
]}
|
useInvertedBackground={false}
|
||||||
/>
|
animationType="slide-up"
|
||||||
|
metrics={[
|
||||||
|
{ id: "1", icon: Globe, title: "European Markets", value: "13" },
|
||||||
|
{ id: "2", icon: Database, title: "Data Sources", value: "8" },
|
||||||
|
{ id: "3", icon: Zap, title: "Report Time", value: "~60s" },
|
||||||
|
{ id: "4", icon: Shield, title: "Gross Margin", value: "96%" }
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="features" data-section="features">
|
<div id="features" data-section="features">
|
||||||
<FeatureCardTwentyOne
|
<div className="relative">
|
||||||
title="From URL to investment decision."
|
<RadialGradientBackground
|
||||||
description="No account needed. No spreadsheets. No guesswork."
|
centerColor="var(--background)"
|
||||||
tag="HOW IT WORKS"
|
edgeColor="var(--color-background-accent)"
|
||||||
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-rn2r740d.jpg?_wi=2"
|
size="130% 130%"
|
||||||
imageAlt="Three-step process visualization"
|
position="50% 30%"
|
||||||
mediaAnimation="slide-up"
|
/>
|
||||||
useInvertedBackground={false}
|
<FeatureCardTwentyOne
|
||||||
mediaPosition="right"
|
title="From URL to investment decision."
|
||||||
accordionItems={[
|
description="No account needed. No spreadsheets. No guesswork."
|
||||||
{
|
tag="HOW IT WORKS"
|
||||||
id: "1", title: "Paste a property URL", content: "Copy any listing from Idealista, Funda, Green-Acres, Immobiliare, or 10+ platforms. Terrivio fetches all data automatically."
|
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-rn2r740d.jpg?_wi=2"
|
||||||
},
|
imageAlt="Three-step process visualization"
|
||||||
{
|
mediaAnimation="slide-up"
|
||||||
id: "2", title: "AI analyzes everything", content: "Our engine extracts specs, calculates gross and net yield, scores location risk, and models three investment scenarios in seconds."
|
useInvertedBackground={false}
|
||||||
},
|
mediaPosition="right"
|
||||||
{
|
accordionItems={[
|
||||||
id: "3", title: "Make your decision", content: "Net yield, risk score, tax breakdown per country, break-even occupancy and DSCR — everything you need to invest with confidence."
|
{
|
||||||
}
|
id: "1", title: "Paste a property URL", content: "Copy any listing from Idealista, Funda, Green-Acres, Immobiliare, or 10+ platforms. Terrivio fetches all data automatically."
|
||||||
]}
|
},
|
||||||
/>
|
{
|
||||||
|
id: "2", title: "AI analyzes everything", content: "Our engine extracts specs, calculates gross and net yield, scores location risk, and models three investment scenarios in seconds."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "3", title: "Make your decision", content: "Net yield, risk score, tax breakdown per country, break-even occupancy and DSCR — everything you need to invest with confidence."
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="demo" data-section="demo">
|
<div id="demo" data-section="demo">
|
||||||
<ContactText
|
<div className="relative">
|
||||||
text="Try it yourself. Paste any real listing URL. No account needed."
|
<RadialGradientBackground
|
||||||
animationType="reveal-blur"
|
centerColor="var(--background)"
|
||||||
background={{ variant: "radial-gradient" }}
|
edgeColor="var(--color-background-accent)"
|
||||||
useInvertedBackground={false}
|
size="125% 125%"
|
||||||
buttons={[{ text: "Analyze →", href: "#analyze" }]}
|
position="50% 35%"
|
||||||
/>
|
/>
|
||||||
|
<ContactText
|
||||||
|
text="Try it yourself. Paste any real listing URL. No account needed."
|
||||||
|
animationType="reveal-blur"
|
||||||
|
background={{ variant: "radial-gradient" }}
|
||||||
|
useInvertedBackground={false}
|
||||||
|
buttons={[{ text: "Analyze →", href: "#analyze" }]}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="markets" data-section="markets">
|
<div id="markets" data-section="markets">
|
||||||
<TestimonialAboutCard
|
<div className="relative">
|
||||||
tag="COVERAGE"
|
<RadialGradientBackground
|
||||||
title="13 European markets."
|
centerColor="var(--background)"
|
||||||
description="Local expertise in every region"
|
edgeColor="var(--color-background-accent)"
|
||||||
subdescription="Local tax rules, STR regulations, rental yield data and price history — built in for every market."
|
size="140% 140%"
|
||||||
icon={Globe}
|
position="50% 40%"
|
||||||
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-yb3ch9ok.png?_wi=2"
|
/>
|
||||||
imageAlt="European market map coverage"
|
<TestimonialAboutCard
|
||||||
mediaAnimation="slide-up"
|
tag="COVERAGE"
|
||||||
useInvertedBackground={false}
|
title="13 European markets."
|
||||||
/>
|
description="Local expertise in every region"
|
||||||
|
subdescription="Local tax rules, STR regulations, rental yield data and price history — built in for every market."
|
||||||
|
icon={Globe}
|
||||||
|
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AqVgQeR7OoU3XeDyP8qH8ouFzg/uploaded-1773321908022-yb3ch9ok.png?_wi=2"
|
||||||
|
imageAlt="European market map coverage"
|
||||||
|
mediaAnimation="slide-up"
|
||||||
|
useInvertedBackground={false}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="pricing" data-section="pricing">
|
<div id="pricing" data-section="pricing">
|
||||||
<PricingCardTwo
|
<div className="relative">
|
||||||
title="Simple, transparent pricing."
|
<RadialGradientBackground
|
||||||
description="Founding Member pricing locked in at signup. Price increases after launch."
|
centerColor="var(--background)"
|
||||||
textboxLayout="default"
|
edgeColor="var(--color-background-accent)"
|
||||||
animationType="slide-up"
|
size="135% 135%"
|
||||||
useInvertedBackground={false}
|
position="50% 45%"
|
||||||
plans={[
|
/>
|
||||||
{
|
<PricingCardTwo
|
||||||
id: "1", badge: "Pay per report", price: "€3,20", subtitle: "per analysis", buttons: [{ text: "Join waitlist", href: "#waitlist" }],
|
title="Simple, transparent pricing."
|
||||||
features: [
|
description="Founding Member pricing locked in at signup. Price increases after launch."
|
||||||
"No subscription", "Buy when you need it", "Cancel anytime", "Instant access"
|
textboxLayout="default"
|
||||||
]
|
animationType="slide-up"
|
||||||
},
|
useInvertedBackground={false}
|
||||||
{
|
plans={[
|
||||||
id: "2", badge: "Lite", price: "€29", subtitle: "/month", buttons: [{ text: "Join waitlist", href: "#waitlist" }],
|
{
|
||||||
features: [
|
id: "1", badge: "Pay per report", price: "€3,20", subtitle: "per analysis", buttons: [{ text: "Join waitlist", href: "#waitlist" }],
|
||||||
"50 analyses per month", "All market data", "Email support", "Founding pricing"
|
features: [
|
||||||
]
|
"No subscription", "Buy when you need it", "Cancel anytime", "Instant access"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
id: "3", badge: "Pro", badgeIcon: Sparkles,
|
{
|
||||||
price: "€59", subtitle: "/month", buttons: [
|
id: "2", badge: "Lite", price: "€29", subtitle: "/month", buttons: [{ text: "Join waitlist", href: "#waitlist" }],
|
||||||
{ text: "Get early access", href: "#waitlist" },
|
features: [
|
||||||
{ text: "Contact sales", href: "#contact" }
|
"50 analyses per month", "All market data", "Email support", "Founding pricing"
|
||||||
],
|
]
|
||||||
features: [
|
},
|
||||||
"200 analyses per month", "All features included", "Priority support", "Custom integrations", "Locked founding price"
|
{
|
||||||
]
|
id: "3", badge: "Pro", badgeIcon: Sparkles,
|
||||||
}
|
price: "€59", subtitle: "/month", buttons: [
|
||||||
]}
|
{ text: "Get early access", href: "#waitlist" },
|
||||||
/>
|
{ text: "Contact sales", href: "#contact" }
|
||||||
|
],
|
||||||
|
features: [
|
||||||
|
"200 analyses per month", "All features included", "Priority support", "Custom integrations", "Locked founding price"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="final-cta" data-section="final-cta">
|
<div id="final-cta" data-section="final-cta">
|
||||||
<ContactText
|
<div className="relative">
|
||||||
text="847 investors are already waiting. Join them. Founding Member pricing is limited."
|
<RadialGradientBackground
|
||||||
animationType="entrance-slide"
|
centerColor="var(--background)"
|
||||||
background={{ variant: "animated-grid" }}
|
edgeColor="var(--color-background-accent)"
|
||||||
useInvertedBackground={true}
|
size="130% 130%"
|
||||||
buttons={[
|
position="50% 50%"
|
||||||
{ text: "Join waitlist", href: "#waitlist" },
|
/>
|
||||||
{ text: "Learn more", href: "#features" }
|
<ContactText
|
||||||
]}
|
text="847 investors are already waiting. Join them. Founding Member pricing is limited."
|
||||||
/>
|
animationType="entrance-slide"
|
||||||
|
background={{ variant: "animated-grid" }}
|
||||||
|
useInvertedBackground={true}
|
||||||
|
buttons={[
|
||||||
|
{ text: "Join waitlist", href: "#waitlist" },
|
||||||
|
{ text: "Learn more", href: "#features" }
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="footer" data-section="footer">
|
<div id="footer" data-section="footer">
|
||||||
|
|||||||
Reference in New Issue
Block a user