Implement Distributed Regional Monitoring Agent with add form, API details, one-click install, and bash script generation. Refactor: Rename API Documentation to Regional Monitoring

This commit is contained in:
Tola Leng
2025-06-20 22:46:12 +07:00
parent 918a248b8f
commit ea95490f13
13 changed files with 977 additions and 38 deletions
+77 -25
View File
@@ -1,11 +1,11 @@
import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { Toaster } from '@/components/ui/sonner';
import { ThemeProvider } from '@/contexts/ThemeContext';
import { LanguageProvider } from '@/contexts/LanguageContext';
import { SidebarProvider } from '@/contexts/SidebarContext';
import { Toaster } from '@/components/ui/toaster';
import { ErrorBoundary } from '@/components/ErrorBoundary';
// Pages
@@ -13,51 +13,103 @@ import Index from '@/pages/Index';
import Login from '@/pages/Login';
import Dashboard from '@/pages/Dashboard';
import ServiceDetail from '@/pages/ServiceDetail';
import Profile from '@/pages/Profile';
import Settings from '@/pages/Settings';
import OperationalPage from '@/pages/OperationalPage';
import ScheduleIncident from '@/pages/ScheduleIncident';
import Profile from '@/pages/Profile';
import SslDomain from '@/pages/SslDomain';
import ScheduleIncident from '@/pages/ScheduleIncident';
import OperationalPage from '@/pages/OperationalPage';
import PublicStatusPage from '@/pages/PublicStatusPage';
import RegionalMonitoring from '@/pages/RegionalMonitoring';
import NotFound from '@/pages/NotFound';
import { authService } from '@/services/authService';
const queryClient = new QueryClient({
defaultOptions: {
queries: {
retry: 1,
refetchOnWindowFocus: false,
retry: 2,
staleTime: 5 * 60 * 1000, // 5 minutes
},
},
});
// Protected Route wrapper
const ProtectedRoute = ({ children }: { children: React.ReactNode }) => {
const isAuthenticated = authService.isAuthenticated();
return isAuthenticated ? <>{children}</> : <Navigate to="/login" replace />;
};
function App() {
return (
<QueryClientProvider client={queryClient}>
<ThemeProvider>
<LanguageProvider>
<SidebarProvider>
<ErrorBoundary>
<ErrorBoundary>
<QueryClientProvider client={queryClient}>
<ThemeProvider>
<LanguageProvider>
<SidebarProvider>
<Router>
<Routes>
<Route path="/" element={<Index />} />
<Route path="/login" element={<Login />} />
<Route path="/dashboard" element={<Dashboard />} />
<Route path="/service/:id" element={<ServiceDetail />} />
<Route path="/profile" element={<Profile />} />
<Route path="/settings" element={<Settings />} />
<Route path="/operational-page" element={<OperationalPage />} />
<Route path="/schedule-incident" element={<ScheduleIncident />} />
<Route path="/ssl-domain" element={<SslDomain />} />
<Route path="/status/:slug" element={<PublicStatusPage />} />
<Route path="/public/:pageId" element={<PublicStatusPage />} />
{/* Protected Routes */}
<Route path="/dashboard" element={
<ProtectedRoute>
<Dashboard />
</ProtectedRoute>
} />
<Route path="/service/:id" element={
<ProtectedRoute>
<ServiceDetail />
</ProtectedRoute>
} />
<Route path="/settings" element={
<ProtectedRoute>
<Settings />
</ProtectedRoute>
} />
<Route path="/profile" element={
<ProtectedRoute>
<Profile />
</ProtectedRoute>
} />
<Route path="/ssl-domain" element={
<ProtectedRoute>
<SslDomain />
</ProtectedRoute>
} />
<Route path="/schedule-incident" element={
<ProtectedRoute>
<ScheduleIncident />
</ProtectedRoute>
} />
<Route path="/operational-page" element={
<ProtectedRoute>
<OperationalPage />
</ProtectedRoute>
} />
<Route path="/regional-monitoring" element={
<ProtectedRoute>
<RegionalMonitoring />
</ProtectedRoute>
} />
<Route path="*" element={<NotFound />} />
</Routes>
</Router>
<Toaster />
</ErrorBoundary>
</SidebarProvider>
</LanguageProvider>
</ThemeProvider>
</QueryClientProvider>
</SidebarProvider>
</LanguageProvider>
</ThemeProvider>
</QueryClientProvider>
</ErrorBoundary>
);
}