MovieMatch! is a web app that I decided to create after having a hard time with my significant other when trying to figure out what to watch on any given night.
(NSFW WARNING, due to some foriegn films not labeling their movies as "Adult" a rare one may slip through)
(This app requires you to already have Mongo installed locally or a cloud instance running)
First you will need to create a GitHub OAuth app in your GitHub developer settings.
Take the .env.example that you cloned with the repo and rename it just to .env. Update the variables inside with what you have.
CD into backend/src and create a directory named data
.
Now run npm i
to install all of the needed packages
Run both mongod --dbpath=./data
and npm run dev
Now cd into the frontend folder and also run npm i
to install all needed packages
Run the following command npm start
in both the backend and frontend folders and everything should be running!
All movies and their information are provided by TMDB and their free to use API!
This project utilizes Typescript both in the frontend (bootstrapped with create-react-app) and the backend (an express based RESTful api server).
The backend itself takes advantage of MongoDB by using Mongoose to interface with it. MongoDB stores users and their movies so that they can be queried at a later time (like when viewing all of your liked movies in My Stuff!).
User authentication is handled by PassportJS and its GitHub strategy. Users are logged in via GH and a cookie is saved (this cookie has also been encrypted to be a JWT). The JWT is sent with the requests that need it to authenticate a user to make sure one is logged in and to make sure that a movie is being saved to the proper place and user.
All API requests made are done using Axios.
Thank you Fontawesome for the icons!