All projects

Web app

Veredito

What's worth your time today.

Year
2026
Role
Product · Full-stack
Status
Live

Private repository.

The problem

Deciding what to watch costs more time than watching. The catalog is scattered across services, each with its own storefront ordering, and infinite scroll is designed to hold attention, not to help you choose.

The solution

An organizer that gathers movies and shows across catalogs and presents them ranked by rating — the piece of information that actually decides. No sponsored storefront, no infinite scroll.

Technical decisions

  1. 01

    The API key never reaches the browser

    Calls to the catalog provider go through server-side Route Handlers. An API key in client code is always extractable, and rotating a leaked key in production is a problem you avoid for free in the first architectural decision.

  2. 02

    A 24-hour cache shared across users

    Catalogs and ratings don't change minute to minute. Next's Data Cache serves the same response to everyone for a day, which keeps browsing instant and API usage well inside the free tier.

  3. 03

    App Router with server components

    Most of the page renders on the server and arrives as HTML. That leaves little JavaScript to download, execute and hydrate — in an interface that is essentially lists and images, that is what defines how fast it feels.

Screens

  • Catalog in rating bands: Worth Watching (≥ 8) above Good (7 to 7.9)

    Catalog in rating bands: Worth Watching (≥ 8) above Good (7 to 7.9)

  • Search with a designed empty state instead of a blank screen

    Search with a designed empty state instead of a blank screen

What shipped

  • API key isolated on the server, never exposed to the client
  • Catalog served from cache on most visits, inside the API's free tier
  • List interface with minimal client-side JavaScript

Stack

  • Next.js 14
  • App Router
  • React 18
  • TMDB API
  • Route Handlers