BoxdBlend is a React + Vite web app that compares two Letterboxd exports and generates a cinematic compatibility report.
- Compares two users’ watched/rated data
- Calculates a
Blend Scorewith a multi-factor algorithm - Shows card-based insights, including:
- Shared films and overlap rate
- Most agreed / biggest rating clashes
- Watch-next recommendations
- Most rewatched films
- Rating generosity gap
- Recently watched (from
diary.csv) - 2026 watch count (from
diary.csv) - Era preferences
- Share tab for copy/share text
Use your Letterboxd data export from:
letterboxd.com/settings/data
Best input is the full .zip export. The app reads:
watched.csvratings.csvdiary.csv
- React 19
- Vite 8
- Plain CSS (single style string in
src/styles.js) - Local storage session layer via
src/storage.js
Use BoxdBlend directly on Vercel:
https://boxdblend.vercel.app
- Person A clicks Start a Blend and uploads data
- App generates a 6-character code
- Person B clicks Join a Blend, enters code, uploads data
- Results are generated and shown in card carousel
- Use the Share card to copy/share summary text
- Sessions are stored in browser storage, not a backend database
- For newest features (e.g., recent diary entries, rewatch counts), create a fresh blend instead of reusing old stored sessions
For cross-device code sharing in production, this app uses a Vercel Function (api/storage.js) backed by Upstash Redis.
- In Vercel dashboard, open your project
- Go to Storage / Integrations → add Upstash Redis
- Ensure Redis environment variables are added to the project
- Redeploy
Without Redis configured, the app falls back to local browser storage and friend codes will only work in the same browser/device.
The Most Niche vs Most Popular card can use real popularity data from TMDB.
- Create a TMDB API key at
themoviedb.org - In Vercel project settings, add environment variable:
TMDB_API_KEY=your_key_here
- Redeploy
If TMDB_API_KEY is missing, the card falls back to local heuristics.
The TMDB API route includes a built-in outbound throttle capped at 40 calls/second per server instance (below TMDB's 50/sec requirement).
src/App.jsx— app flow, session handlingsrc/FileUploader.jsx— zip/csv ingest and parsing pipelinesrc/analysis.js— blend scoring + insightssrc/ResultsView.jsx— card carouselsrc/ResultCards.jsx— result card UI componentssrc/csv.js— CSV parser and film shape transformssrc/storage.js— browser storage wrapper
Private project.