- New web UI with OpenWebUI-like interface using Tailwind CSS - SQLite-based authentication with session management - User registration, login, and profile pages - Chat interface with conversation history - Streaming responses with visible thinking phase - File attachments support - User document uploads in profile - Rate limiting (5 requests/day for free users) - Admin panel user management with promote/demote/delete - Custom color theme matching balloon logo design - Compatible with Nuitka build system
92 lines
3.5 KiB
HTML
Executable File
92 lines
3.5 KiB
HTML
Executable File
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>MOXIE Admin</title>
|
|
<link rel="stylesheet" href="/{{ settings.admin_path }}/static/admin.css">
|
|
</head>
|
|
<body>
|
|
<nav class="navbar">
|
|
<div class="nav-brand">MOXIE Admin</div>
|
|
<div class="nav-links">
|
|
<a href="/{{ settings.admin_path }}/">Dashboard</a>
|
|
<a href="/{{ settings.admin_path }}/endpoints">Endpoints</a>
|
|
<a href="/{{ settings.admin_path }}/documents">Documents</a>
|
|
<a href="/{{ settings.admin_path }}/comfyui">ComfyUI</a>
|
|
<a href="/{{ settings.admin_path }}/users">Users</a>
|
|
</div>
|
|
</nav>
|
|
|
|
<main class="container">
|
|
<h1>Dashboard</h1>
|
|
|
|
<div class="status-grid">
|
|
<div class="status-card" id="ollama-status">
|
|
<h3>Ollama</h3>
|
|
<span class="status-indicator checking">Checking...</span>
|
|
</div>
|
|
|
|
<div class="status-card" id="comfyui-status">
|
|
<h3>ComfyUI</h3>
|
|
<span class="status-indicator checking">Checking...</span>
|
|
</div>
|
|
|
|
<div class="status-card">
|
|
<h3>Documents</h3>
|
|
<span class="status-value" id="doc-count">-</span>
|
|
</div>
|
|
|
|
<div class="status-card">
|
|
<h3>Chunks</h3>
|
|
<span class="status-value" id="chunk-count">-</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="info-section">
|
|
<h2>Quick Start</h2>
|
|
<ol>
|
|
<li>Configure your API endpoints in <a href="/{{ settings.admin_path }}/endpoints">Endpoints</a></li>
|
|
<li>Upload documents in <a href="/{{ settings.admin_path }}/documents">Documents</a></li>
|
|
<li>Configure ComfyUI workflows in <a href="/{{ settings.admin_path }}/comfyui">ComfyUI</a></li>
|
|
<li>Access the MOXIE UI at <a href="/"><code>http://localhost:8000/</code></a></li>
|
|
</ol>
|
|
</div>
|
|
|
|
<div class="info-section">
|
|
<h2>MOXIE UI</h2>
|
|
<p>Access the MOXIE chat interface:</p>
|
|
<a href="/" style="color: #4F9AC3;"><code>http://localhost:8000/</code></a>
|
|
</div>
|
|
</main>
|
|
|
|
<script>
|
|
async function loadStatus() {
|
|
try {
|
|
const response = await fetch('/{{ settings.admin_path }}/status');
|
|
const data = await response.json();
|
|
|
|
// Update Ollama status
|
|
const ollamaEl = document.querySelector('#ollama-status .status-indicator');
|
|
ollamaEl.textContent = data.ollama;
|
|
ollamaEl.className = 'status-indicator ' + data.ollama;
|
|
|
|
// Update ComfyUI status
|
|
const comfyuiEl = document.querySelector('#comfyui-status .status-indicator');
|
|
comfyuiEl.textContent = data.comfyui;
|
|
comfyuiEl.className = 'status-indicator ' + data.comfyui;
|
|
|
|
// Update counts
|
|
document.getElementById('doc-count').textContent = data.documents_count;
|
|
document.getElementById('chunk-count').textContent = data.chunks_count;
|
|
} catch (error) {
|
|
console.error('Failed to load status:', error);
|
|
}
|
|
}
|
|
|
|
loadStatus();
|
|
setInterval(loadStatus, 30000); // Refresh every 30 seconds
|
|
</script>
|
|
</body>
|
|
</html>
|