chore: rebrand project to GopherGate
Updated all naming from LLM Proxy to GopherGate. Implemented new CSS-based branding and updated Go module/binary naming.
This commit is contained in:
@@ -3,50 +3,38 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>LLM Proxy Gateway - Admin Dashboard</title>
|
||||
<title>GopherGate - Admin Dashboard</title>
|
||||
<link rel="stylesheet" href="/css/dashboard.css?v=11">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link rel="icon" href="img/logo-icon.png" type="image/png" sizes="any">
|
||||
<link rel="apple-touch-icon" href="img/logo-icon.png">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/luxon@3.4.4/build/global/luxon.min.js"></script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Login Screen -->
|
||||
<div id="login-screen" class="login-container">
|
||||
<div class="login-card">
|
||||
<div class="login-header">
|
||||
<i class="fas fa-terminal login-logo-fallback"></i>
|
||||
<h1>LLM Proxy Gateway</h1>
|
||||
<p class="login-subtitle">Admin Dashboard</p>
|
||||
<body class="gruvbox-dark">
|
||||
<!-- Auth Page -->
|
||||
<div id="auth-page" class="auth-container">
|
||||
<div class="auth-card">
|
||||
<div class="auth-header">
|
||||
<div class="auth-logo">
|
||||
<div class="logo-icon-container">
|
||||
<span class="logo-icon-text">GG</span>
|
||||
</div>
|
||||
</div>
|
||||
<h1>GopherGate</h1>
|
||||
<p>Secure LLM Gateway & Management</p>
|
||||
</div>
|
||||
<form id="login-form" class="login-form" onsubmit="event.preventDefault();">
|
||||
<div class="form-group">
|
||||
<input type="text" id="username" name="username" placeholder=" " required>
|
||||
<label for="username">
|
||||
<i class="fas fa-user"></i> Username
|
||||
</label>
|
||||
<form id="login-form">
|
||||
<div class="form-control">
|
||||
<label for="username">Username</label>
|
||||
<input type="text" id="username" name="username" required autocomplete="username">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="password" id="password" name="password" placeholder=" " required>
|
||||
<label for="password">
|
||||
<i class="fas fa-lock"></i> Password
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="login-btn">
|
||||
<i class="fas fa-sign-in-alt"></i> Sign In
|
||||
</button>
|
||||
</div>
|
||||
<div class="login-footer">
|
||||
<p>Default: <code>admin</code> / <code>admin</code> (change in Settings > Security)</p>
|
||||
<div class="form-control">
|
||||
<label for="password">Password</label>
|
||||
<input type="password" id="password" name="password" required autocomplete="current-password">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary btn-block">Sign In</button>
|
||||
</form>
|
||||
<div id="login-error" class="error-message" style="display: none;">
|
||||
<i class="fas fa-exclamation-circle"></i>
|
||||
<span>Invalid credentials. Please try again.</span>
|
||||
</div>
|
||||
<div id="login-error" class="error-message" style="display: none;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -56,9 +44,10 @@
|
||||
<nav class="sidebar">
|
||||
<div class="sidebar-header">
|
||||
<div class="logo">
|
||||
<img src="img/logo-icon.png" alt="LLM Proxy" class="sidebar-logo" onerror="this.style.display='none'; this.nextElementSibling.style.display='inline-block';">
|
||||
<i class="fas fa-shield-alt logo-fallback" style="display: none;"></i>
|
||||
<span>LLM Proxy</span>
|
||||
<div class="logo-icon-container small">
|
||||
<span class="logo-icon-text">GG</span>
|
||||
</div>
|
||||
<span>GopherGate</span>
|
||||
</div>
|
||||
<button class="sidebar-toggle" id="sidebar-toggle">
|
||||
<i class="fas fa-bars"></i>
|
||||
@@ -68,68 +57,74 @@
|
||||
<div class="sidebar-menu">
|
||||
<div class="menu-section">
|
||||
<h3 class="menu-title">MAIN</h3>
|
||||
<a href="#overview" class="menu-item active" data-page="overview" data-tooltip="Dashboard Overview">
|
||||
<i class="fas fa-th-large"></i>
|
||||
<span>Overview</span>
|
||||
</a>
|
||||
<a href="#analytics" class="menu-item" data-page="analytics" data-tooltip="Usage Analytics">
|
||||
<i class="fas fa-chart-line"></i>
|
||||
<span>Analytics</span>
|
||||
</a>
|
||||
<a href="#costs" class="menu-item" data-page="costs" data-tooltip="Cost Tracking">
|
||||
<i class="fas fa-dollar-sign"></i>
|
||||
<span>Cost Management</span>
|
||||
</a>
|
||||
<ul class="menu-list">
|
||||
<li class="menu-item active" data-page="overview">
|
||||
<i class="fas fa-th-large"></i>
|
||||
<span>Overview</span>
|
||||
</li>
|
||||
<li class="menu-item" data-page="analytics">
|
||||
<i class="fas fa-chart-bar"></i>
|
||||
<span>Analytics</span>
|
||||
</li>
|
||||
<li class="menu-item" data-page="costs">
|
||||
<i class="fas fa-dollar-sign"></i>
|
||||
<span>Costs & Billing</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="menu-section">
|
||||
<h3 class="menu-title">MANAGEMENT</h3>
|
||||
<a href="#clients" class="menu-item" data-page="clients" data-tooltip="API Clients">
|
||||
<i class="fas fa-users"></i>
|
||||
<span>Client Management</span>
|
||||
</a>
|
||||
<a href="#providers" class="menu-item" data-page="providers" data-tooltip="Model Providers">
|
||||
<i class="fas fa-server"></i>
|
||||
<span>Providers</span>
|
||||
</a>
|
||||
<a href="#models" class="menu-item" data-page="models" data-tooltip="Manage Models">
|
||||
<i class="fas fa-cube"></i>
|
||||
<span>Models</span>
|
||||
</a>
|
||||
<a href="#monitoring" class="menu-item" data-page="monitoring" data-tooltip="Live Monitoring">
|
||||
<i class="fas fa-heartbeat"></i>
|
||||
<span>Real-time Monitoring</span>
|
||||
</a>
|
||||
<ul class="menu-list">
|
||||
<li class="menu-item" data-page="clients">
|
||||
<i class="fas fa-users"></i>
|
||||
<span>Clients</span>
|
||||
</li>
|
||||
<li class="menu-item" data-page="providers">
|
||||
<i class="fas fa-server"></i>
|
||||
<span>Providers</span>
|
||||
</li>
|
||||
<li class="menu-item" data-page="models">
|
||||
<i class="fas fa-brain"></i>
|
||||
<span>Models</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="menu-section">
|
||||
<h3 class="menu-title">SYSTEM</h3>
|
||||
<a href="#users" class="menu-item admin-only" data-page="users" data-tooltip="User Accounts">
|
||||
<i class="fas fa-user-shield"></i>
|
||||
<span>User Management</span>
|
||||
</a>
|
||||
<a href="#settings" class="menu-item admin-only" data-page="settings" data-tooltip="System Settings">
|
||||
<i class="fas fa-cog"></i>
|
||||
<span>Settings</span>
|
||||
</a>
|
||||
<a href="#logs" class="menu-item" data-page="logs" data-tooltip="System Logs">
|
||||
<i class="fas fa-list-alt"></i>
|
||||
<span>System Logs</span>
|
||||
</a>
|
||||
<ul class="menu-list">
|
||||
<li class="menu-item" data-page="monitoring">
|
||||
<i class="fas fa-activity"></i>
|
||||
<span>Live Monitoring</span>
|
||||
</li>
|
||||
<li class="menu-item" data-page="logs">
|
||||
<i class="fas fa-list-alt"></i>
|
||||
<span>Logs</span>
|
||||
</li>
|
||||
<li class="menu-item" data-page="users">
|
||||
<i class="fas fa-user-shield"></i>
|
||||
<span>Admin Users</span>
|
||||
</li>
|
||||
<li class="menu-item" data-page="settings">
|
||||
<i class="fas fa-cog"></i>
|
||||
<span>Settings</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-footer">
|
||||
<div class="user-info">
|
||||
<div class="user-avatar">
|
||||
<i class="fas fa-user-circle"></i>
|
||||
<i class="fas fa-user"></i>
|
||||
</div>
|
||||
<div class="user-details">
|
||||
<span class="user-name">Loading...</span>
|
||||
<span class="user-role">...</span>
|
||||
<div class="user-name" id="display-username">Admin</div>
|
||||
<div class="user-role" id="display-role">Administrator</div>
|
||||
</div>
|
||||
</div>
|
||||
<button class="logout-btn" id="logout-btn" title="Logout">
|
||||
<button id="logout-btn" class="btn-icon" title="Logout">
|
||||
<i class="fas fa-sign-out-alt"></i>
|
||||
</button>
|
||||
</div>
|
||||
@@ -137,43 +132,40 @@
|
||||
|
||||
<!-- Main Content -->
|
||||
<main class="main-content">
|
||||
<!-- Top Navigation -->
|
||||
<header class="top-nav">
|
||||
<div class="nav-left">
|
||||
<h1 class="page-title" id="page-title">Dashboard Overview</h1>
|
||||
<header class="top-bar">
|
||||
<div class="page-title">
|
||||
<h2 id="current-page-title">Overview</h2>
|
||||
</div>
|
||||
<div class="nav-right">
|
||||
<div class="nav-item" id="ws-status-nav" title="WebSocket Connection Status">
|
||||
<div class="ws-dot"></div>
|
||||
<span class="ws-text">Connecting...</span>
|
||||
<div class="top-bar-actions">
|
||||
<div id="connection-status" class="status-indicator">
|
||||
<span class="status-dot"></span>
|
||||
<span class="status-text">Disconnected</span>
|
||||
</div>
|
||||
<div class="nav-item" title="Refresh Current Page">
|
||||
<i class="fas fa-sync-alt" id="refresh-btn"></i>
|
||||
</div>
|
||||
<div class="nav-item">
|
||||
<span id="current-time">Loading...</span>
|
||||
<div class="theme-toggle" id="theme-toggle">
|
||||
<i class="fas fa-moon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Page Content -->
|
||||
<div class="page-content" id="page-content">
|
||||
<!-- Dynamic content container -->
|
||||
</div>
|
||||
|
||||
<!-- Global Spinner -->
|
||||
<div class="spinner-container">
|
||||
<div class="spinner"></div>
|
||||
<div id="page-content" class="content-body">
|
||||
<!-- Content will be loaded dynamically -->
|
||||
<div class="loader-container">
|
||||
<div class="loader"></div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<!-- Scripts (cache-busted with version query params) -->
|
||||
<!-- Scripts -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/luxon@3.3.0/build/global/luxon.min.js"></script>
|
||||
<script src="/js/api.js?v=7"></script>
|
||||
<script src="/js/auth.js?v=7"></script>
|
||||
<script src="/js/dashboard.js?v=7"></script>
|
||||
<script src="/js/websocket.js?v=7"></script>
|
||||
<script src="/js/charts.js?v=7"></script>
|
||||
<script src="/js/websocket.js?v=7"></script>
|
||||
<script src="/js/dashboard.js?v=7"></script>
|
||||
|
||||
<!-- Page Modules -->
|
||||
<script src="/js/pages/overview.js?v=7"></script>
|
||||
<script src="/js/pages/analytics.js?v=7"></script>
|
||||
<script src="/js/pages/costs.js?v=7"></script>
|
||||
@@ -185,4 +177,4 @@
|
||||
<script src="/js/pages/logs.js?v=7"></script>
|
||||
<script src="/js/pages/users.js?v=7"></script>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user