import Link from "next/link" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { getApiUrl } from "@/lib/api-config" interface Vertical { id: number name: string slug: string description: string | null } interface Scene { id: number name: string slug: string description: string | null } async function getVerticals(): Promise { try { const res = await fetch(`${getApiUrl()}/verticals`, { next: { revalidate: 60 } }) if (!res.ok) return [] return res.json() } catch { return [] } } async function getScenes(): Promise { try { const res = await fetch(`${getApiUrl()}/verticals/scenes`, { next: { revalidate: 60 } }) if (!res.ok) return [] return res.json() } catch { return [] } } export default async function HomePage() { const [verticals, scenes] = await Promise.all([getVerticals(), getScenes()]) return (
{/* Hero Section */}

Fediversion

The unified platform for the entire jam scene. One account, all your favorite bands.

{/* Scenes Section */} {scenes.length > 0 && (

Browse by Scene

{scenes.map((scene) => (
{scene.name}
{scene.description && (
{scene.description}
)} ))}
)} {/* Bands Grid */}

Featured Bands

{verticals.map((vertical) => ( {vertical.name} {vertical.description && ( {vertical.description} )}
))}
{/* Stats Section */}

Join the Community

Track shows, rate performances, discover connections across bands.

{verticals.length}
Bands
{scenes.length}
Scenes
1
Account
) }