feat: add web UI with login, CRUD, admin, and API key management
- Add login page with JWT authentication - Add dashboard with stats and quick actions - Add links management page (full CRUD with search) - Add collections management page - Add API key management page with copy-to-clipboard - Add admin user management page (admin only) - Fix UUID type mismatches across all endpoints - Add updated_at column to api_keys and audit_log in schema.sql - Fix DB_PASSWORD default in docker-compose.yml - Add PyJWT to requirements.txt - Fix API docs URL (/docs instead of /api/docs) - Improve JS error handling (show actual messages) - Rewrite conftest.py with proper DB lifecycle management - Add 42 new integration tests (84 total, all passing) - test_admin.py: 15 tests for admin endpoints - test_auth_extended.py: 9 tests for API key CRUD - test_tags.py: 12 tests for tag endpoints - test_sync.py: 6 tests for sync endpoints
This commit is contained in:
68
LinkSyncServer/templates/dashboard.html
Normal file
68
LinkSyncServer/templates/dashboard.html
Normal file
@@ -0,0 +1,68 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Dashboard - LinkSync{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="dashboard-header">
|
||||
<h1>Dashboard</h1>
|
||||
<p class="welcome-text">Welcome, <span id="current-user"></span></p>
|
||||
</div>
|
||||
|
||||
<div class="stats-grid">
|
||||
<div class="stat-card">
|
||||
<div class="stat-value" id="link-count">-</div>
|
||||
<div class="stat-label">Total Links</div>
|
||||
<a href="/links" class="stat-link">View all →</a>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-value" id="collection-count">-</div>
|
||||
<div class="stat-label">Collections</div>
|
||||
<a href="/collections" class="stat-link">View all →</a>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-value" id="api-key-count">-</div>
|
||||
<div class="stat-label">API Keys</div>
|
||||
<a href="/api-keys" class="stat-link">Manage →</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="quick-actions">
|
||||
<h2>Quick Actions</h2>
|
||||
<div class="action-grid">
|
||||
<a href="/links?action=new" class="action-card">
|
||||
<span class="action-icon">+</span>
|
||||
<span class="action-label">Add Link</span>
|
||||
</a>
|
||||
<a href="/collections?action=new" class="action-card">
|
||||
<span class="action-icon">+</span>
|
||||
<span class="action-label">New Collection</span>
|
||||
</a>
|
||||
<a href="/api-keys?action=new" class="action-card">
|
||||
<span class="action-icon">+</span>
|
||||
<span class="action-label">Create API Key</span>
|
||||
</a>
|
||||
<a href="/docs" target="_blank" class="action-card">
|
||||
<span class="action-icon">🛠</span>
|
||||
<span class="action-label">API Documentation</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="admin-section" class="admin-quick" style="display: none;">
|
||||
<h2>Admin</h2>
|
||||
<div class="action-grid">
|
||||
<a href="/admin" class="action-card">
|
||||
<span class="action-icon">👤</span>
|
||||
<span class="action-label">Manage Users</span>
|
||||
</a>
|
||||
<a href="/admin?action=new-user" class="action-card">
|
||||
<span class="action-icon">+</span>
|
||||
<span class="action-label">Create User</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_js %}
|
||||
<script src="/static/js/dashboard.js"></script>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user