# Letterboxd Diary Poster Picker

![Project Screenshot](/assets/project.png)

A web application to browse and select your favorite movie posters from your Letterboxd diary.

## Features

- **CSV Import**: Upload your Letterboxd diary export to load your full watch history.
- **RSS Sync**: Sync your ~50 most recent diary entries directly via your Letterboxd username — no export needed.
- **Poster Gallery**: Browse all available posters for each movie via TMDB.
- **Poster Selection**: Pick your favorite poster for each film.
- **Selection Recap**: Review all your selections in one place.
- **ZIP Download**: Download all selected posters as a ZIP file.
- **Responsive Design**: Works on desktop and mobile.

## Getting Started

### Prerequisites

- Node.js (v14.0.0 or later)
- npm (v6.0.0 or later)
- A running instance of the [backend](https://github.com/Hugyouu/Letterboxd-Diary-Posters-Picker-backend)

### Installation

1. Clone the repository:

   ```
   git clone https://github.com/Hugyouu/Letterboxd-Diary-Posters-Picker.git
   ```

2. Navigate to the project directory:

   ```
   cd Letterboxd-Diary-Posters-Picker
   ```

3. Install dependencies:

   ```
   npm install --legacy-peer-deps
   ```

4. Start the development server:

   ```
   npm start
   ```

5. Open [http://localhost:3000](http://localhost:3000) to view it in the browser.

## Usage

1. **Import your diary** — either upload a `diary.csv` exported from [letterboxd.com/data/export](https://letterboxd.com/data/export/), or enter your Letterboxd username to sync via RSS.
2. **Browse posters** — for each film in your diary, scroll through the available posters fetched from TMDB.
3. **Select a poster** — click to pick your favorite for each movie.
4. **Download** — use the download button in the header to export all selected posters as a ZIP.

## Technologies

- React / Redux
- Material UI
- Flask (backend)
- TMDB API

## Acknowledgments

- [Letterboxd](https://letterboxd.com/) for the diary data
- [The Movie Database (TMDb)](https://www.themoviedb.org/) for the poster images
