All projects work/03 · live

Dev Tools

Seventeen utilities I got tired of googling every week, gathered into one panel. No sign-up and no usage limit.

Year
2026 · live
Role
From the first commit to deployment
Stack
Next.js 15 (App Router) · React 19 · TypeScript · Tailwind · shadcn/ui
Link
open the panel ↗
Painel do Dev Tools: barra lateral com as ferramentas agrupadas em Formatters and Text, Images and Colors e Generators and Utilities, e no corpo da página os cartões de cada ferramenta com um campo de busca acima.
the panel: a sidebar by category, search at the top, and every tool one click away hover to see it in colour

The problem

Converting a PNG to WebP, removing an image background, formatting JSON, generating a QR code, reading text out of a screenshot. Two-minute jobs that always end up in the same place: a site plastered with ads, a watermark on the output and a subscribe button halfway through. None of these tasks is hard, and every one of them still charges a toll.

The decision

Build all seventeen at once, in a single panel, and leave it up for free. The decision that holds the rest together was one of scope: each tool does one thing and asks for nothing in return. There is no account to create and no plan to subscribe to.

Seventeen tools, one route

The obvious path would be seventeen folders, seventeen pages and seventeen copies of the same shell. That works right up until you touch the layout: then it is the same fix seventeen times, and the seventeenth is the one that gets forgotten.

So the whole panel is a single dynamic route, /[tool], served from a central registry. Every tool declares itself there with a name, category, description and component; the sidebar, the search and the cards on the home page all read from that same registry. Adding the eighteenth means writing the tool and registering one line. Navigation updates itself, and search never disagrees with the menu because both read the same list.

17tools live
1route serves them all
0sign-ups, ads or limits

The file never leaves your machine

Processing happens in the tab, not on a server of mine. That solves infrastructure cost, upload waiting time and the privacy question all at once, because a file that never goes up needs no retention policy.

the compressor at work: 146 KB in, 58 KB out, 60.5% smaller and nothing left the machine hover to see it in colour

Copy and paste until the pattern shows up

This is where I learned the difference between repeating yourself and generalising too early. I wrote the first three tools by copying and pasting on purpose, abstracting nothing. Only when the third was done did the common shape show up on its own, and the central registry then became the consequence of something I had already watched happen three times. Had I abstracted on the first one, getting the shell right would have been luck.