upload volledige repo
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user