# 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
