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>
21 lines
505 B
HTML
21 lines
505 B
HTML
{{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}}
|