Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
05e1603
Update utils.ts
NasroelLah Sep 18, 2024
d80dcfa
Feat: route
NasroelLah Sep 18, 2024
ce17835
Update transfer.ts
NasroelLah Sep 18, 2024
8b21ffa
Feat: change route
NasroelLah Sep 18, 2024
c5e2604
Feat: change route
NasroelLah Sep 18, 2024
b42fc43
Feat: change route
NasroelLah Sep 18, 2024
9fbc6bc
Feat: assets update
NasroelLah Sep 18, 2024
8a09409
Update index.html
NasroelLah Sep 18, 2024
d886096
feat: add auth page
NasroelLah Sep 13, 2025
624cea8
feat: Enhanced UI with advanced features and improved upload system
NasroelLah Sep 14, 2025
b4cd846
feat: auto sanitize filename
NasroelLah Oct 9, 2025
7550e5d
feat: add listing cache, cache headers, auth refactor, fix sort bug
NasroelLah Aug 14, 2026
cf0768e
feat: remove docs and update deps
NasroelLah Aug 14, 2026
e41a93c
feat(ui): copy-link primary UX, accessible rows, MUI dialogs
NasroelLah Aug 14, 2026
2b00a83
fix(s3): resolve TypeScript type errors
NasroelLah Aug 14, 2026
cf0da97
chore: remove dead dependencies and orphan file
NasroelLah Aug 14, 2026
6a8a1c5
fix: refresh listing after uploads finish; square grid cards; list de…
NasroelLah Aug 14, 2026
0679dec
feat: restore compact grid rows without per-row actions
NasroelLah Aug 14, 2026
ec0d899
build: migrate CRA β†’ Vite, upgrade React 18 β†’ 19
NasroelLah Aug 14, 2026
31c5f9d
build: split vendor chunks below 500 kB
NasroelLah Aug 14, 2026
0edcd1a
build: upgrade MUI v5 β†’ v9.3.1
NasroelLah Aug 14, 2026
91f5e73
fix: change minor identity
NasroelLah Aug 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
/coverage

# production
/build
/dist

# misc
.DS_Store
Expand All @@ -24,3 +24,4 @@ yarn-error.log*

/.vscode
/.wrangler
graphify-out
114 changes: 108 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,53 @@ Free serverless backend with a limit of 100,000 invocation requests per day.

## Features

- Upload large files
- Create folders
- Search files
- Image/video/PDF thumbnails
- WebDAV endpoint
- Drag and drop upload
### File Management
- **Upload large files** - Support for files of any size with chunked uploads
- **Create folders** - Organize your files with folder structure
- **Drag and drop upload** - Enhanced drag & drop interface with visual feedback
- **Multi-file operations** - Select multiple files for bulk operations
- **File operations** - Download, rename, delete, copy link

### User Interface
- **Dual view modes** - Switch between grid and list view
- **Advanced search** - Smart fuzzy search with exact match toggle
- **Flexible sorting** - Sort by name, size, or date modified
- **Floating upload progress** - Real-time upload tracking with cancel option
- **Responsive design** - Works seamlessly on desktop and mobile

### Media & Preview
- **Image/video/PDF thumbnails** - Visual preview for supported file types
- **File type icons** - Clear visual indicators for different file types
- **Breadcrumb navigation** - Easy folder navigation

### Integration & Access
- **WebDAV endpoint** - Standard protocol support for third-party clients
- **Authentication system** - Secure login with customizable credentials
- **Public read option** - Optional public access to files
- **Direct file links** - Share files with copyable URLs

## Usage

### User Interface Guide

#### File Upload
- **Drag & Drop**: Simply drag files from your computer into the browser window
- **Upload Button**: Click the floating upload button (bottom-right) to select files
- **Upload Progress**: Monitor uploads with the floating progress indicator
- **Cancel Uploads**: Cancel in-progress uploads if needed

#### File Management
- **View Modes**: Switch between grid view (thumbnails) and list view (detailed)
- **Sorting**: Sort files by name, size, or modification date
- **Search**: Use fuzzy search for flexible file finding, or exact search for precise matching
- **Multi-select**: Right-click or long-press to select multiple files
- **File Operations**: Download, rename, delete files, or copy shareable links

#### Navigation
- **Folders**: Click on folders to navigate, use breadcrumbs to go back
- **Search Results**: View how many files match your search query
- **File Statistics**: See total files and filtered results in real-time

### Installation

Before starting, you should make sure that
Expand Down Expand Up @@ -49,6 +87,70 @@ Fill the endpoint URL as `https://<your-domain.com>/webdav` and use the username
However, the standard WebDAV protocol does not support large file (β‰₯128MB) uploads due to the limitation of Cloudflare Workers.
You must upload large files through the web interface which supports chunked uploads.

## Technical Features

### Upload System
- **Chunked uploads** for files β‰₯100MB with progress tracking
- **Concurrent upload** support with queue management
- **Upload cancellation** with proper cleanup
- **Retry mechanism** for failed uploads
- **Thumbnail generation** for images, videos, and PDFs

### Search & Filter
- **Fuzzy search algorithm** with Levenshtein distance and n-gram similarity
- **Real-time filtering** with instant results
- **Search statistics** showing matched/total files
- **Case-insensitive** search with accent support

### Performance
- **Optimized file parsing** with XML sanitization and fallback
- **Efficient rendering** with virtual scrolling for large file lists
- **Responsive UI** with smooth transitions and loading states
- **Memory management** with proper cleanup of upload resources

### Security
- **Authentication system** with secure credential storage
- **CORS handling** for cross-origin requests
- **Input sanitization** for file names and metadata
- **Error handling** with user-friendly messages

## Development

### Local Development
```bash
# Install dependencies
npm install

# Start development server
npm start

# Build for production
npm run build
```

### Debug Features
- **Comprehensive logging** throughout upload and file operations
- **Upload debugging** with detailed progress and error tracking
- **Test upload button** (localhost only) for UI component testing
- **Console debugging** with step-by-step operation logs

### Project Structure
```
src/
β”œβ”€β”€ components/ # UI components
β”‚ β”œβ”€β”€ FileGrid.tsx # Grid view component
β”‚ β”œβ”€β”€ FileList.tsx # List view component
β”‚ β”œβ”€β”€ Header.tsx # Main header with toolbar
β”‚ └── ... # Other components
β”œβ”€β”€ utils/ # Utility modules
β”‚ β”œβ”€β”€ fuzzySearch.ts # Advanced search algorithms
β”‚ β”œβ”€β”€ uploadManager.ts # Upload queue management
β”‚ └── xmlParser.ts # XML parsing utilities
β”œβ”€β”€ app/ # Core application logic
β”‚ └── transfer.ts # File operations and API calls
└── ... # Other files
```

## Acknowledgments

WebDAV related code is based on [r2-webdav](
Expand Down
Loading