# YakPanel feature parity checklist (clean-room) Internal checklist against common hosting-panel capabilities used as a product roadmap only. No third-party panel code is shipped. | Area | Status | YakPanel location | |------|--------|-------------------| | Sites, domains, redirects | Done | `api/site.py`, `site_service.py` | | Nginx vhost + SSL (HTTP-01) | Done | `webserver/templates/nginx_site.conf`, `ssl.py` | | SSL diagnostics + port 443 probe | Done | `GET /ssl/diagnostics` | | Nginx include wizard (drop-in hints) | Done | `GET /ssl/diagnostics` → `nginx_wizard` | | Reverse proxy site mode | Done | `Site.proxy_upstream`, vhost `proxy_pass` | | WebSocket proxy hint | Done | `Site.proxy_websocket` | | Directory HTTP basic auth | Done | `Site.dir_auth_path`, `dir_auth_user_file` | | Disable PHP execution (uploads) | Done | `Site.php_deny_execute` | | DNS-01 Let's Encrypt (Cloudflare / manual TXT) | Done | `POST /ssl/dns-request/*` | | Security checklist (read-only probes) | Done | `GET /security/checklist` | | FTP logs (tail) | Done | `GET /ftp/logs` | | Cron job templates (YakPanel JSON) | Done | `GET /crontab/templates`, `data/cron_templates.json` | | Backup plans + optional S3 upload | Done | `backup.py`, `BackupPlan` S3 fields, `boto3` optional | | Dashboard SSL expiry / inode alerts | Done | `GET /dashboard/stats` → `ssl_alerts`, `system.inode_*` | | Firewall UFW + firewalld status in UI | Done | `GET /firewall/status`, `FirewallPage.tsx` | | Database / FTP / firewall rules engine | Partial (pre-existing) | respective `api/*.py` | | Mail server | Not planned | — | | WordPress one-click | Not planned | plugin later | _Last updated: parity pass (this implementation)._