'use client'; import { useState } from 'react'; import { Activity, Server, FileText, Settings } from 'lucide-react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { SystemStatus } from '@/components/process/SystemStatus'; import { ProcessStateChart } from '@/components/charts/ProcessStateChart'; import { ProcessUptimeChart } from '@/components/charts/ProcessUptimeChart'; import { GroupStatistics } from '@/components/charts/GroupStatistics'; import { ConnectionStatus } from '@/components/ui/ConnectionStatus'; import { useProcesses } from '@/lib/hooks/useSupervisor'; import { useEventSource } from '@/lib/hooks/useEventSource'; import { ProcessState } from '@/lib/supervisor/types'; export default function HomePage() { const [realtimeEnabled] = useState(true); const { data: processes, isLoading, isError, refetch } = useProcesses(); // Real-time updates via Server-Sent Events const { status: connectionStatus, reconnectAttempts, reconnect } = useEventSource( '/api/supervisor/events', { enabled: realtimeEnabled && !isLoading && !isError, onMessage: (message) => { if (message.event === 'process-update') { refetch(); } }, } ); const stats = { total: processes?.length ?? 0, running: processes?.filter((p) => p.state === ProcessState.RUNNING).length ?? 0, stopped: processes?.filter((p) => p.state === ProcessState.STOPPED || p.state === ProcessState.EXITED).length ?? 0, fatal: processes?.filter((p) => p.state === ProcessState.FATAL).length ?? 0, }; return (
Monitor and manage your processes in real-time
All configured processes
Active processes
Inactive processes
Failed processes