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

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