Letterboxd

A social diary for films: log what you watch, rate it, review it, and read everyone else's takes.

NOT REALLY · consider alternatives
price $1.58/mosubscription / year $18.96estimated build time one sittingreplaced by 0 people

The logging half of Letterboxd is trivial: a table of films, a date, a rating, a note. The half people actually open the app for is everyone else, friends' four-star shrugs, review pages with thousands of jokes, lists that function as film school syllabi, and the year-end stats that only mean something because they are comparable. A one-shot build gives you a private diary with no one in it, and you will still need TMDB to get posters and metadata that do not look broken. If you genuinely only want a watch log, build it and enjoy the speed. If you want the film internet, you are not building the film internet this weekend.

Build verification: not recorded. How we judge buildability

What you give up

  • Every other human: friends' ratings, popular reviews, comment threads
  • Curated and community lists, which are most of the discovery value
  • Aggregate ratings and the histogram that tells you if a film is divisive or just bad
  • Mobile apps, offline logging, share cards, streaming availability data
  • Importing your existing history back out of anything without a CSV wrangle

Why people still pay

The paid tier is mostly a tip jar with benefits: no ads, better stats, watchlist filtering by streaming service, and a few power-user views. People pay because the free product already earned a place in their routine and the annual price is roughly a cinema ticket. The value being purchased is not features, it is continued access to a place where their taste is legible to other people who care about films. A private diary cannot sell that at any price.

Your build guide

The stack, security requirements, and agent rules for a focused replacement.

Before you start

  • TMDB API key for film metadata and posters
  • Node 20+
  • SQLite (no server to run)
01
SQLite via better-sqlite3, one file at ./data/diary.db, schema created on first run.
02
Data model:.
03
Interface for this film logging and reviews workflow: a focused film logging and reviews input, review, and export interface.
engineering roadmap

Implementation plan

1

Phase 1, architecture and data

SQLite via better-sqlite3, one file at ./data/diary.db, schema created on first run. Data model:.

2

Phase 2, implement

films: tmdb_id (primary key), title, year, director, runtime, poster_path, overview, cached_at.

3

Phase 3, implement

entries: id, tmdb_id, watched_on (date), rating (0.5 to 5 in half steps, nullable), review (text, nullable), rewatch (boolean), liked (boolean), created_at.

4

Phase 4, review and output

watchlist: tmdb_id, added_at, note. CSV import that accepts the Letterboxd export format (Name, Year, Watched Date, Rating, Review, Rewatch) and matches to TMDB with a manual disambiguation queue for anything ambiguous.

5

Phase 5, recovery and acceptance

.env.local with TMDB_API_KEY. Commit .env.example only. Fail loudly with a readable message if the key is missing. Verify this invariant with a saved fixture: A failed platform call retains the draft and cannot be marked published; retries use a stable delivery key. State the practical limit: Every other human: friends' ratings, popular reviews, comment threads.

the pro prompt
Build a local-first personal film diary web app. Single user, no accounts, no cloud, no telemetry.

Stack, non-negotiable:
- Next.js 15 with the App Router, TypeScript, Tailwind.
- SQLite via better-sqlite3, one file at ./data/diary.db, schema created on first run.
- No auth, no external services except TMDB for metadata.

Secrets:
- .env.local with TMDB_API_KEY. Commit .env.example only. Fail loudly with a readable message if the key is missing.

Data model:
- films: tmdb_id (primary key), title, year, director, runtime, poster_path, overview, cached_at.
- entries: id, tmdb_id, watched_on (date), rating (0.5 to 5 in half steps, nullable), review (text, nullable), rewatch (boolean), liked (boolean), created_at.
- watchlist: tmdb_id, added_at, note.

Features in scope:
- Search box that hits TMDB search, shows posters and years, one click to log. Cache the film row locally so the app works offline for anything already logged.
- Log form: watched date defaults to today, half-star rating widget, review textarea, rewatch and liked toggles.
- Diary view grouped by month, newest first, poster grid plus compact list toggle.
- Film detail page: local metadata, every entry you have for it, rating history.
- Watchlist page with add from search and a one-click promote to a diary entry.
- Stats page: films per year and per month, rating distribution histogram, top directors by count, total runtime in hours and days, longest streak of consecutive days with a log.
- CSV import that accepts the Letterboxd export format (Name, Year, Watched Date, Rating, Review, Rewatch) and matches to TMDB with a manual disambiguation queue for anything ambiguous.
- CSV export of everything.

Explicitly out of scope: any social features, follower graphs, comments, aggregate ratings, streaming availability, mobile apps, push notifications, deployment config.

Deliver: working app, README with setup in under five commands, seed script that inserts three sample entries so the stats page is not empty on first load.

$ open in your agent (prompt prefilled, you press enter), copy the prompt or copy AGENTS.md · generated from this app's build plan

prior art · use these instead of building, if you'd rather

No prior-art project is listed yet. Compare the scoped build with the paid product before choosing.

share on X ↗

Questions about Letterboxd

Can you build your own Letterboxd with AI?

A full replacement is not the recommended project. The logging half of Letterboxd is trivial: a table of films, a date, a rating, a note. The half people actually open the app for is everyone else, friends' four-star shrugs, review pages with thousands of jokes, lists that function as film school syllabi, and the year-end stats that only mean something because they are comparable. A one-shot build gives you a private diary with no one in it, and you will still need TMDB to get posters and metadata that do not look broken. If you genuinely only want a watch log, build it and enjoy the speed. If you want the film internet, you are not building the film internet this weekend.

What does the Letterboxd build prompt cover?

The prompt starts with this scope: A local film diary that searches TMDB for a title, logs a watch date, rating and review, and shows your history plus a stats page. Full-product capabilities excluded from the comparison include: Every other human: friends' ratings, popular reviews, comment threads; Curated and community lists, which are most of the discovery value; Aggregate ratings and the histogram that tells you if a film is divisive or just bad. Follow the implementation plan and its prerequisites before expanding the build.

How do I use the prompt, AGENTS.md and agent skills?

Start with the Letterboxd prerequisites and stack, then copy the prompt into your coding agent. Save the project rules as AGENTS.md in the project root. Linked skills are optional packages or source instructions for specific tasks; review their current contents and install only those matching the chosen stack. A skill does not supply API credentials or verify the finished app.

How long will this Letterboxd project take?

The catalogue estimate is one sitting for the limited scope. Setup, integration approvals, debugging, deployment and ongoing maintenance can add time. This is an estimate, not a delivery guarantee.

What would I give up by replacing Letterboxd?

Every other human: friends' ratings, popular reviews, comment threads; Curated and community lists, which are most of the discovery value; Aggregate ratings and the histogram that tells you if a film is divisive or just bad; Mobile apps, offline logging, share cards, streaming availability data; Importing your existing history back out of anything without a CSV wrangle. The paid tier is mostly a tip jar with benefits: no ads, better stats, watchlist filtering by streaming service, and a few power-user views. People pay because the free product already earned a place in their routine and the annual price is roughly a cinema ticket. The value being purchased is not features, it is continued access to a place where their taste is legible to other people who care about films. A private diary cannot sell that at any price.

What price is this guide comparing against?

The recorded Pro plan is $1.58/mo (annual subscription per member), checked 2026-08-18. Check the linked pricing source before buying. Building your own also has hosting, API and maintenance costs; the recorded amount is not a guaranteed saving.

What can I use instead of building Letterboxd?

No alternative is listed in this entry yet. That is a gap in this catalogue, not proof that no suitable product exists. Compare the paid product and the proposed scope before committing to a build.

Every week, more subscriptions die.

New verdicts, new prompts, the week's most-doomed apps.
One email. Unsubscribe in one click.

last week:100 Questions · KINDA1of10 · KINDA1Password · KINDA+1090 more

free forever · no scanner spam · the prompt stays on the site, the deaths come to you

$weekly: what got a verdict, what died.