"use client" import { useEffect, useState } from "react" import { getApiUrl } from "@/lib/api-config" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import Link from "next/link" import { Music } from "lucide-react" import { Song, PaginatedResponse } from "@/types/models" export default function SongsPage() { const [songs, setSongs] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { fetch(`${getApiUrl()}/songs/?limit=1000`) .then(res => res.json()) .then((data: PaginatedResponse) => { // Handle envelope const songData = data.data || [] // Sort alphabetically const sorted = songData.sort((a, b) => a.title.localeCompare(b.title)) setSongs(sorted) }) .catch(console.error) .finally(() => setLoading(false)) }, []) if (loading) return
Loading songs...
return (

Songs

Every song played, from originals to rare covers.

{songs.map((song) => ( {song.title} {song.original_artist && (

Original by {song.original_artist}

)}
))}
) }