Skip to main content
Glama
App.tsx3.48 kB
import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; import Layout from './components/Layout'; import ProtectedRoute, { useAuthStatus } from './components/ProtectedRoute'; import Login from './pages/Login'; import Dashboard from './pages/Dashboard'; import GatewayTokens from './pages/GatewayTokens'; import Logs from './pages/Logs'; import Providers from './pages/Providers'; import Models from './pages/Models'; import Settings from './pages/Settings'; import Analytics from './pages/Analytics'; import Alerts from './pages/Alerts'; import Database from './pages/Database'; import Redis from './pages/Redis'; import OpenRouterInfo from './pages/OpenRouterInfo'; import GPTPlus from './pages/GPTPlus'; import WebTerminal from './pages/WebTerminal'; import Chat from './pages/Chat'; import McpTools from './pages/McpTools'; import Backends from './pages/Backends'; import Mikrotik from './pages/Mikrotik'; function App() { const { authEnabled, isAuthenticated, loading, login, logout, user } = useAuthStatus(); // Show loading spinner while checking auth status if (loading) { return ( <div className="min-h-screen bg-slate-900 flex items-center justify-center"> <div className="text-center"> <div className="w-12 h-12 border-4 border-blue-600 border-t-transparent rounded-full animate-spin mx-auto mb-4" /> <p className="text-slate-400">Loading...</p> </div> </div> ); } return ( <Router> <Routes> {/* Login page - always accessible */} <Route path="/login" element={ isAuthenticated && authEnabled !== false ? ( <Navigate to="/" replace /> ) : ( <Login onLogin={login} /> ) } /> {/* Protected routes */} <Route path="/*" element={ <ProtectedRoute authEnabled={authEnabled ?? false} isAuthenticated={isAuthenticated}> <Layout onLogout={logout} user={user} authEnabled={authEnabled ?? false}> <Routes> <Route path="/" element={<Dashboard />} /> <Route path="/dashboard" element={<Dashboard />} /> <Route path="/chat" element={<Chat />} /> <Route path="/analytics" element={<Analytics />} /> <Route path="/tokens" element={<GatewayTokens />} /> <Route path="/logs" element={<Logs />} /> <Route path="/providers" element={<Providers />} /> <Route path="/models" element={<Models />} /> <Route path="/database" element={<Database />} /> <Route path="/redis" element={<Redis />} /> <Route path="/openrouter" element={<OpenRouterInfo />} /> <Route path="/gpt-plus" element={<GPTPlus />} /> <Route path="/terminal" element={<WebTerminal />} /> <Route path="/mcp-tools" element={<McpTools />} /> <Route path="/mikrotik" element={<Mikrotik />} /> <Route path="/backends" element={<Backends />} /> <Route path="/alerts" element={<Alerts />} /> <Route path="/settings" element={<Settings />} /> </Routes> </Layout> </ProtectedRoute> } /> </Routes> </Router> ); } export default App;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/babasida246/ai-mcp-gateway'

If you have feedback or need assistance with the MCP directory API, please join our Discord server