2.7 KiB
2.7 KiB
arcline-portal — Customer Dashboard
Web UI for Arcline customers: SSL expiry tracking, one-click static deployment, log viewer. Sits alongside or integrates with WHMCS for billing.
Stack
- Language: Go (backend) + vanilla HTML/CSS/JS (Arcline design system)
- Storage: PostgreSQL or SQLite
- Auth: session-based (bcrypt passwords) + optional TOTP 2FA
- Deployment: single binary + embedded static assets
Modules
1. SSL Expiry Dashboard
- Customer adds domains to their account
- System checks cert expiry daily (x509 via tls.Dial)
- Dashboard shows all domains with expiry date + days remaining
- Color coding: green >30d, amber 14-30d, red <14d
- Email alerts: 30d, 14d, 7d before expiry
- Domain management (add/remove/verify ownership via DNS TXT)
- Background cert checker (goroutine + ticker)
- Alert email templates
- Dashboard view
2. One-Click Static Deployment
- Customer connects GitLab repo (OAuth) or uploads a zip
- On push to main → webhook → Arcline pulls repo, builds (optional), rsync to docroot
- Supported: static HTML, Hugo, Jekyll, plain PHP
- Build commands configurable per site
- GitLab OAuth integration
- Webhook receiver (verify HMAC signature)
- Build runner (sandboxed subprocess, timeout)
- Deploy: rsync to customer docroot via internal SSH
- Deploy log viewer (streaming via SSE)
- Rollback: keep last 3 deployments, one-click restore
3. Log Viewer
- Customer views their access/error logs in browser (no SSH required)
- Filtered by: date range, status code, IP, path
- Tail mode: live stream via SSE
- Log file reader (tail -F equivalent in Go)
- Filter engine
- SSE streaming endpoint
- Frontend log table (virtual scroll for large logs)
4. Support Tickets
- Simple ticket system (open, in-progress, closed)
- Customer creates ticket → email notification to blake@arclineit.com
- Blake replies via email → reply appears in ticket thread
- Ticket CRUD
- Email-in (IMAP polling or inbound SMTP hook)
- Email-out (SMTP on ticket create/reply)
- Ticket list + thread view
Auth
- Register / login / logout
- Password reset (email link, 1h expiry)
- TOTP 2FA (optional, QR code enrollment)
- Session management (secure cookie, server-side store)
Tasks (phase 1 — MVP)
- Project scaffold (Go + embedded FS for templates/assets)
- Database schema (users, domains, deployments, tickets, sessions)
- Auth system (register, login, sessions, password reset)
- SSL dashboard (domain add/verify, cert check, expiry display)
- Basic ticket system
- Arcline design system applied to all views
- systemd unit + nginx reverse proxy config
- README: deployment guide, env vars reference