Next.js Movie Database App

Posted by

Building a Movie Database App with Next.js

In this tutorial, we will be building a movie database app using Next.js. Next.js is a React framework that allows you to build server-rendered React applications easily. We will be using it to create a movie database app where users can search for their favorite movies, view movie details, and save movies to their favorites list.

Prerequisites

Before getting started, make sure you have Node.js installed on your machine. You can download it from Node.js official website.

Step 1: Setting up a new Next.js project

First, let’s create a new Next.js project using the following command in your terminal:

npx create-next-app movie-database-app
cd movie-database-app

This command will create a new Next.js project in a directory called movie-database-app.

Step 2: Installing dependencies

Next, let’s install some dependencies that we will be using in our project. Run the following command in your terminal:

npm install axios

We will be using Axios to make HTTP requests to fetch movie data from an API.

Step 3: Creating components

Now, let’s create some React components for our movie database app. Inside the components directory, create a new file called MovieList.js with the following content:

import React from 'react';

const MovieList = ({ movies }) => {
  return (
    <div>
      {movies.map(movie => (
        <div key={movie.id}>
          <img src={movie.posterUrl} alt={movie.title} />
          <h2>{movie.title}</h2>
          <p>{movie.overview}</p>
        </div>
      ))}
    </div>
  );
};

export default MovieList;

This component will display a list of movies passed as props.

Step 4: Fetching movie data

Next, let’s fetch movie data from an API. Inside the pages directory, create a new file called index.js with the following content:

import React, { useState, useEffect } from 'react';
import axios from 'axios';
import MovieList from '../components/MovieList';

const Home = () => {
  const [movies, setMovies] = useState([]);

  useEffect(() => {
    const fetchData = async () => {
      const response = await axios.get('https://api.themoviedb.org/3/movie/popular?api_key=API_KEY_HERE');
      setMovies(response.data.results);
    };

    fetchData();
  }, []);

  return (
    <div>
      <h1>Popular Movies</h1>
      <MovieList movies={movies} />
    </div>
  );
};

export default Home;

In this component, we are fetching popular movies from The Movie Database API and displaying them using the MovieList component.

Step 5: Running the project

Finally, let’s run our movie database app using the following command in your terminal:

npm run dev

This command will start a development server for your Next.js project. You can now open your browser and navigate to http://localhost:3000 to see your movie database app in action.

That’s it! You have successfully built a movie database app using Next.js. Feel free to customize the app further by adding more features like movie search, movie details page, and favorites list. Happy coding!