Skip to content

Commit 2ee9afb

Browse files
feat: Update readme
1 parent ada2d4a commit 2ee9afb

1 file changed

Lines changed: 30 additions & 14 deletions

File tree

README.md

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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
97103
npm 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

Comments
 (0)