An open API service indexing awesome lists of open source software.

https://github.com/jayeshkhandelwal09/reelify

A Movie Database Application
https://github.com/jayeshkhandelwal09/reelify

axios bcrypt context-api express googleoauth2 jsonwebtoken mongo mongoose netlify nodejs passportjs react-router-dom reactjs render tailwindcss

Last synced: 2 months ago
JSON representation

A Movie Database Application

Awesome Lists containing this project

README

        

# MovieDB

Welcome to **MovieDB**, a sleek and fast movie database application built using the **MERN** stack. In just 3 days, this app was crafted to help users explore, search, and manage their movie favorites with a smooth and intuitive experience. Whether you’re a movie enthusiast or someone who just wants to keep track of your favorite films, MovieDB has you covered.

## Features

- **Authentication & Authorization:** Sign up, login, and authenticate using Google. Only authenticated users can access their personal favorites.
- **Private Routing:** Secure access to your **Favorites Page**, which is protected and only accessible to authenticated users.
- **Favorites Management:** Add or remove movies from your favorites with ease. Your favorite list is stored securely and updated in real-time.
- **Dark Mode:** A sleek dark theme to reduce eye strain during long movie-watching sessions.
- **Search Functionality with Debouncing:** Effortlessly search through a massive database of movies with optimized search performance using debouncing.

## Pages

- **Home Page:** The landing page where users can discover new movies, view movie details, and initiate searches.
- **Movie Details Page:** View detailed information about each movie including ratings, genre, description, and more.
- **Favorites Page:** A private route where authenticated users can manage their list of favorite movies.

## Installation

To get MovieDB running locally, follow these steps:

### Prerequisites

Ensure you have the following installed:

- **Node.js** (version 14 or higher)
- **MongoDB** (you can use a local or cloud instance like MongoDB Atlas)

### Steps

1. **Clone the repository:**

```bash
git clone https://github.com/yourusername/movieDB.git
cd client/movieDB
```

2. **Install backend dependencies:**

```bash
cd server
npm install
```

3. **Install frontend dependencies:**

```bash
cd client/moviedb
npm install
```

4. **Setup environment variables:**

Create a `.env` file in both the backend and frontend directories with the necessary environment variables (like your MongoDB URI and Google OAuth credentials).

5. **Start the server:**

For server:
```bash
cd server
npm run dev
```

For frontend:
```bash
cd client/moviedb
npm start
```

6. **Open your browser:** Navigate to `http://localhost:3000` to start using MovieDB!

## Tech Stack

- **Frontend:**
- React
- ContextApi (for state management)
- React Router (for routing)
- Axios (for HTTP requests)
- Tailwind (for UI components)

- **Backend:**
- Node.js
- Express
- MongoDB (with Mongoose for ORM)
- Passport.js (for Google Authentication)

- **Authentication:**
- Google OAuth 2.0

## Screenshots

You can add screenshots of your application by embedding images in the following format in your README file:

![Screenshot 2025-01-17 034406](https://github.com/user-attachments/assets/eaa230e4-1a67-49ab-9450-6b49fac0b49b)
![Screenshot 2025-01-17 034605](https://github.com/user-attachments/assets/8b335558-f94c-4641-a3a1-a170e18463ae)
![Screenshot 2025-01-17 034542](https://github.com/user-attachments/assets/231d49ee-19b7-4d1d-bca2-f2fe7fedd307)
![Screenshot 2025-01-17 034527](https://github.com/user-attachments/assets/f67af13a-5e8d-46f5-a57a-5fb1862a8a43)
![Screenshot 2025-01-17 034511](https://github.com/user-attachments/assets/1d8efb1e-c0b9-4941-9cc4-2a16d8bcc165)
![Screenshot 2025-01-17 034450](https://github.com/user-attachments/assets/c175c1c9-7b44-438a-9cd5-bf0cd156071c)
![Screenshot 2025-01-17 034434](https://github.com/user-attachments/assets/6bff9491-47b3-41b1-91b5-a76057efaf71)

## How to Use

1. **Authentication:** Upon visiting the site, click the Google login button to authenticate or sign up. Once logged in, you can start adding movies to your favorites.
2. **Search:** Start typing in the search bar, and the app will show movie results in real-time, thanks to debouncing that optimizes performance.
3. **Movie Details:** Click on any movie to see detailed information, such as the plot, actors, director, and more.
4. **Favorites:** If you're logged in, you can add any movie to your favorites by clicking the “Add to Favorites” button. You can also remove movies from your list at any time.