Dashboard
Welcome back, {session?.user?.name}
Total Filings
{stats.filings}
Portfolio Value
${stats.portfolioValue.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}
Watchlist
{stats.watchlist}
'use client'; import { useSession } from 'next-auth/react'; import { useRouter } from 'next/navigation'; import { useEffect, useState } from 'react'; import Link from 'next/link'; export default function Home() { const { data: session, status } = useSession(); const router = useRouter(); const [stats, setStats] = useState({ filings: 0, portfolioValue: 0, watchlist: 0 }); useEffect(() => { if (status === 'unauthenticated') { router.push('/auth/signin'); return; } if (session?.user) { fetchStats(session.user.id); } }, [session, status, router]); const fetchStats = async (userId: string) => { try { const [portfolioRes, watchlistRes, filingsRes] = await Promise.all([ fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/portfolio/${userId}/summary`), fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/watchlist/${userId}`), fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/filings`) ]); const portfolioData = await portfolioRes.json(); const watchlistData = await watchlistRes.json(); const filingsData = await filingsRes.json(); setStats({ filings: filingsData.length || 0, portfolioValue: portfolioData.total_value || 0, watchlist: watchlistData.length || 0 }); } catch (error) { console.error('Error fetching stats:', error); } }; return (
Welcome back, {session?.user?.name}
{stats.filings}
${stats.portfolioValue.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}
{stats.watchlist}