Skip to content

7uddy/IMDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Description

IMDb (an initialism for Internet Movie Database) is an online database of information related to films, television series, podcasts, home videos, video games, and streaming content online – including personal biographies, plot summaries, ratings, and fan and critical reviews.

Key Features

  • Movie Search: Quickly search for movies by title or category.
  • Movie Discovery: Explore new movies based on popular genres, ratings, and recommendations.
  • Reviews: Leave reviews for movies you’ve watched and see what other users think.
  • Movie Ratings: Rate movies using a 1 to 10-star system.
  • Categories: Movies are organized into categories such as action, comedy, drama, horror, science fiction, and more.
  • User-Friendly Interface: An easy-to-use design for a pleasant experience on all devices.
  • See Other User Reviews: Check out what other users have said about movies with their detailed reviews and ratings.

Technologies Used

  • Frontend: Angular
  • Backend: Laravel (PHP)
  • Database: MySQL
  • Authentication: Laravel Sanctum
  • Movie API: The Movie Database (TMDb)
  • WebSockets: Pusher
  • Testing:
    • Unit Testing: PHPUnit
    • Integration Testing: PHPUnit
    • End-to-end Testing: Playwright
    • Performance Testing: k6

Prerequisites

  • PHP
  • Composer
  • XAMPP
  • ZIP Extension for XAMPP (activated from php.ini)
  • Node.js
  • Angular CLI
  • MySQL

Backend Setup

git clone https://github.com/7uddy/IMDB.git
cd IMDB
cd backend
composer install

Configure the .env file

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=imdb
DB_USERNAME=root
DB_PASSWORD=

TMDB_API_KEY=your_tmdb_api_key
BROADCAST_CONNECTION=pusher
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=your_id
PUSHER_APP_KEY=your_key
PUSHER_APP_SECRET=your_secret
PUSHER_APP_CLUSTER=your_cluster

Run migrations

php artisan migrate

Change authentication

The authentication need to be updated to check Bearer token from requests by default. For this, handle function from Authenticate (from Backend\vendor\laravel\framework\src\Illuminate\Auth\Middleware\Authenticate.php) has to be overwritten like this:

public function handle($request, Closure $next, ...$guards)
    {
        if($jwt=$request->cookie('jwt')){
            $request->headers->set('Authorization', 'Bearer '.$jwt);
        }
        $this->authenticate($request, $guards);

        return $next($request);
    }

Start the Laravel server

php artisan serve

Frontend Setup

cd frontend
npm install
ng serve

System Architectural Diagram

Diagram

Photos with Desktop layout

Picture1 Picture2
Picture1 Picture2
Picture1 Picture2
Picture1 Picture2
Picture1

Photos with Mobile layout

Picture2 Picture1
Picture2 Picture1
Picture2 Picture1
Picture2

About

An IMDb clone.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors