A robust, secure, and user-friendly file upload system with chunk-based uploads, user management, and sharing capabilities. With some bugs/features.
- Chunk-Based Uploads: Support for large file uploads with automatic chunking and resumable uploads
- User Management: Secure user registration and authentication system
- User Expire: When non-admin accounts register their account they have a limited time before the account gets deleted with all their files. Users are free to add up to 24 hours in their settings panel.
- File Management: Upload, download, rename, and delete files
- File Preview: Includes a video and image in-built preview feature.
- Sharing System: Create password-protected shareable links with expiration
- Admin Dashboard: Manage users, monitor storage usage, and extend sessions
- JWT-based authentication
- Password hashing with bcrypt
- Rate limiting for registration
- CAPTCHA protection
- Secure file storage with user isolation
- Password-protected share links
- Express.js backend with RESTful API
- React frontend with modern UI
- Chunk-based upload with progress tracking
- Automatic file type detection
- Bulk download as ZIP
- File metadata tracking
- Audit logging system
- Node.js (v14 or higher)
- npm or yarn
- Modern web browser
- Clone the repository:
git clone https://github.com/v3lip/simplUpld.git
cd simplUpld
- Install backend dependencies:
cd backend
npm install
- Install frontend dependencies:
cd ../frontend
npm install
- Create environment files:
Backend (.env):
PORT=5000
JWT_SECRET=your_jwt_secret
UPLOAD_DIR=uploads
ADMIN_USERNAME=admin
Frontend (.env):
REACT_APP_API_URL=http://localhost:5000
- Start the backend server:
cd backend
npm start
- Start the frontend development server:
cd frontend
npm start
The application will be available at http://localhost:3000
- Create admin account:
Register a new user called 'admin' or what ever you have as admin account in your .env file
Admin accounts have an admin panel to manage other accounts.
POST /auth/register
- Register new userPOST /auth/login
- User loginGET /auth/profile
- Get user profilePUT /auth/profile/email
- Update emailPUT /auth/profile/password
- Update password
POST /upload
- Upload single filePOST /upload/chunk
- Upload file chunkGET /upload/chunks
- Get uploaded chunksGET /upload/status
- Get upload statusGET /files
- List user's filesGET /files/:filename
- Download fileDELETE /files/:filename
- Delete filePUT /files/:filename/rename
- Rename filePOST /files/zip
- Bulk download as ZIP
POST /files/share
- Create shareable linkGET /share/:token
- Access shared file
GET /admin/users
- List all usersDELETE /admin/users/:username
- Delete userPUT /admin/users/:username/session
- Extend user sessionDELETE /admin/cleanup
- Clean up expired users
- All passwords are hashed using bcrypt
- JWT tokens are used for authentication
- Rate limiting is implemented for registration
- CAPTCHA protection for registration
- User files are isolated in separate directories
- Share links can be password-protected and time-limited
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.