feat: add minimal web dashboard with stats, top credentials, and sessions
Implements Phase 1.5 — an embedded web UI using Go templates, Pico CSS (dark theme), and htmx for auto-refreshing stats and active sessions. Adds read query methods to the Store interface (GetDashboardStats, GetTopUsernames, GetTopPasswords, GetTopIPs, GetRecentSessions) with implementations for both SQLite and MemoryStore. Introduces the internal/web package with server, handlers, templates, and tests. Web server is opt-in via [web] config section and runs alongside SSH with graceful shutdown. Bumps version to 0.2.0. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
20
internal/web/templates/fragments/stats.html
Normal file
20
internal/web/templates/fragments/stats.html
Normal file
@@ -0,0 +1,20 @@
|
||||
{{define "stats"}}
|
||||
<div class="stats-grid">
|
||||
<article class="stat-card">
|
||||
<h2>{{.TotalAttempts}}</h2>
|
||||
<p>Total Attempts</p>
|
||||
</article>
|
||||
<article class="stat-card">
|
||||
<h2>{{.UniqueIPs}}</h2>
|
||||
<p>Unique IPs</p>
|
||||
</article>
|
||||
<article class="stat-card">
|
||||
<h2>{{.TotalSessions}}</h2>
|
||||
<p>Total Sessions</p>
|
||||
</article>
|
||||
<article class="stat-card">
|
||||
<h2>{{.ActiveSessions}}</h2>
|
||||
<p>Active Sessions</p>
|
||||
</article>
|
||||
</div>
|
||||
{{end}}
|
||||
Reference in New Issue
Block a user