# Local Movie Database

A clean, fast, and fully offline web application to browse and search your personal movie database (built from TMDB data).

The app displays movies in a beautiful card-based interface with posters, ratings, release years, full language names, and descriptions. Everything runs locally on your machine.

---

## Features

* Beautiful movie cards with TMDB posters
* Search by title or keyword
* Filter by:

  * Genre (multi-select)
  * Language (shows full names like "English", "Japanese", "Greek", etc.)
  * Minimum rating
  * Minimum vote count
  * Year range
* "Load More" button — loads 100 movies at a time
* No artificial result limit — you can keep loading until all matching results are shown
* Fully responsive 4-column layout
* Completely local (no data sent online)

---

## Requirements

* Python 3.10 or higher
* `streamlit`
* `pandas`
* A prepared SQLite database file named `movies.db` (≈1.4 million movies)

---

## Installation

### 1. Clone the repository

```
git clone <your-repo-url>
cd movie-project
```

### 2. Install dependencies

```
pip install streamlit pandas
```

Or using the requirements file:

```
pip install -r requirements.txt
```

### 3. Add your database

Place your `movies.db` file in the root folder (same directory as `movie_app.py`).

**Important:** The database must contain a table named `movies` with at least these columns:

* `title`
* `release_date`
* `vote_average`
* `vote_count`
* `overview`
* `original_language`
* `poster_path`
* `genres`
* `popularity`

### 4. Run the app

```
streamlit run movie_app.py
```

The application will automatically open in your default web browser.

---

## Project Structure

```
movie-project/
├── movie_app.py
├── movies.db
├── README.md
├── requirements.txt
└── .gitignore
```

---

## requirements.txt

```
streamlit
pandas
```

---

## Notes

* The first search may take a few seconds while the genre list is built.
* Movie posters are loaded from TMDB's public image server: [https://image.tmdb.org](https://image.tmdb.org)
* You can keep clicking "Load More" until all matching results are displayed.
* Best performance when the database has been cleaned (adult content removed).

---

## Tech Stack

* UI Framework: Streamlit
* Database: SQLite
* Data Processing: pandas
* Data Source: TMDB movie dataset



---

## ToDo

* download all posters so they are Completely local instead of fetching each time as i suspect request might get blocked on too many requests
* create a python script to grab the latest tmdb DB and add new entries to the movies.db
* add indexing to speed up searches, check if theres other speed up options possible
* improve the interface, maybe make the search options a single row at the top?