A simple app for ranking movies through pairwise comparisons. Import a public TMDb list, compare movies head-to-head, and generate a personalized ranked list with detailed statistics.
Dualist is a learning project and a fun way to play around with subjectively ranking lists of movies by breaking down the decision-making process into simple, binary choices. Instead of trying to rank entire list at once, you compare them two at a time with a simple question of, "Which would you rather watch?". The app tracks your choices, calculates win rates, and produces a final ranked list that you can share via permalink.
- TMDb Integration: Import any public TMDb list by URL
- Pairwise Comparisons: Compare movies two at a time with an intuitive card-based interface
- Automatic Ranking: Final rankings calculated from your comparison choices
- Shareable Results: Permanent links to your completed rankings
- Statistics: View wins, losses, and win rates for each movie
- Frontend: SvelteKit, TypeScript
- Backend: SvelteKit server routes
- Database: Supabase (PostgreSQL)
- External APIs: TMDb v4 API
- Animation: GSAP
- Node.js (v18 or higher)
- npm or pnpm
- A Supabase project
- A TMDb v4 API token (Get one here)
- Clone the repository:
git clone <repository-url>
cd dualist- Install dependencies:
npm install- Create a
.envfile in the project root:
SUPABASE_URL=your_supabase_project_url
SUPABASE_SERVICE_ROLE=your_supabase_service_role_key
TMDB_V4_TOKEN=your_tmdb_v4_token
TMDB_IMG_BASE=https://image.tmdb.org/t/p-
Set up your Supabase database schema (see
AGENTS.mdfor the full schema) -
Start the development server:
npm run devThe app will be available at http://localhost:5173 (or the port shown in your terminal).
- Enter a public TMDb list URL on the home page
- The app will import the movies and create all necessary comparison pairs
- Compare movies two at a time by clicking your preferred choice
- Once all comparisons are complete, view your final ranked list
- Share the permalink to show your results
- Letterboxd Integration: Support importing lists from Letterboxd in addition to TMDb
- Enhanced Analytics: Cross-list analytics surfacing interesting data for specific movies and matchups
- User Accounts: Optional user accounts to save and manage multiple lists
- Export Options: Export rankings in various formats (CSV, JSON, etc.)
Copyright (c) 2025 Alex Gilbert. All rights reserved.
For the moment, this project is only public for viewing and evaluation purposes. See LICENSE for details.