Add Overview tab with system vitals and replace WhyRating tab
- 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>
This commit is contained in:
40
src/lib/stats.ts
Normal file
40
src/lib/stats.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
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`;
|
||||
}
|
||||
Reference in New Issue
Block a user