124 lines
1.7 KiB
Markdown
124 lines
1.7 KiB
Markdown
# 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
|