A modern web application for uploading videos to AWS S3, built with React and Node.js.
- Video file upload with drag-and-drop support
- Real-time upload progress indication
- AWS S3 integration for secure video storage
- Modern, responsive UI using Material-UI
- Error handling and success notifications
- Node.js (v14 or higher)
- npm (v6 or higher)
- AWS Account with S3 bucket
- AWS Access Key ID and Secret Access Key
- Clone the repository:
git clone <repository-url>
cd uploadapp
- Install backend dependencies:
npm install
- Install frontend dependencies:
cd client
npm install
- Configure environment variables:
- Create a
.env
file in the root directory - Add the following variables:
- Create a
PORT=3001
AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS_REGION=your_region
AWS_BUCKET_NAME=your_bucket_name
- Start the backend server (from the root directory):
npm run dev
- Start the frontend development server (from the client directory):
cd client
npm start
The application will be available at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
-
POST /api/upload
: Upload a video file- Accepts multipart/form-data
- Field name: 'video'
- Returns: JSON with upload status and file URL
-
GET /api/health
: Health check endpoint- Returns: JSON with server status
-
Frontend:
- React
- Material-UI
- Axios
- Emotion (for styling)
-
Backend:
- Node.js
- Express
- AWS SDK
- Multer
- Multer-S3
- The application uses environment variables for sensitive AWS credentials
- File uploads are restricted to video files only
- Maximum file size is limited to 100MB
- CORS is enabled for development purposes
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.