From 40e8576ca317ee5e34f50c04b00d7b343bd25ca1 Mon Sep 17 00:00:00 2001 From: Yash Dewasthale Date: Sat, 4 Jul 2026 01:13:58 +0530 Subject: [PATCH 1/2] feat(web): add partnerships section and polished get-started terminal - Add ConcentrateAI partnership with index, detail pages, and home section - Add animated get-started terminal component with copy buttons - Add --ease-out/--ease-in-out CSS custom properties - Update navbar and footer with partnerships link --- .../(pages)/partnerships/[company]/page.tsx | 171 +++++++++++++++++ apps/web/app/(pages)/partnerships/page.tsx | 87 +++++++++ apps/web/app/globals.css | 5 + apps/web/app/page.tsx | 6 + apps/web/components/homepage/footer.tsx | 3 +- apps/web/components/homepage/get-started.tsx | 173 ++++++++++++++++++ apps/web/components/homepage/hero.tsx | 2 +- apps/web/components/homepage/navbar.tsx | 1 + .../homepage/partnerships-section.tsx | 80 ++++++++ apps/web/data/partnerships.ts | 43 +++++ .../public/concentrate-ai-black-symbol.svg | 68 +++++++ 11 files changed, 637 insertions(+), 2 deletions(-) create mode 100644 apps/web/app/(pages)/partnerships/[company]/page.tsx create mode 100644 apps/web/app/(pages)/partnerships/page.tsx create mode 100644 apps/web/components/homepage/get-started.tsx create mode 100644 apps/web/components/homepage/partnerships-section.tsx create mode 100644 apps/web/data/partnerships.ts create mode 100644 apps/web/public/concentrate-ai-black-symbol.svg diff --git a/apps/web/app/(pages)/partnerships/[company]/page.tsx b/apps/web/app/(pages)/partnerships/[company]/page.tsx new file mode 100644 index 0000000..dd143e2 --- /dev/null +++ b/apps/web/app/(pages)/partnerships/[company]/page.tsx @@ -0,0 +1,171 @@ +import type { Metadata } from "next" +import Link from "next/link" +import { notFound } from "next/navigation" +import { ArrowLeft, ArrowUpRight, Quote } from "lucide-react" +import Navbar from "@/components/homepage/navbar" +import Footer from "@/components/homepage/footer" +import { partners } from "@/data/partnerships" + +interface Props { + params: Promise<{ company: string }> +} + +export async function generateStaticParams() { + return partners.map((p) => ({ company: p.slug })) +} + +export async function generateMetadata({ params }: Props): Promise { + const { company } = await params + const partner = partners.find((p) => p.slug === company) + if (!partner) return {} + + return { + title: `Supercode × ${partner.name} — Case Study`, + description: partner.description, + metadataBase: new URL("https://supercli.vercel.app"), + openGraph: { + title: `Supercode × ${partner.name} — Case Study`, + description: partner.description, + url: `https://supercli.vercel.app/partnerships/${partner.slug}`, + siteName: "Supercode", + type: "article", + }, + twitter: { + card: "summary_large_image", + title: `Supercode × ${partner.name} — Case Study`, + description: partner.description, + }, + } +} + +export default async function PartnershipDetailPage({ params }: Props) { + const { company } = await params + const partner = partners.find((p) => p.slug === company) + if (!partner) notFound() + + return ( +
+
+
+ + + +
+ {/* Back link */} + + + All partnerships + + + {/* Hero */} +
+
+ {partner.logoSrc ? ( + {partner.name} + ) : ( + partner.logo + )} +
+ +

+ {partner.name} +

+

+ {partner.tagline} +

+
+ + {/* Stat highlight */} +
+
+ {partner.stat.value} +
+
+ {partner.stat.label} +
+
+ + {/* Quote */} + {/*
+ +
+ “{partner.quote.text}” +
+
+
+ {partner.quote.author} +
+
{partner.quote.role}
+
+
*/} + + {/* Challenge */} +
+

+ $ The Challenge +

+
+ {partner.challenge.map((p, i) => ( +

{p}

+ ))} +
+
+ + {/* Solution */} +
+

+ $ The Solution +

+
+ {partner.solution.map((p, i) => ( +

{p}

+ ))} +
+
+ + {/* Results */} +
+

+ $ The Results +

+
+ {partner.results.map((result, i) => ( +
+
+ {result.metric} +
+

+ {result.text} +

+
+ ))} +
+
+ + {/* CTA */} +
+

+ Ready to ship faster? +

+ + Get started with Supercode + + +
+
+ +
+
+ ) +} diff --git a/apps/web/app/(pages)/partnerships/page.tsx b/apps/web/app/(pages)/partnerships/page.tsx new file mode 100644 index 0000000..5c52008 --- /dev/null +++ b/apps/web/app/(pages)/partnerships/page.tsx @@ -0,0 +1,87 @@ +import type { Metadata } from "next" +import Link from "next/link" +import Navbar from "@/components/homepage/navbar" +import Footer from "@/components/homepage/footer" +import { partners } from "@/data/partnerships" +import { ArrowUpRight } from "lucide-react" + +export const metadata: Metadata = { + title: "Supercode — Partnerships & Case Studies", + description: + "Learn how teams use Supercode to ship faster, improve code quality, and automate their workflows.", + metadataBase: new URL("https://supercli.vercel.app"), + openGraph: { + title: "Supercode — Partnerships & Case Studies", + description: + "Learn how teams use Supercode to ship faster, improve code quality, and automate their workflows.", + url: "https://supercli.vercel.app/partnerships", + siteName: "Supercode", + type: "website", + }, + twitter: { + card: "summary_large_image", + title: "Supercode — Partnerships & Case Studies", + description: + "Learn how teams use Supercode to ship faster, improve code quality, and automate their workflows.", + }, +} + +export default function PartnershipsPage() { + return ( +
+
+
+ + + +
+

+ Partnerships +

+

+ Real teams, real results. See how engineering organizations use + Supercode to ship faster and build better software. +

+ +
+ {partners.map((partner) => ( + +
+
+ {partner.logoSrc ? ( + {partner.name} + ) : ( + partner.logo + )} +
+ +
+ +

+ {partner.name} +

+

+ {partner.description} +

+ +
+
+ {partner.stat.value} +
+
+ {partner.stat.label} +
+
+ + ))} +
+
+ +
+
+ ) +} diff --git a/apps/web/app/globals.css b/apps/web/app/globals.css index 621c37e..a6fa0cd 100644 --- a/apps/web/app/globals.css +++ b/apps/web/app/globals.css @@ -176,6 +176,11 @@ body { letter-spacing: var(--tracking-normal); } +:root { + --ease-out: cubic-bezier(0.23, 1, 0.32, 1); + --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1); +} + @keyframes cursor-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx index ee5f660..2cb60aa 100644 --- a/apps/web/app/page.tsx +++ b/apps/web/app/page.tsx @@ -1,5 +1,7 @@ import Navbar from "@/components/homepage/navbar"; import HeroSection from "@/components/homepage/hero"; +import GetStartedSection from "@/components/homepage/get-started"; +import PartnershipsSection from "@/components/homepage/partnerships-section"; import Footer from "@/components/homepage/footer"; export default async function Home() { @@ -11,6 +13,10 @@ export default async function Home() { + + + +