// app/dashboard/page.tsx // Dashboard - navbar/footer now in layout.tsx import { query } from '@/lib/db'; import { DriverWithServer } from '@/types/racing'; import { UsersIcon, ServerIcon, ActivityIcon, MapPinIcon, FlagIcon, LiveDotIcon } from '@/components/ui/icons'; async function getConnectedDrivers(): Promise { const sql = ` SELECT u.driver_guid, u.driver_name, u.driver_team, u.car_model, u.car_skin, u.user_rank, u.laps_completed, s.server_id, s.server_name, s.server_track, s.session_flag, s.connected_players FROM users u INNER JOIN servers s ON u.current_server = s.server_id WHERE u.is_connect = true ORDER BY s.server_id, u.user_rank ASC `; const rows = await query(sql); return rows.map((row: any) => ({ driver_guid: row.driver_guid, driver_name: row.driver_name, driver_team: row.driver_team, car_model: row.car_model, car_skin: row.car_skin, cuts_alltime: 0, contacts_alltime: 0, laps_completed: row.laps_completed, user_rank: row.user_rank, is_connect: true, is_loading: false, current_server: row.server_id, created_at: new Date(), server: { server_id: row.server_id, server_name: row.server_name, server_track: row.server_track, session_type: 0, session_flag: row.session_flag, connected_players: row.connected_players, }, })); } export default async function DashboardPage() { const drivers = await getConnectedDrivers(); const serverGroups = drivers.reduce((acc, driver) => { const serverId = driver.server?.server_id ?? 0; if (!acc[serverId]) { acc[serverId] = []; } acc[serverId].push(driver); return acc; }, {} as Record); return ( <> {/* Hero */}
LIVE SYSTEM

LIVE DASHBOARD

Real-time telemetry and session monitoring across all OpenWheels Racing infrastructure

{/* Stats Grid */}
} /> } /> sum + d.laps_completed, 0)} icon={} />
{/* Server Listings */}
{Object.keys(serverGroups).length === 0 ? (

NO ACTIVE SESSIONS

System idle — waiting for connections

) : ( Object.entries(serverGroups).map(([serverId, serverDrivers]) => { const server = serverDrivers[0].server; return (
{/* Server Header */}
LIVE
ID: {server?.server_id}

{server?.server_name}

{server?.server_track}
{server?.session_flag}
{server?.connected_players} CONNECTED
{/* Driver Table */}
{serverDrivers.map((driver, index) => ( ))}
POS DRIVER TEAM CAR RANK LAPS
{String(index + 1).padStart(2, '0')} {driver.driver_name} {driver.driver_team || '—'} {driver.car_model} {driver.user_rank} {driver.laps_completed}
); }) )}
); } function StatCard({ title, value, icon }: { title: string; value: number; icon: React.ReactNode; }) { return (
{title}
{icon}
{value.toLocaleString()}
); }