Frontend client for UpBox — a production-grade Google Drive clone with chunk-based uploads, queue management, and real-time updates.
🔗 Live Project: https://www.upboxdrive.online/
- 📁 Nested folder navigation
- 📤 Single + bulk file uploads
- ⚡ Parallel chunk uploads
- 📊 Real-time upload progress (SSE)
- 🔍 Global search with autocomplete
- 🔄 Resume interrupted uploads
┌──────────────────────┐
│ React Client │
│ (Next.js / React) │
└─────────┬────────────┘
│
┌─────────────────▼─────────────────┐
│ Upload Manager (JS) │
│ Queue + Chunk + Retry System │
└─────────────────┬─────────────────┘
│
┌─────────────────▼─────────────────┐
│ Backend API (Node) │
│ Express + MongoDB + SSE Server │
└───────┬───────────────┬──────────┘
│ │
┌─────────▼───┐ ┌────▼─────────┐
│ MongoDB │ │ AWS S3 │
│ Atlas Search │ │ Storage │
└──────────────┘ └──────────────┘
Client selects file
↓
UploadManager splits into chunks
↓
Backend creates upload session (uploadId)
↓
Client requests pre-signed URLs per chunk
↓
Chunks uploaded directly to S3
↓
Backend tracks uploadParts
↓
Complete multipart upload
- Chunk-based upload (5MB default)
- Parallel upload support
- Retry mechanism
- Progress tracking per file
User selects multiple files
↓
Files added to UploadQueue
↓
Max 3 uploads run in parallel
↓
Remaining files wait in queue
↓
On completion → next file starts automatically
- Global UploadManager (singleton)
- FIFO queue system
- Pause / Resume support
- Independent upload tasks
Backend triggers event
↓
SSE connection pushes event
↓
Frontend Redux updates state
↓
UI updates instantly (no refresh)
- file_uploaded
- folder_created
- folder_uploaded
- file_renamed
- update_storage
- Nested folder structure
- Parent-child relationship via
parentID - Path tracking (
pathIds,pathNames)
- Full-text search on files & folders
- Autocomplete search
- User-isolated search (multi-tenant safe)
- Fast indexed queries
User types query
↓
MongoDB Atlas Search
↓
Filters by userID
↓
Returns ranked results
- Keeps upload logic outside React
- Prevents re-render cancellation issues
- Handles queue, retry, concurrency
Used only for:
- Progress tracking
- Upload status
- UI updates
- Lightweight real-time updates
- Perfect for file/folder events
- No persistent bidirectional connection needed
- Efficient large file handling
- Resume support via uploadId + parts
- Direct-to-S3 upload (
backend bypass for performanceandt3micro sever limitation)
- Fast search indexing
- Autocomplete support
- User-level filtering for security
- React / Next.js
- Redux Toolkit
- Axios
- Node.js
- Express.js
- MongoDB + Atlas Search
- AWS S3 SDK
- AWS S3 (Storage)
- SSE (Real-time updates)
- Chunked uploads (reduces memory usage)
- Parallel upload queue (max concurrency control)
- Indexed search (Atlas Search)
- SSE for low-latency updates
- Direct S3 uploads (no backend bottleneck)
- User-based data isolation (
userID filter in search) - Pre-signed S3 URLs
- Backend validation for upload sessions
- Versioning system for files
- Folder operations