Implement Phase 1: core framework, operational tooling, and runbook
Core packages: crypto (Argon2id/AES-256-GCM), config (TOML/viper), db (SQLite/migrations), barrier (encrypted storage), seal (state machine with rate-limited unseal), auth (MCIAS integration with token cache), policy (priority-based ACL engine), engine (interface + registry). Server: HTTPS with TLS 1.2+, REST API, auth/admin middleware, htmx web UI (init, unseal, login, dashboard pages). CLI: cobra/viper subcommands (server, init, status, snapshot) with env var override support (METACRYPT_ prefix). Operational tooling: Dockerfile (multi-stage, non-root), docker-compose, hardened systemd units (service + daily backup timer), install script, backup script with retention pruning, production config examples. Runbook covering installation, configuration, daily operations, backup/restore, monitoring, troubleshooting, and security procedures. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
24
web/static/style.css
Normal file
24
web/static/style.css
Normal file
@@ -0,0 +1,24 @@
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; background: #f5f5f5; color: #333; line-height: 1.6; }
|
||||
.container { max-width: 800px; margin: 0 auto; padding: 2rem; }
|
||||
header h1 { margin-bottom: 2rem; }
|
||||
header h1 a { color: #333; text-decoration: none; }
|
||||
main { background: #fff; border-radius: 8px; padding: 2rem; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
|
||||
h2 { margin-bottom: 1rem; color: #222; }
|
||||
h3 { margin: 1.5rem 0 0.5rem; color: #444; }
|
||||
p { margin-bottom: 1rem; }
|
||||
.form-group { margin-bottom: 1rem; }
|
||||
.form-group label { display: block; margin-bottom: 0.25rem; font-weight: 600; }
|
||||
.form-group input { width: 100%; padding: 0.5rem; border: 1px solid #ccc; border-radius: 4px; font-size: 1rem; }
|
||||
button { padding: 0.5rem 1.5rem; background: #2563eb; color: #fff; border: none; border-radius: 4px; font-size: 1rem; cursor: pointer; }
|
||||
button:hover { background: #1d4ed8; }
|
||||
.error { background: #fee2e2; color: #991b1b; padding: 0.75rem; border-radius: 4px; margin-bottom: 1rem; }
|
||||
.badge { background: #dbeafe; color: #1e40af; padding: 0.125rem 0.5rem; border-radius: 4px; font-size: 0.875rem; }
|
||||
.status-bar { display: flex; gap: 1rem; align-items: center; padding: 0.75rem; background: #f9fafb; border-radius: 4px; margin-bottom: 1.5rem; flex-wrap: wrap; }
|
||||
.status-bar a { margin-left: auto; color: #2563eb; }
|
||||
table { width: 100%; border-collapse: collapse; margin: 0.5rem 0; }
|
||||
th, td { text-align: left; padding: 0.5rem; border-bottom: 1px solid #e5e7eb; }
|
||||
th { font-weight: 600; background: #f9fafb; }
|
||||
.admin-actions { margin-top: 0.5rem; }
|
||||
.admin-actions button { background: #dc2626; }
|
||||
.admin-actions button:hover { background: #b91c1c; }
|
||||
Reference in New Issue
Block a user