@@ -21,22 +21,26 @@ This application provides a user-friendly interface for managing files and folde
2121- ** File & Folder Navigation** : Browse through folders with double-click navigation and breadcrumb support
2222- ** Grid and List Views** : Toggle between grid and list views for file browsing
2323- ** Breadcrumb Navigation** : Navigate through folder hierarchy with clickable breadcrumbs
24- - ** Caching** : In-memory caching for WebID profiles and container contents to improve UX and reduce redundant requests
24+ - ** URL State Management** : Browser URL and sessionStorage synchronization for persistent navigation
25+ - ** Optimized Browsing** : Uses RDF metadata from container listings to avoid unnecessary HTTP requests
2526
2627### File Operations
2728
2829- ** Create Folders** : Create new folders with custom names
29- - ** Rename Files/Folders** : Rename resources using ` .meta ` files to preserve resource URIs and shared links
30+ - ** Rename Files/Folders** : Rename resources using URL-based renaming (recreate with new name, delete old) to preserve resource URIs
3031- ** Copy Files/Folders** : Copy files and folders with automatic name collision handling (e.g., "Copy of file", "Copy of file (1)")
31- - ** Move Files** : Move files between folders within the same storage
32- - ** Delete Files/Folders** : Delete resources from your Pod
33- - ** File Upload** : Upload files to your Pod via file picker
34- - ** File Preview** : Preview various file types:
32+ - ** Move Files** : Move files between folders within the same storage (fetch → put in new location → delete old)
33+ - ** Delete Files/Folders** : Delete resources from your Pod with confirmation dialog
34+ - ** Download Files/Folders** : Download individual files or folders as ZIP archives
35+ - ** File Upload** : Upload files to your Pod via file picker or drag-and-drop
36+ - ** Folder Upload** : Upload entire folders with preserved structure via folder picker or drag-and-drop (using File System Access API)
37+ - ** Drag-and-Drop Upload** : Drag and drop files or folders directly into the file manager (folder support in Chrome/Edge)
38+ - ** File Preview** : Preview various file types using content-type headers:
3539 - Images (displayed in modal)
3640 - PDFs (opened in new tab)
3741 - Word documents (.doc, .docx - opened in new tab)
3842 - Text files (displayed in modal)
39- - Common text files without extensions (e.g., README)
43+ - Binary files detected and handled appropriately
4044
4145### User Interface
4246
@@ -56,11 +60,13 @@ This application provides a user-friendly interface for managing files and folde
5660
5761### Technical Features
5862
59- - ** Metadata Management** : Uses ` .meta ` files for storing display names and preserving resource URIs
6063- ** Session Management** : Centralized session utilities for authentication
61- - ** Profile Caching** : Cached WebID profile fetching to prevent redundant requests
64+ - ** Profile Utilities** : WebID profile fetching and parsing utilities
65+ - ** URL Utilities** : URL state management, encoding/decoding, and path resolution
66+ - ** Binary File Detection** : Automatic detection of binary/system files (e.g., ` .DS_Store ` ) to prevent unnecessary RDF conversion attempts
6267- ** Error Handling** : Comprehensive error handling with user-friendly messages
6368- ** Type Safety** : Full TypeScript support throughout
69+ - ** Cache-Busting** : Automatic cache-busting for container listings after uploads/deletes to ensure fresh data
6470
6571## Tech Stack
6672
@@ -97,7 +103,7 @@ npm install
97103npm run dev
98104```
99105
100- 4 . Open [ http://localhost:3000 ] ( http://localhost:3000 ) in your browser.
106+ 4 . Open [ http://localhost:3001 ] ( http://localhost:3001 ) in your browser.
101107
102108## Development Setup
103109
@@ -159,8 +165,13 @@ solid-file-manager/
159165│ │ └── helpers/ # Utility functions
160166│ │ ├── sessionUtils.ts # Session management
161167│ │ ├── profileUtils.ts # WebID profile utilities
162- │ │ ├── metaFileUtils.ts # .meta file operations
163168│ │ ├── copyUtils.ts # Copy and move operations
169+ │ │ ├── deleteUtils.ts # Delete operations
170+ │ │ ├── downloadUtils.ts # Download operations (files and ZIP)
171+ │ │ ├── uploadUtils.ts # File and folder upload operations
172+ │ │ ├── dragDropUtils.ts # Drag-and-drop file/folder handling
173+ │ │ ├── urlStateUtils.ts # URL state management
174+ │ │ ├── urlUtils.ts # URL utilities and binary file detection
164175│ │ ├── fileTypeUtils.ts # File type detection
165176│ │ └── ...
166177│ ├── page.tsx # Main page component
@@ -180,9 +191,14 @@ This application integrates with Solid using:
180191 - Uses ` pim:storage ` predicate from WebID profile
181192 - Uses ` solid:storage ` predicate as fallback
182193 - Supports hierarchical traversal for storage discovery
183- - ** Metadata Management** :
184- - Uses ` .meta ` files for storing display names (following Solid conventions)
185- - Preserves resource URIs when renaming (maintains shared links)
194+ - ** Container Browsing** :
195+ - Uses RDF metadata from container listings to determine file/folder types
196+ - Optimized to avoid individual HTTP requests per resource
197+ - Reads ` ldp:Container ` and ` ldp:BasicContainer ` types from container metadata
198+ - ** Resource Operations** :
199+ - URL-based renaming (recreate with new name, delete old) to preserve resource URIs
200+ - Recursive folder operations for copy, move, and delete
201+ - Automatic handling of binary files and system files
186202- ** SDK** : [ @inrupt/solid-client-js ] ( https://github.com/inrupt/solid-client-js )
187203
188204## Design Principles
0 commit comments