VideoVerse is a comprehensive video sharing platform inspired by YouTube. It provides users with a seamless experience to upload, view, like, and comment on videos. The platform also supports features like user subscriptions, playlist creation, and social interactions through tweets.
This full-stack application demonstrates modern web development practices with a React.js frontend and Express.js backend, providing a responsive, interactive user experience.
- User registration and authentication
- Profile management with avatars and cover images
- Secure password handling
- JWT-based authentication
- Video uploads with thumbnails
- Video playback
- View count tracking
- Video details (title, description, duration)
- Video search and filtering
- Like/dislike videos
- Comment on videos
- Reply to comments
- Subscribe to channels
- Real-time notification system
- Create and manage playlists
- Add/remove videos to playlists
- Share playlists with others
- Post tweets
- Like tweets
- Share content across platforms
- React.js: UI library for building interactive user interfaces
- React Router: For navigation and routing
- Redux: State management
- Axios: HTTP client for API requests
- Tailwind CSS: Utility-first CSS framework for styling
- Vite: Build tool and development server
- Node.js: JavaScript runtime
- Express.js: Web application framework
- MongoDB: NoSQL database
- Mongoose: MongoDB object modeling
- JWT: Authentication using JSON Web Tokens
- Multer: File upload handling
- Cloudinary: Cloud storage for media files
- Bcrypt: Password hashing
- Node.js (v14 or later)
- MongoDB (local or Atlas)
- npm or yarn
- Clone the repository:
git clone https://github.com/yourusername/videoverse.git
cd videoverse
- Install backend dependencies:
cd backend
npm install
- Create a
.env
file in the backend directory with the following variables:
PORT=8000
MONGODB_URI=your_mongodb_connection_string
CORS_ORIGIN=http://localhost:5173
ACCESS_TOKEN_SECRET=your_access_token_secret
ACCESS_TOKEN_EXPIRY=1d
REFRESH_TOKEN_SECRET=your_refresh_token_secret
REFRESH_TOKEN_EXPIRY=10d
CLOUDINARY_CLOUD_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
- Start the backend server:
npm run dev
- Install frontend dependencies:
cd frontend
npm install
- Create a
.env
file in the frontend directory:
VITE_APP_BASE_URL=http://localhost:8000/api/v1
- Start the frontend development server:
npm run dev
- Access the application at
http://localhost:5173
- Register for a new account
- Update your profile information and upload avatar/cover images
- Browse videos on the platform
- Upload videos by clicking the "Upload" button
- Add title, description, and thumbnails to your videos
- View analytics for your uploaded content
- Like/dislike videos
- Comment on videos
- Subscribe to channels you enjoy
- Create playlists to organize your favorite videos
- Post tweets to share thoughts
- Interact with other users through comments and likes
- Build your subscriber base
Contributions are welcome! Please feel free to submit a Pull Request.
- 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.