Files
ss-tools/specs/014-file-storage-ui/research.md
2026-01-24 16:21:43 +03:00

17 lines
1.2 KiB
Markdown

# Research: File Storage Management & UI
**Decision**: Use Python's built-in `pathlib` and `shutil` for filesystem operations.
**Rationale**: Standard library, robust, cross-platform (though target is Linux), and sufficient for local file management. No external dependencies needed.
**Alternatives considered**: `os` module (lower level, less ergonomic), `pyfilesystem2` (external dependency, unnecessary overhead for simple local storage).
**Decision**: Use `pydantic` for configuration and file metadata models.
**Rationale**: Already used in the project, provides validation and serialization.
**Decision**: Use `multipart/form-data` for file uploads.
**Rationale**: Standard web practice for file uploads. FastAPI supports `UploadFile` natively.
**Decision**: Default storage path strategy.
**Rationale**: The default path will be `../ss-tools-storage` (relative to workspace root) or similar to ensure it sits outside the git repository by default, but allows configuration override.
**Decision**: Path Traversal Prevention.
**Rationale**: Will use `os.path.commonpath` or `pathlib.Path.resolve()` to strictly validate that any accessed file path is a child of the configured storage root.