1.7 KiB
PRODUCT_SPEC.md
Project
Web-based Storage Manager
Een webapplicatie waarmee gebruikers bestanden op whitelisted storage volumes kunnen beheren.
De applicatie draait in een containeromgeving.
Doel
Een veilige webinterface bouwen voor filesystem beheer.
Gebruikers moeten via een browser:
- directories kunnen browsen
- bestanden kunnen kopiëren
- bestanden kunnen verplaatsen
- bestanden kunnen hernoemen
- bestanden kunnen verwijderen
- mappen kunnen aanmaken
- bookmarks kunnen opslaan
De applicatie moet geschikt zijn voor gebruik binnen een self-hosted infrastructuur.
Architectuur uitgangspunten
Backend
Python + FastAPI
Frontend
lichte JS UI zonder zware frameworks.
Database
SQLite voor:
- tasks
- bookmarks
- history
Storage model
De applicatie mag alleen werken binnen whitelisted root directories.
Voorbeeld:
/mnt/storage1 /mnt/storage2 /media/archive
Alle paden moeten binnen deze roots blijven.
Traversal en symlink escapes moeten geblokkeerd worden.
Functionaliteiten
Directory browsing
De UI moet directories kunnen tonen.
Response moet bevatten:
- directories
- files
- metadata (size, modified)
File operations
Ondersteunde acties:
rename
move
copy
delete
create directory
Task system
Langlopende acties (copy/move):
- krijgen een task id
- status wordt opgeslagen
- progress kan opgehaald worden via API
Security eisen
- path validation
- whitelist enforcement
- symlink protection
- traversal protection
Out of scope
Deze functionaliteit hoort niet bij versie 1:
- user management
- permissions management
- cloud storage
- distributed storage
- multi-node clusters