Files
migrate/todo.md
Blake Ridgway 913f0ff7aa Initial commit
2026-03-21 18:00:24 -05:00

70 lines
2.7 KiB
Markdown

# 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