arv-quickdrop
v2.0.2
Published
A secure, fast CLI file sharing tool with chunked upload support - built by ARV
Maintainers
Readme
QuickDrop CLI
A powerful command-line tool for secure file uploads with user authentication.
Features
- 🔐 Secure Authentication: API key-based authentication
- 📤 Smart Upload Strategy: Automatic chunked upload for files > 45MB
- 🚀 Large File Support: Upload files up to 600MB with intelligent chunking
- 🔄 Auto-Retry Logic: Automatic retry for failed chunks (3 attempts)
- 🎨 Beautiful UI: Colorful and interactive command-line interface
- 💾 Persistent Login: Stay logged in between sessions
- 📊 Progress Tracking: Real-time upload progress with speed indicator
- 🔗 Instant Sharing: Get shareable links immediately after upload
- 📱 APK Optimized: Special handling for Android APK files
Installation
Prerequisites
- Node.js 14.0.0 or higher
- npm or yarn
Install Dependencies
cd quickdrop-cli
npm installMake it Executable
chmod +x index.jsLink Globally (Optional)
To use qd command from anywhere:
npm linkUsage
1. Login
Authenticate with your QuickDrop API Key:
qd loginYou'll be prompted to enter your API Key (input is masked for security).
2. Upload Files
Upload a file to QuickDrop:
qd upload myfile.pdfOr use the shorthand:
qd myfile.pdfAfter successful upload, you'll receive:
- 📎 A shareable download link
- 📁 Direct file URL
3. Logout
Clear your stored credentials:
qd logoutCommands
| Command | Description |
|---------|-------------|
| qd login | Authenticate with your API Key |
| qd upload <filename> | Upload a file |
| qd <filename> | Upload a file (shorthand) |
| qd logout | Log out and clear credentials |
| qd --version | Show version number |
| qd --help | Display help |
Configuration
QuickDrop CLI uses conf to store your authentication token securely in:
- Linux/macOS:
~/.config/quickdrop-cli/config.json - Windows:
%APPDATA%\quickdrop-cli\config.json
API Endpoints
- Auth Verification:
https://quickdropfile.web.app/api/auth/verify - File Upload:
https://quickdropfileweb-worker.ramu39.workers.dev/upload
File Size Limits
- Maximum file size: 600MB
- Supported file types: All (images, documents, videos, APKs, etc.)
Upload Strategy
The CLI automatically chooses the best upload method:
- Files ≤ 45MB: Direct upload with real-time progress
- Files > 45MB: Chunked upload (45MB chunks)
- Splits file into manageable chunks
- Uploads each chunk with retry logic
- Automatically combines chunks on server
- Perfect for large APK files, videos, and archives
Why Chunked Upload?
- Overcomes Cloudflare Worker request size limits
- Better reliability for large files
- Automatic recovery from network interruptions
- Optimal performance for files like APKs (100MB - 600MB)
Examples
Example 1: Login and Upload
# Step 1: Login
qd login
# Enter your API Key when prompted
# Step 2: Upload a file
qd upload vacation-photos.zip
# Output:
# ✅ Upload successful!
# 📎 Download Link:
# https://quickdropfile.web.app/download.html?id=1234567890-abcdefExample 2: Quick Upload
# Upload directly (requires prior login)
qd presentation.pptxExample 3: Upload Large APK Files
# Upload a large APK file (170MB+)
qd MyApp-v2.5.3.apk
# Output:
# Using chunked upload (45.00 MB per chunk)
# Total chunks: 4
# ████████████████████ 100% | Chunk 4/4 | 2.3 MB/s
# ✅ Upload successful!Example 4: Upload Large Video Files
# Upload a large video file
qd movie.mp4
# Automatic chunking for files over 45MBError Handling
The CLI provides helpful error messages:
- ❌ Not logged in:
You are not logged in. Run 'qd login' first. - ❌ File not found:
File not found: filename.txt - ❌ File too large:
File size must be less than 600MB - ❌ Invalid API Key:
Invalid API Key. Please check and try again. - ❌ Network error:
Request timeout. Please check your internet connection.
Dependencies
commander(^9.5.0): CLI frameworkinquirer(^8.2.6): Interactive promptsaxios(^1.6.2): HTTP clientconf(^10.2.0): Configuration storagechalk(4.1.2): Terminal stylingora(5.4.1): Loading spinnersform-data(^4.0.0): Multipart form data
Development
Project Structure
quickdrop-cli/
├── index.js # CLI entry point
├── commands.js # Command implementations
├── package.json # Dependencies and metadata
└── README.md # DocumentationRun Locally
node index.js login
node index.js upload testfile.txtTroubleshooting
Permission Denied
If you get a permission error when running qd:
chmod +x index.jsModule Not Found
If dependencies are missing:
npm installAuthentication Issues
If your token is invalid:
qd logout
qd loginSecurity
- API keys are stored securely using the
confpackage - Keys are masked during input
- Tokens are stored locally and never exposed in logs
- HTTPS is used for all API communications
Support
For issues or questions:
- Visit: https://quickdropfile.web.app
- Email: [email protected]
License
MIT
Version History
- v1.1.0: Major update
- ✅ Added intelligent chunked upload for large files
- ✅ Automatic retry logic for failed chunks
- ✅ Improved progress tracking with speed display
- ✅ Better error messages and handling
- ✅ Fixed upload issues for 170MB+ files
- ✅ Optimized for APK files
- v1.0.2: Bug fixes and improvements
- v1.0.0: Initial release with authentication and file upload
Made with ❤️ by the QuickDrop Team
