feat: implement pngx-controller with Gitea CI/CD deployment
All checks were successful
Deploy / deploy (push) Successful in 30s
All checks were successful
Deploy / deploy (push) Successful in 30s
- Full FastAPI sync engine: master→replica document sync via paperless REST API - Web UI: dashboard, replicas, logs, settings (Jinja2 + HTMX + Pico CSS) - APScheduler background sync, SSE live log stream, Prometheus metrics - Fernet encryption for API tokens at rest - pngx.env credential file: written on save, pre-fills forms on load - Dockerfile with layer-cached uv build, Python healthcheck - docker-compose with host networking for Tailscale access - Gitea Actions workflow: version bump, secret injection, docker compose deploy Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
55
app/templates/base.html
Normal file
55
app/templates/base.html
Normal file
@@ -0,0 +1,55 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" data-theme="light">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{% block title %}pngx-controller{% endblock %}</title>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css">
|
||||
<script src="https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js"></script>
|
||||
<script src="https://unpkg.com/htmx-ext-sse@2.2.2/sse.js"></script>
|
||||
<style>
|
||||
nav { padding: 0.5rem 1rem; }
|
||||
.badge { display: inline-block; padding: 0.15em 0.6em; border-radius: 1em; font-size: 0.8em; font-weight: 600; }
|
||||
.badge-synced { background: #d1fae5; color: #065f46; }
|
||||
.badge-syncing { background: #dbeafe; color: #1e40af; }
|
||||
.badge-error { background: #fee2e2; color: #991b1b; }
|
||||
.badge-suspended { background: #fef3c7; color: #92400e; }
|
||||
.badge-pending { background: #f3f4f6; color: #374151; }
|
||||
.badge-ok { background: #d1fae5; color: #065f46; }
|
||||
.badge-info { background: #eff6ff; color: #1d4ed8; }
|
||||
.badge-warning { background: #fffbeb; color: #b45309; }
|
||||
small.muted { color: var(--pico-muted-color); }
|
||||
#progress-bar { display: none; }
|
||||
#progress-bar.active { display: block; }
|
||||
.log-entry-error td { background: #fff5f5; }
|
||||
.log-entry-warning td { background: #fffbeb; }
|
||||
pre { white-space: pre-wrap; font-size: 0.8em; }
|
||||
table { font-size: 0.9em; }
|
||||
.actions { white-space: nowrap; }
|
||||
details summary { cursor: pointer; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header class="container-fluid">
|
||||
<nav>
|
||||
<ul>
|
||||
<li><strong><a href="/" style="text-decoration:none;">📄 pngx-controller</a></strong></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="/">Dashboard</a></li>
|
||||
<li><a href="/replicas">Replicas</a></li>
|
||||
<li><a href="/logs">Logs</a></li>
|
||||
<li><a href="/settings">Settings</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="container">
|
||||
{% block content %}{% endblock %}
|
||||
</main>
|
||||
|
||||
<footer class="container-fluid" style="text-align:center; padding:1rem; color:var(--pico-muted-color); font-size:0.8em;">
|
||||
pngx-controller — <a href="/healthz">health</a> — <a href="/metrics">metrics</a>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user