import React, { useState, useEffect } from 'react'; import { Activity, Box, Container, Server, Clock, TrendingUp, AlertCircle, CheckCircle2, XCircle, } from 'lucide-react'; import { getApps, getSystemInfo } from '../utils/api'; import StatusBadge from '../components/StatusBadge'; function StatCard({ icon: Icon, label, value, color, subtext }) { return (

{label}

{value}

{subtext &&

{subtext}

}
); } export default function DashboardPage({ apps }) { const [systemInfo, setSystemInfo] = useState(null); useEffect(() => { getSystemInfo() .then((res) => setSystemInfo(res.data)) .catch(console.error); }, []); const onlineApps = apps.filter((a) => a.status === 'online').length; const offlineApps = apps.filter((a) => a.status === 'offline').length; const errorApps = apps.filter((a) => a.status === 'error').length; return (
{/* Header */}

Tableau de bord

Vue d'ensemble de l'infrastructure Manus

{/* Stats Grid */}
{/* System Info + Apps Overview */}
{/* System Info */}

Informations système

Serveur 78.138.58.109 (Recette)
Conteneurs actifs {systemInfo?.runningContainers || '...'} /{' '} {systemInfo?.totalContainers || '...'}
Gitea git.recette.santinova-soft.org
Reverse Proxy Traefik + Let's Encrypt
Heure serveur {systemInfo?.serverTime ? new Date(systemInfo.serverTime).toLocaleString('fr-FR') : '...'}
{/* Apps Quick View */}

État des applications

{apps.length === 0 ? (

Aucune application détectée

) : (
{apps.map((app) => (

{app.name}

{app.containerName}

{app.health?.recette?.responseTime && ( {app.health.recette.responseTime}ms )}
))}
)}
); }