Initial commit
This commit is contained in:
69
todo.md
Normal file
69
todo.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user