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

1.2 KiB

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.