Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { CTA } from "@/components/cta";
import { Footer } from "@/components/footer";
import { Testimonial } from "@/components/testimonial";
import { Faq } from "@/components/faq";
import { ReviewVelocity } from "@/components/review-velocity";

export default function Home() {
return (
Expand All @@ -14,6 +15,7 @@ export default function Home() {
<Hero />
<LogoList />
<LookingFor />
<ReviewVelocity />
<Testimonial />
<CTA />
<Faq />
Expand Down
82 changes: 82 additions & 0 deletions components/review-velocity.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
"use client";

import {
Card,
CardDescription,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { FADE_UP_ANIMATION_VARIANTS } from "@/lib/framer-variants";
import { motion } from "framer-motion";

const reviewSignals = [
{
title: "Clear requirements",
description:
"Define the exact deliverable, proof format, and acceptance checks before submissions start.",
},
{
title: "Reviewable proof",
description:
"Ask contributors for links, screenshots, demos, or pull requests that let creators verify work quickly.",
},
{
title: "Active cadence",
description:
"Set review expectations so contributors know when approvals, questions, or rejections should happen.",
},
{
title: "Approval readiness",
description:
"Keep payout and creator decisions ready before a task builds a long queue of unclear submissions.",
},
];

export function ReviewVelocity() {
return (
<motion.section
initial="hidden"
whileInView="show"
viewport={{ once: true }}
variants={{
hidden: {},
show: {
transition: {
staggerChildren: 0.15,
},
},
}}
className="relative max-w-6xl mx-auto w-full py-16 sm:py-24 px-4 sm:px-6 border-y"
>
<motion.div
variants={FADE_UP_ANIMATION_VARIANTS}
className="max-w-3xl mx-auto text-center"
>
<p className="text-sm font-medium text-muted-foreground">
Review velocity
</p>
<h2 className="mt-2 text-3xl sm:text-4xl font-semibold">
Make every submission easier to approve
</h2>
<p className="mt-3 text-muted-foreground">
Funded work moves faster when creators set clear expectations and
contributors know what proof makes a submission ready for review.
</p>
</motion.div>

<motion.div
variants={FADE_UP_ANIMATION_VARIANTS}
className="grid sm:grid-cols-2 lg:grid-cols-4 gap-4 mt-8"
>
{reviewSignals.map((signal) => (
<Card key={signal.title}>
<CardHeader>
<CardTitle className="text-lg">{signal.title}</CardTitle>
<CardDescription>{signal.description}</CardDescription>
</CardHeader>
</Card>
))}
</motion.div>
</motion.section>
);
}