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
- 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.
- 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.
- 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)

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
Other projects
Talk about a projectSuper Juice
The bartender's math, done in three taps.
Native Android app in Kotlin and Jetpack Compose that calculates citrus super juice: weigh the peels and it returns the exact grams of each acid and of water. Offline, no permissions, three languages.
- Kotlin
- Jetpack Compose
- Room
- DataStore
Recebe Avisa
Receives, logs and notifies. On its own.
Package-management SaaS for residential buildings: the doorman photographs the label, OCR reads it, fuzzy search matches the resident, and the platform notifies them on their preferred channel — with automatic fallback.
- React 18
- Vite
- Node.js 20
- Express
Triarquia
Save, invest, grow — in that order.
A product study in personal finance: a dashboard that unlocks the investing pillar only once debt is under control, with an AI advisor reasoning over backend-computed numbers. It exists as a personal-use prototype.
- React
- Vite
- Tailwind CSS
- Flask