From 500f232a54b85e278cc5e683340df627f2007c8e Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Tue, 24 Feb 2026 18:05:23 -0800 Subject: [PATCH] feat: redesign landing page to match rApp ecosystem pattern MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces simple hero+products page with full rApp-style landing: - Ecosystem badge ("Part of the rSpace Ecosystem") - Hero section with gradient text and dual CTA - "How It Works" 3-step cards (Upload → Pick Products → Ship) - 6-feature grid (AI Studio, Spaces, Zero Inventory, Mockups, Payments, Ecosystem) - Featured products section (first 6, with "view all" link) - CTA card with gradient background - Sticky nav with logo badge, cart icon, and compact links - r* ecosystem footer with links to all rApps Co-Authored-By: Claude Opus 4.6 --- frontend/app/layout.tsx | 127 ++++++++-- frontend/app/page.tsx | 540 +++++++++++++++++++++++++++++++++------- 2 files changed, 559 insertions(+), 108 deletions(-) diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx index f30897a..721e65a 100644 --- a/frontend/app/layout.tsx +++ b/frontend/app/layout.tsx @@ -1,6 +1,7 @@ import type { Metadata } from "next"; import { GeistSans } from "geist/font"; import { cookies } from "next/headers"; +import Link from "next/link"; import "./globals.css"; import type { SpaceConfig } from "@/lib/spaces"; import { themeToCSS } from "@/lib/spaces"; @@ -30,6 +31,27 @@ export async function generateMetadata(): Promise { }; } +const ECOSYSTEM_LINKS = [ + { name: "rSpace", href: "https://rspace.online" }, + { name: "rSwag", href: "https://rswag.online", active: true }, + { name: "rWork", href: "https://rwork.online" }, + { name: "rMaps", href: "https://rmaps.online" }, + { name: "rNotes", href: "https://rnotes.online" }, + { name: "rVote", href: "https://rvote.online" }, + { name: "rFunds", href: "https://rfunds.online" }, + { name: "rTrips", href: "https://rtrips.online" }, + { name: "rCart", href: "https://rcart.online" }, + { name: "rWallet", href: "https://rwallet.online" }, + { name: "rFiles", href: "https://rfiles.online" }, + { name: "rTube", href: "https://rtube.online" }, + { name: "rCal", href: "https://rcal.online" }, + { name: "rNetwork", href: "https://rnetwork.online" }, + { name: "rInbox", href: "https://rinbox.online" }, + { name: "rStack", href: "https://rstack.online" }, + { name: "rAuctions", href: "https://rauctions.online" }, + { name: "rPubs", href: "https://rpubs.online" }, +]; + export default async function RootLayout({ children, }: { @@ -40,7 +62,6 @@ export default async function RootLayout({ const space = await getSpaceConfig(spaceId); const name = space?.name || "rSwag"; - const footerText = space?.footer_text || "rSpace. Infrastructure for the commons."; const logoUrl = space?.logo_url; const themeCSS = space?.theme ? themeToCSS(space.theme) : ""; @@ -57,34 +78,94 @@ export default async function RootLayout({
-
-
- - {logoUrl && ( + {/* ── Sticky Nav ──────────────────────────────────── */} +
+
+ + {logoUrl ? ( + ) : ( +
+ rS +
)} - {name} -
-
+ + {/* ── Main Content ────────────────────────────────── */}
{children}
-