VueTube RESTful API - YouTube Clone
VueTube is a YouTube clone built with nodejs, expressjs & mongodb.
Features
CRUD (Create, Read, Update And Delete)
- Authentication with JWT (Reset Password with email)
- Login (User/Admin)
- Register
- Forgot Password
- Pagination and search where necessary
- API Security (NoSQL Injections, XSS Attacks, http param pollution etc)
- Video (CRUD)
- Upload video
- Upload video thumbnail
- Watch video
- Increase Views
- Like and dislike video
- Download video
- Comment & reply for video
- Update video details
- Delete video
- Subscribe to a channel
- View liked videos
- Trending
- Subscriptions
- History (CRUD)
- Watch history
- Search history
- Settings
- Modify channel name and email
- Change password
- Upload channel avatar
Frontend Repo
Frontend was developed with vue js and vuetify VueTube
API Documentation
Hosted on netlify: Coming Soon
Extensive and testing documentation with postman: VueTube API
Database Model
Though the diagram uses sql data type, this diagram is to show you the various collections in the mongo database.
Requirement
- NodeJS
- MongoDB
Configuration File
Rename the config/.env.example to .env, then modify to your environment variables, mongodb uri, set your JWT_SECRET and SMTP variables
NODE_ENV=development
PORT=3001
MONGO_URI=YOUR_URL
JWT_SECRET=YOUR_SECRET
JWT_EXPIRE=30d
JWT_COOKIE_EXPIRE=30
FILE_UPLOAD_PATH = ./public/uploads
MAX_FILE_UPLOAD = 1000000
SMTP_HOST=smtp.mailtrap.io
SMTP_PORT=2525
SMTP_EMAIL=
SMTP_PASSWORD=
FROM_EMAIL=[email protected]
FROM_NAME=QuizzApp
Email testing: use mailtrap for email testing, it's easy no stress.
Installation
Install all npm dependecies
npm install
Install nodemon globally
npm install -g nodemon
Note
Make sure you run the seeder to get categories in your database or Create a user with the role admin, then add category with the category endpoint.
Run database seeder
- Seeder folder is _data/
- Edit the seeder file if you want to
node seeder -i
Delete all data
node seeder -d
Start web server
node run dev
Screenshots
Delete the screenshot folder if you download this code (Screenshots folder is 3.14mb in size).
Sign In
Sign Up
Home Page
Watch Page
Upload Thumbnail Modal
For more screenshots check out the vue frontend repo VueTube
License
This project is licensed under the MIT License
Developed by Reagan Ekhameye (Tech Reagan)
Reach me on twitter @techreagan