- Add /stats Python API endpoint on NUC (CPU, RAM, Swap, Disk, uptime, load avg) - Add VitalsBar component in header showing CPU/RAM/Disk mini bars - Add Overview as new default landing tab with system health, service summary, recent deployments, quick links, and WhyRating project status - Poll system stats every 30s, deployments every 30s on overview tab - Remove standalone WhyRating tab (content moved to Overview) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
export interface SystemStats {
|
|
cpu_percent: number;
|
|
ram_total_mb: number;
|
|
ram_used_mb: number;
|
|
ram_percent: number;
|
|
swap_total_mb: number;
|
|
swap_used_mb: number;
|
|
swap_percent: number;
|
|
disk_total_gb: number;
|
|
disk_used_gb: number;
|
|
disk_percent: number;
|
|
uptime_seconds: number;
|
|
load_avg: [number, number, number];
|
|
}
|
|
|
|
export function getVitalsColor(percent: number): string {
|
|
if (percent >= 90) return 'text-red-500';
|
|
if (percent >= 70) return 'text-amber-500';
|
|
return 'text-emerald-500';
|
|
}
|
|
|
|
export function getVitalsBg(percent: number): string {
|
|
if (percent >= 90) return 'bg-red-500';
|
|
if (percent >= 70) return 'bg-amber-500';
|
|
return 'bg-emerald-500';
|
|
}
|
|
|
|
export function getVitalsTrack(percent: number): string {
|
|
if (percent >= 90) return 'bg-red-500/20';
|
|
if (percent >= 70) return 'bg-amber-500/20';
|
|
return 'bg-emerald-500/20';
|
|
}
|
|
|
|
export function formatUptime(seconds: number): string {
|
|
const days = Math.floor(seconds / 86400);
|
|
const hours = Math.floor((seconds % 86400) / 3600);
|
|
if (days > 0) return `${days}d ${hours}h`;
|
|
const mins = Math.floor((seconds % 3600) / 60);
|
|
return `${hours}h ${mins}m`;
|
|
}
|