"use client" import { useEffect, useState } from "react" import axios from "axios" import Link from "next/link" import { Activity, Layers, Network, Server } from "lucide-react" import { AppSidebar } from "@/components/app-sidebar" import { Breadcrumb, BreadcrumbItem, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "@/components/ui/breadcrumb" import { Separator } from "@/components/ui/separator" import { SidebarInset, SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" interface StatsResponse { serverCountNoVMs: number serverCountOnlyVMs: number applicationCount: number onlineApplicationsCount: number } export default function Dashboard() { const [serverCountNoVMs, setServerCountNoVMs] = useState(0) const [serverCountOnlyVMs, setServerCountOnlyVMs] = useState(0) const [applicationCount, setApplicationCount] = useState(0) const [onlineApplicationsCount, setOnlineApplicationsCount] = useState(0) const getStats = async () => { try { const response = await axios.post("/api/dashboard/get", {}) setServerCountNoVMs(response.data.serverCountNoVMs) setServerCountOnlyVMs(response.data.serverCountOnlyVMs) setApplicationCount(response.data.applicationCount) setOnlineApplicationsCount(response.data.onlineApplicationsCount) } catch (error: any) { console.log("Axios error:", error.response?.data) } } useEffect(() => { getStats() }, []) return (
/ Dashboard

Dashboard

Servers Physical and virtual servers overview
{/* Physical Servers */}
{serverCountNoVMs}

Physical Servers

{/* Virtual Machines */}
{serverCountOnlyVMs}

Virtual Servers

Applications
Manage your deployed applications
{applicationCount}

Running applications

Uptime
Monitor your service availability
{onlineApplicationsCount}/{applicationCount}
{applicationCount > 0 ? Math.round((onlineApplicationsCount / applicationCount) * 100) : 0}%
0 ? Math.round((onlineApplicationsCount / applicationCount) * 100) : 0}%`, }} >

Online applications

Network
Manage network configuration
{serverCountNoVMs + serverCountOnlyVMs + applicationCount}

Active connections

) }