diff --git a/src/app/page.tsx b/src/app/page.tsx
index a221e1c..8f44146 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,7 +1,14 @@
import Hero from "@/features/landing-page/hero";
import { ValuePropositionSection } from "@/features/landing-page/value-proposition";
import { ThreeStepExplainerSection } from "@/features/landing-page/three-step-explainer";
+import { FeaturesGridSection } from "@/features/landing-page/features-grid";
+import { StatsSection } from "@/features/landing-page/stats";
import { CreateSurvey } from "@/features/landing-page/create-survey";
+import { TrustedBySection } from "@/features/landing-page/trusted-by";
+import { TestimonialsSection } from "@/features/landing-page/testimonials";
+import { PricingSection } from "@/features/landing-page/pricing";
+import { FaqSection } from "@/features/landing-page/faq-section";
+import { CtaBanner } from "@/features/landing-page/cta-banner";
import Footer from "@/features/landing-page/footer";
import Navbar from "@/features/landing-page/navbar";
import SmoothScrollWrapper from "@/components/smooth-scroll-wrapper";
@@ -12,9 +19,16 @@ export default function Home() {
diff --git a/src/features/landing-page/cta-banner.tsx b/src/features/landing-page/cta-banner.tsx
new file mode 100644
index 0000000..9d9affb
--- /dev/null
+++ b/src/features/landing-page/cta-banner.tsx
@@ -0,0 +1,83 @@
+"use client";
+
+import { motion, type Variants } from "framer-motion";
+import Button from "@/components/button";
+import Link from "next/link";
+
+const containerVariants: Variants = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: {
+ staggerChildren: 0.2,
+ delayChildren: 0.1,
+ },
+ },
+};
+
+const itemVariants: Variants = {
+ hidden: { opacity: 0, y: 30 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ transition: { duration: 0.7, ease: "easeOut" },
+ },
+};
+
+export const CtaBanner = () => {
+ return (
+
+
+
+
+
+ Ready to Start{" "}
+ Earning?
+
+
+
+ Join thousands of participants and researchers on the leading
+ decentralized survey platform. Start earning STRK tokens today.
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
diff --git a/src/features/landing-page/faq-section.tsx b/src/features/landing-page/faq-section.tsx
new file mode 100644
index 0000000..7932077
--- /dev/null
+++ b/src/features/landing-page/faq-section.tsx
@@ -0,0 +1,124 @@
+"use client";
+
+import { useState } from "react";
+import { motion, AnimatePresence, type Variants } from "framer-motion";
+import { ChevronDown } from "lucide-react";
+
+const faqs = [
+ {
+ question: "What is Survexa?",
+ answer:
+ "Survexa is a decentralized survey platform built on Starknet. It connects researchers with participants, rewarding respondents with STRK tokens for sharing their opinions and insights.",
+ },
+ {
+ question: "How do I earn STRK tokens?",
+ answer:
+ "Simply browse available surveys, complete them with thoughtful responses, and receive STRK tokens directly to your wallet. The reward amount varies based on survey length and complexity.",
+ },
+ {
+ question: "How do I create a survey?",
+ answer:
+ "Sign up as a researcher, use our intuitive survey builder to create your questions, set your reward budget, and publish. Our platform handles participant matching and token distribution automatically.",
+ },
+ {
+ question: "Is my data secure?",
+ answer:
+ "Yes. Survexa leverages blockchain technology for transparency while keeping individual responses anonymous. Your data is encrypted and you maintain full control over your information.",
+ },
+ {
+ question: "What types of surveys can I create?",
+ answer:
+ "You can create multiple-choice, open-ended, rating scale, and matrix surveys. Our custom templates make it easy to get started quickly for any research need.",
+ },
+];
+
+const containerVariants: Variants = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: {
+ staggerChildren: 0.1,
+ delayChildren: 0.2,
+ },
+ },
+};
+
+const itemVariants: Variants = {
+ hidden: { opacity: 0, y: 20 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ transition: { duration: 0.5, ease: "easeOut" },
+ },
+};
+
+export const FaqSection = () => {
+ const [openIndex, setOpenIndex] = useState(null);
+
+ return (
+
+
+
+
+ Frequently Asked{" "}
+ Questions
+
+
+ Everything you need to know about Survexa.
+
+
+
+
+ {faqs.map((faq, index) => (
+
+
+
+ {openIndex === index && (
+
+
+
+ )}
+
+
+ ))}
+
+
+
+ );
+};
diff --git a/src/features/landing-page/features-grid.tsx b/src/features/landing-page/features-grid.tsx
new file mode 100644
index 0000000..61b1571
--- /dev/null
+++ b/src/features/landing-page/features-grid.tsx
@@ -0,0 +1,135 @@
+"use client";
+
+import { motion, type Variants } from "framer-motion";
+import {
+ BarChart3Icon,
+ ShieldCheckIcon,
+ ZapIcon,
+ UsersIcon,
+ GlobeIcon,
+ BrainCircuitIcon,
+} from "lucide-react";
+
+const features = [
+ {
+ icon: ZapIcon,
+ title: "Lightning Fast Setup",
+ description:
+ "Create and launch surveys in minutes with our intuitive builder. No coding required.",
+ },
+ {
+ icon: BarChart3Icon,
+ title: "Real-Time Analytics",
+ description:
+ "Track responses as they come in with live dashboards, charts, and exportable reports.",
+ },
+ {
+ icon: ShieldCheckIcon,
+ title: "Blockchain Verified",
+ description:
+ "Every response is verified on-chain, ensuring data integrity and preventing fraud.",
+ },
+ {
+ icon: UsersIcon,
+ title: "Targeted Audiences",
+ description:
+ "Reach the right respondents with smart demographic and interest-based targeting.",
+ },
+ {
+ icon: GlobeIcon,
+ title: "Global Reach",
+ description:
+ "Access participants worldwide with multi-language support and localized surveys.",
+ },
+ {
+ icon: BrainCircuitIcon,
+ title: "AI-Powered Insights",
+ description:
+ "Get intelligent summaries and trend analysis powered by advanced machine learning.",
+ },
+];
+
+const containerVariants: Variants = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: {
+ staggerChildren: 0.15,
+ delayChildren: 0.1,
+ },
+ },
+};
+
+const cardVariants: Variants = {
+ hidden: { opacity: 0, y: 30, scale: 0.95 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ scale: 1,
+ transition: { duration: 0.5, ease: "easeOut" },
+ },
+};
+
+const headerVariants: Variants = {
+ hidden: { opacity: 0, y: 30 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ transition: { duration: 0.8, ease: "easeOut" },
+ },
+};
+
+export const FeaturesGridSection = () => {
+ return (
+
+
+
+
+ Everything You Need to{" "}
+ Succeed
+
+
+ Powerful features designed to help you create better surveys and
+ gather meaningful insights.
+
+
+
+
+ {features.map((feature, index) => {
+ const Icon = feature.icon;
+ return (
+
+
+
+
+
+ {feature.title}
+
+
+ {feature.description}
+
+
+ );
+ })}
+
+
+
+ );
+};
diff --git a/src/features/landing-page/pricing.tsx b/src/features/landing-page/pricing.tsx
new file mode 100644
index 0000000..4c17ade
--- /dev/null
+++ b/src/features/landing-page/pricing.tsx
@@ -0,0 +1,192 @@
+"use client";
+
+import { motion, type Variants } from "framer-motion";
+import { CheckIcon } from "lucide-react";
+import Link from "next/link";
+
+const plans = [
+ {
+ name: "Free",
+ price: "0",
+ period: "forever",
+ description: "Perfect for individuals getting started with surveys.",
+ features: [
+ "Up to 3 active surveys",
+ "50 responses per survey",
+ "Basic analytics",
+ "Community support",
+ "STRK token rewards",
+ ],
+ cta: "Get Started",
+ highlighted: false,
+ },
+ {
+ name: "Pro",
+ price: "29",
+ period: "per month",
+ description: "For teams who need advanced research capabilities.",
+ features: [
+ "Unlimited active surveys",
+ "Unlimited responses",
+ "Advanced analytics & exports",
+ "Priority support",
+ "Enhanced STRK rewards",
+ "Custom branding",
+ "Team collaboration",
+ ],
+ cta: "Start Free Trial",
+ highlighted: true,
+ },
+ {
+ name: "Enterprise",
+ price: "Custom",
+ period: "",
+ description: "Tailored solutions for large organizations.",
+ features: [
+ "Everything in Pro",
+ "Dedicated account manager",
+ "Custom integrations",
+ "SSO & advanced security",
+ "SLA guarantees",
+ "On-premise deployment",
+ "API access",
+ ],
+ cta: "Contact Sales",
+ highlighted: false,
+ },
+];
+
+const containerVariants: Variants = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: {
+ staggerChildren: 0.2,
+ delayChildren: 0.1,
+ },
+ },
+};
+
+const cardVariants: Variants = {
+ hidden: { opacity: 0, y: 40, scale: 0.95 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ scale: 1,
+ transition: { duration: 0.6, ease: "easeOut" },
+ },
+};
+
+const headerVariants: Variants = {
+ hidden: { opacity: 0, y: 30 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ transition: { duration: 0.8, ease: "easeOut" },
+ },
+};
+
+export const PricingSection = () => {
+ return (
+
+
+
+
+
+
+ Simple, Transparent{" "}
+ Pricing
+
+
+ Choose the plan that fits your research needs. All plans include
+ STRK token rewards for participants.
+
+
+
+
+ {plans.map((plan, index) => (
+
+ {plan.highlighted && (
+
+ Most Popular
+
+ )}
+
+
+
+ {plan.name}
+
+
+ {plan.price !== "Custom" && (
+ $
+ )}
+
+ {plan.price}
+
+ {plan.period && (
+
+ /{plan.period}
+
+ )}
+
+
+ {plan.description}
+
+
+
+
+ {plan.features.map((feature, i) => (
+ -
+
+ {feature}
+
+ ))}
+
+
+
+
+
+
+ ))}
+
+
+
+ );
+};
diff --git a/src/features/landing-page/stats.tsx b/src/features/landing-page/stats.tsx
new file mode 100644
index 0000000..56b2805
--- /dev/null
+++ b/src/features/landing-page/stats.tsx
@@ -0,0 +1,88 @@
+"use client";
+
+import { motion, type Variants } from "framer-motion";
+
+const stats = [
+ {
+ value: "50K+",
+ label: "Active Participants",
+ description: "Engaged survey respondents earning rewards",
+ },
+ {
+ value: "12K+",
+ label: "Surveys Completed",
+ description: "Research projects successfully delivered",
+ },
+ {
+ value: "98%",
+ label: "Completion Rate",
+ description: "Industry-leading survey finish rate",
+ },
+ {
+ value: "150K+",
+ label: "STRK Distributed",
+ description: "Tokens rewarded to participants",
+ },
+];
+
+const containerVariants: Variants = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: {
+ staggerChildren: 0.15,
+ delayChildren: 0.1,
+ },
+ },
+};
+
+const itemVariants: Variants = {
+ hidden: { opacity: 0, y: 30, scale: 0.9 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ scale: 1,
+ transition: { duration: 0.5, ease: "easeOut" },
+ },
+};
+
+export const StatsSection = () => {
+ return (
+
+
+
+ {stats.map((stat, index) => (
+
+
+ {stat.value}
+
+
+ {stat.label}
+
+
+ {stat.description}
+
+
+ ))}
+
+
+
+ );
+};
diff --git a/src/features/landing-page/testimonials.tsx b/src/features/landing-page/testimonials.tsx
new file mode 100644
index 0000000..be60320
--- /dev/null
+++ b/src/features/landing-page/testimonials.tsx
@@ -0,0 +1,148 @@
+"use client";
+
+import { motion, type Variants } from "framer-motion";
+import Image from "next/image";
+
+const testimonials = [
+ {
+ name: "Sarah Chen",
+ role: "Product Manager",
+ avatar: "/step-1.jpg",
+ quote:
+ "Survexa transformed how we gather customer feedback. The STRK token rewards drive real engagement from participants.",
+ rating: 5,
+ },
+ {
+ name: "Alex Rodriguez",
+ role: "UX Researcher",
+ avatar: "/step-2.jpg",
+ quote:
+ "The quality of responses we get through Survexa is incredible. Incentivized surveys truly make a difference.",
+ rating: 5,
+ },
+ {
+ name: "Maya Patel",
+ role: "Marketing Director",
+ avatar: "/step-3.jpg",
+ quote:
+ "We cut our research costs by 60% while getting faster, more reliable data. Survexa is a game-changer.",
+ rating: 5,
+ },
+];
+
+const containerVariants: Variants = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: {
+ staggerChildren: 0.2,
+ delayChildren: 0.1,
+ },
+ },
+};
+
+const cardVariants: Variants = {
+ hidden: { opacity: 0, y: 40, scale: 0.95 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ scale: 1,
+ transition: { duration: 0.6, ease: "easeOut" },
+ },
+};
+
+const headerVariants: Variants = {
+ hidden: { opacity: 0, y: 30 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ transition: { duration: 0.8, ease: "easeOut" },
+ },
+};
+
+export const TestimonialsSection = () => {
+ return (
+
+
+
+
+
+
+ Trusted by Researchers{" "}
+ Worldwide
+
+
+ See what our community has to say about their experience with
+ Survexa.
+
+
+
+
+ {testimonials.map((testimonial, index) => (
+
+
+ {Array.from({ length: testimonial.rating }).map((_, i) => (
+
+ ))}
+
+
+
+ “{testimonial.quote}”
+
+
+
+
+
+
+
+
+ {testimonial.name}
+
+
{testimonial.role}
+
+
+
+ ))}
+
+
+
+ );
+};
diff --git a/src/features/landing-page/trusted-by.tsx b/src/features/landing-page/trusted-by.tsx
new file mode 100644
index 0000000..d01589a
--- /dev/null
+++ b/src/features/landing-page/trusted-by.tsx
@@ -0,0 +1,85 @@
+"use client";
+
+import { motion, type Variants } from "framer-motion";
+
+const partners = [
+ { name: "Starknet", abbr: "SN" },
+ { name: "Ethereum", abbr: "ETH" },
+ { name: "OpenAI", abbr: "OA" },
+ { name: "Google Research", abbr: "GR" },
+ { name: "McKinsey", abbr: "MK" },
+ { name: "Deloitte", abbr: "DL" },
+];
+
+const containerVariants: Variants = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: {
+ staggerChildren: 0.1,
+ delayChildren: 0.2,
+ },
+ },
+};
+
+const itemVariants: Variants = {
+ hidden: { opacity: 0, y: 20 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ transition: { duration: 0.5, ease: "easeOut" },
+ },
+};
+
+const headerVariants: Variants = {
+ hidden: { opacity: 0, y: 20 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ transition: { duration: 0.6, ease: "easeOut" },
+ },
+};
+
+export const TrustedBySection = () => {
+ return (
+
+
+
+ Trusted by leading organizations
+
+
+
+ {partners.map((partner, index) => (
+
+
+
+ {partner.abbr}
+
+
+ {partner.name}
+
+
+
+ ))}
+
+
+
+ );
+};