IMDb--

Programming III: Final Project (2025-0)

A CLI application for searching movies, reading synopses, browsing genres, and managing personal watch lists.

PRs welcome badge Linux support badge macOS support badge Windows support badge
Lead marco badge Maintainer stiffis badge Maintainer abel badge
IMDb-- logo

Introduction

Goal

The goal of IMDb-- is to build a movie-focused platform centered on searching and viewing movie synopses. Beyond the technical challenge, the project was also used as a workflow exercise, simulating a more realistic development environment with fixed meetings, progress sharing, weekly planning, and feedback sessions.

Motivation

The team was motivated by the complexity of the problem. The project required data structures, algorithms, parallel programming, and teamwork, which helped improve both technical depth and communication skills.

Scope

IMDb-- supports searches by prefix or keyword, displays synopses and genres, and lets users keep a liked movies list and a watch later list.

Requirements

Software Requirements

  • C++ compiler: g++ (GCC) version 11.2.0 or later or clang++ version 13.0.0 or later
  • Operating systems: Linux (Ubuntu, Fedora, Arch, etc.), macOS, Windows

Hardware Requirements

No special hardware is required. The program is not especially demanding in terms of resources.

Installation

If a C++ compiler is not installed yet, it can be installed with: sudo apt-get install g++

Clone the repository and move into the project directory:

git clone <url>
cd imdb--/

Compile the project with: g++ -o main main.cpp

Run it with: ./main

User Guide

When the program starts, the main menu includes the following options:

You have no movies in Likes.
You have no movies in Watch Later.

=== Main Menu ===
1. View Watch Later movies
2. View liked movies
3. Search movies
4. View search history
5. Save state
6. Restore state
7. Recommended movies
0. Exit
--------------------------
| Select an option:      |
--------------------------

Main Actions

View Watch Later movies: Shows the movies saved in the Watch Later list. If the list is empty, the program displays a message.

View liked movies: Shows the movies saved in the Likes list. If the list is empty, the program displays a message.

Search movies: The user can search by full title or partial keyword. If there are no matches, the program reports it. If matches are found, the user can optionally filter them by genre.

Results are shown with pagination and extra options: n (next page), g (filter by genre), r (remove filter), 0 (exit).

View search history: Shows previous searches. If there is no history, the program reports it.

Save state: Saves the current application state.

Restore state: Restores the previously saved application state.

Recommended movies: Displays recommended movies. If there are none, the program shows a message.

Exit: Leaves the program.

Documentation

Class Diagram

The class diagram shows the program structure and the relationships between its classes: View Class Diagram

Data Cleaning

The dataset was cleaned using R. The process included loading libraries, loading the dataset, defining a text-cleaning function to remove non-Latin characters and unnecessary symbols, applying the function, and saving the cleaned data.