Learn

Building Movies database app using React, NodeJS and Redis

Ajeet Raina
Author
Ajeet Raina, Former Developer Growth Manager at Redis

IMDb(Internet Movie Database) is the world's most popular and authoritative source for information on movies, TV shows and celebrities. This application is an IMDB clone with basic account authentication and movie recommendation functionality. You will learn the power of RedisGraph and NodeJS to build a simple movie database.

  • •Frontend - React
  • •Backend - Node.js, Redis, RedisGraph
  • •Node - v13.14.0+
  • •NPM - v7.6.0+

Ensure that Docker container is up and running:

Ensure that Docker container is up and runnig

Copy .env.sample to .env and add the following details:

Open http://IP:3000 to access the movie app

Enter the details to create a new account:

Run the below query under RedisGraph to find the author acted in a movie

The app consumes the data provided by the Express API and presents it through some views to the end user, including:

  • •Home page
  • •Sign-up and Login pages
  • •Movie detail page
  • •Actor and Director detail page
  • •User detail page

The home page shows the genres and a brief listing of movies associated with them.

To be able to rate movies a user needs to be logged in: for that a basic JWT-based authentication system is implemented, where user details are stored in the RedisGraph for persistence.

On this page a user can rate the film and view the Actors/directors who participated in the production of the film.

  • •The data is stored in various keys and various relationships.
  • •There are 5 types of data
  • •User
  • •Director
  • •Actor
  • •Genre
  • •Movie
  • •Actor: id, bio, born , bornIn, imdbId, name, poster, tmdbId, url
  • •Genre: id, name
  • •Director: id, born, bornIn, imdbId, name, tmdbId, url
  • •User: id, username, password, api_key
  • •Movie: id, url, languages, countries, budget, duration, imdbId, imdbRating, indbVotes, movieId, plot, poster, poster_image, released, revenue, runtime, tagline, tmdbId, year
  • •User-RATED->Movie
  • •Director-DIRECTED->Movie
  • •Actor-ACTED_IN_MOVIE->Movie
  • •Movie-IN_GENRE->Genre