NOTE: This is the backend of the MovieRate! Please visit the frontend here!
MovieRate | Movie Review Platform
MovieRate is a movie review platform to give the chance to people to rate movies/series and also make them aware if something is worth the time, effort, and money to watch.
Explore the docs »
View Web Application
·
Report Bug
·
Request Feature
Table of Contents
- People need to be aware of what they are going to watch so that they know if that movie or series is worth watching!
- Directors must be able to create an account:
- Insert pictures and videos to promote their movies or series.
- Include the cast.
- Insert the release date.
- Include the genres.
- Insert language.
- Insert film rating.
- Update a movie or series.
- Delete a movie or series.
- Create actors.
- Update actors.
- Delete actors.
- Allow movies and series to be featured on the carousel of the home page of the full-stack application.
- Allow users to create an account and also give them the option to sign in using a One Time Password (OTP).
- Display streaming sercives using the public APIs WatchMode API and Streaming Availability API.
- A fully functional review system for each movie and series. Enable users to write reviews and comments for each movie and series.
- Reset password functionality for both the director account and the user account.
- Infinite scroll to fetch more movies, series, and actors as users keep scrolling down the list.
- Dark mode functionality where a button will allow users to toggle between light and dark mode.
- Live search functionality where users can search for movies, series, and actors.
- Create movies/series/documentaries.
- Create actors.
- Give the ability to users to become Admins and contribute to the open soruce moview review platform MovieRate.
- Third-party Authentication using Passport.js for Google and GitHub.
- Fully functional and responsive web application with the main focus on desktops, mobile devices, and tablets.
To get a local copy of MovieRate up and running locally follow these simple example steps:
NOTE: How to check if Node and NPM are installed and what is their versions
node -v
npm -v
NOTE: How to check if Git is installed and what is its version
git -v
-
Please make sure you have Node installed and use Node version: v16.15.0
- You can use nvm to switch between different node versions:
-
Please make sure you have NPM installed (it usually comes with Node installation)
npm install npm@latest -g
-
Please make sure you have git installed
-
Please make sure you have MongoDB Compass installed
- MongoDB Compass: https://www.mongodb.com/try/download/compass/
-
Get a free WatchMode API Key at https://rapidapi.com/meteoric-llc-meteoric-llc-default/api/watchmode or at https://api.watchmode.com. (for getting Streaming Services)
-
Get a free Streaming Availability API Key at https://rapidapi.com/movie-of-the-night-movie-of-the-night-default/api/streaming-availability. (for getting Streaming Services)
-
Get a free Mailtap API Username and Password at https://mailtrap.io/signin. (for sending emails during production. Switch to Brevo for deployment.)
-
Get a free Cloudinary Username, API Key, and API Secret at https://cloudinary.com. (for uploading and storing images and videos)
-
Get a free Google API Key at https://console.developers.google.com. (for Google third-party authentication)
- When you sign-in to https://console.developers.google.com create a new project.
- Create OAuth 2.0 Client IDs.
- Set Authorized JavaScript origins to: http://localhost:3000
- Set Authorized redirect URIs to: http://localhost:8000/auth/google/callback
-
Get a free GitHub API Key at https://github.com/settings/developers. (for GitHub third-party authentication)
- When you sign-in to https://github.com/settings/developers create a new project.
- Create OAuth 2.0 Client ID and Client Secret.
- Set Homepage URL to: http://localhost:3000
- Set Authorization callback URL to: http://localhost:8000/auth/github/callback
-
Navigate to the directory where you want to clone/run/save the application
cd your_selected_directory
-
Clone this repository (backend)
git clone https://github.com/GeorgiosIoannouCoder/movierate-backend.git
-
Clone this repository (frontend)
git clone https://github.com/GeorgiosIoannouCoder/movierate-frontend.git
-
Navigate to the movierate-backend git repository
cd movierate-backend
-
Git chekout to the first version/commit of this repository (backend) because now it is setup for deployment
git checkout ecc661073823ba01d74a483a6c7fda0405473853
-
Install NPM packages
npm i
-
Create a .env file inside the movierate-backend directory
MONGO_URI=mongodb://127.0.0.1:27017/movierate_db JWT_SECRET=here_have_a_random_secret_code MAIL_TRAP_USER=user_get_it_from_mailtrap MAIL_TRAP_PASS=password_get_it_from_mailtrap CLOUD_NAME=name_get_it_from_cloudinary CLOUD_API_KEY=api_key_get_it_from_cloudinary CLOUD_API_SECRET=api_secret__get_it_from_cloudinary GOOGLE_CLIENT_ID=client_id_get_it_from_google GOOGLE_CLIENT_SECRET=client_secret_get_it_from_google GITHUB_CLIENT_ID=client_id_get_it_from_github GITHUB_CLIENT_SECRET=client_secret_get_it_from_github
-
Run the backend server application (running at port 8000)
npm start
-
Open MongoDB Compass and connect to the URI mongodb://127.0.0.1:27017/movierate_db. Here you will see your database movierate_db being created and storing the data of the web application
-
Open a second terminal
-
Navigate to the directory selected at Step 1
cd directory_selected_at_step_1
-
Navigate to the movierate-frontend git repository
cd movierate-frontend
-
Git chekout to the first version/commit of this repository (fronted) because now it is setup for deployment
git checkout 649e6c09590d49a63d25226f0df844e6cb2c7297
-
Install NPM packages
npm i
-
Run the frontend application (running at port 3000)
npm start
To try the MovieRate application click on this link!
You can use the following two accounts to test the application in case that you do not want to register or use the third-party authentication:
-
Admin
- Email: admin@email.com
- Password: 12345678aA!
-
User
- Email: user@email.com
- Password: 12345678aA!
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- 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
Distributed under the MIT License. See LICENSE for more information.
MIT License
Copyright (c) 2023 Georgios Ioannou
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Georgios Ioannou - @LinkedIn
Georgios Ioannou - @georgiosioannoucoder - Please contact me via the form in my portfolio.
Project Link: https://github.com/GeorgiosIoannouCoder/movierate-backend