My Movies is a website which is all about movies. It fetches data from external API and renders it in a very stylish and attractive UI. It has following functionalities
- Website shows popular movies of different genres
- Website also shows various details of a movie along with its poster and trailer/teaser
- User can sign up/sign in to the website
- User can mark any movie as favourite
- User can rate and review any movie
Following technologies are used while making this project
- Front End: HTML, EJS, CSS, JS, JQuery
- Back End: NodeJS. Express, Passport
- Database: MongoDB
- Testing: Jest
- Documentation: Overleaf (LaTeX)
This project has following dependencies
- Various Node packages managed by NPM
- The Movie DB API as external API to fetch movie data
- Cloudinary for cloud storage of Video assets
- MongoDB Atlas to host database
- Heroku for FREE hosting
The website is hosted at https://my-movies-420.herokuapp.com/. However, due to basic Free package of hosting and large amount of data handled by website, the hosted site is slower than usual. For better experience, hosting package can be upgraded or user can set up environment and run it locally.
The complete demonstration of the website can be found at https://drive.google.com/file/d/1Fy_5AdZ_82nEMzl950DnAOlpm-o94OnS/view?usp=sharing Documentation includes Software Requirement Specification and Software Design Documents both of them are kept in Documentation Folder.
- Documentation: Contains files related to documentation including Software Requirement Specifications, Software Design Documents and User Manual.
- config: Contains files related to Authentications
- models: Database Schema related files
- routes: NodeJS files containing routes to various pages of the website
- storage: Store the data which is rendered on website
- tests: All testing files
- views: All Front End files
- server.js: NodeJS file for main server
Follow these steps to set up the project
- You should have NodeJS installed in your local machine. If you don't have NodeJS then you can install NodeJS from https://nodejs.org/en/
- You should have installed git and configured it. If you haven't then you can install git from https://git-scm.com/. After downloading, you can follow steps given at https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup to configure Git
- You should have preferably installed an IDE to see/edit the code. We recommend to use VS Code ( Download link: https://code.visualstudio.com/ )
- On the main page of this repository, click on the button "Code" and copy the link
- Choose or make a new folder in your local machine where you want to clone this repository
- Open terminal and go to the path where you want to clone this repo. If you are using VS Code then you can directly open terminal in VS Code.
- Type "git init" (without quotes)
- Type "git clone " (without quotes and angular brackets)
- The repository will be cloned into your local machine. Then you can type "cd My-Movies" (without quotes) to navigate to the cloned repository.
- This project requires 2 files which are not uploaded on this repository namely node_modules and keys2.js without which the project can not run locally.
- Type "npm install" (without quotes) in terminal and node_modules will be automatically downloaded
- For keys2.js, you can request the same by mailing to [email protected] and any one of the four contributors will(may) respond back. However, it will be solely contributor's choice to give keys2.js file. However, you can make your own keys2.js file which contains database details. You have to keep the file at the level of server.js in folder hierarchy.
- Now, after doing all above steps, type "node server" (without quotes) in terminal. If everything is set up correctly then server will start and you can access the website at localhost:5000 in your browser.
- If you change any file in the project then you should restart the server by pressing Ctrl + C to terminate the process and then you have to follow step-13 to restart the server with the changes you have done
- If you don't want to restart server everytime when you make a change then you can type "nodemon server" (without quotes) in terminal instead of "node server". Everytime you make changes to EJS/CSS/JS files the server will restart automatically
- Run 'npm test' to run the tests specified in the test folder.
COntributions will be encouraged. If you want to contribute then follow these steps:
- Fork this repository and make a copy of your own or make a new branch on this repository
- Follow the steps given in previous section to clone from forked repo/new branch and set up the project
- Make changes to the project
- Always remember to pull before you commit
- Commit final changes to forked repository/new branch
- Create a pull request and if contributors agree then your code will be merged with the main repository
- You can refer https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/setting-guidelines-for-repository-contributors for more details regarding contributions
This project is developed by
- Komal Kumar (kkomalk)
- Priyanshu Uttam (uttam509)
- Purnadip Chakrabarti (ChakPC)
- Vaibhav Chandra (vaibhavviking) (Owner of repo)
Content(Movie details) shown on website may be explicit and may require parental discretion. It is to be noted that Developers/Contributors of this project shall not be considered responsible for the same. All data is fetched through external API and rendered without any censorship. The purpose of this project is to exploit data received by API and render the same in a stylish and attractive Front End.