1.8 KiB
1.8 KiB
CLAUDE.md
Project context for Claude Code. See PLANNING.md for the full roadmap.
What this is
A lightweight web GUI to manage file shares on a single home server (Proxmox LXC/VM) — a minimal NAS control panel. It manages SMB shares, NFS exports, and quotas by editing host config files and reloading the daemons. Home/LAN use only.
Files
app.py— Flask backend (API + share/export/quota logic).index.html— Bootstrap single-page UI.docker-compose.yml— optional dev/test sandbox only.PLANNING.md— roadmap and feature list.
How it runs (target)
Directly on the LXC/VM as a systemd service, Flask behind gunicorn.
Not in Docker for production — the app manipulates host services
(smbd, nfsd, /etc/exports, exportfs, setquota), so it must run on the
host. Docker stays only as a test sandbox.
Conventions & constraints
- Keep it simple. No database, no auth framework, dependency-light. Config
files (
/etc/samba/smb.conf,/etc/exports) are the source of truth. - Security basics are non-negotiable even for home use:
- Never use
subprocess.run(..., shell=True)with user input. Use argument lists. - Validate all input: names
^[A-Za-z0-9_-]+$; paths must resolve under/srv. - All routes require auth (single-user HTTP Basic Auth from an env var).
- Never use
- Config edits must be safe: parse into blocks and rewrite whole files for edit/delete — do not blindly append.
- LAN-only. Do not add internet-facing features.
Out of scope
Backups (handled by Proxmox Backup Server), multi-user roles, databases, internet exposure, multi-host management.
Working agreement
- Work in the phases defined in
PLANNING.md; pause after each phase for the user to test. - Explain changes briefly. Don't add heavy dependencies without asking.