I build private, client-side tools for teams
I built every one of the 979 tools on this site. I build fast, private, 100% client-side Next.js tools and internal dev utilities for teams who can't (or shouldn't) send their data to a server.
Private, client-side tools
Tools that process sensitive data (tokens, PII, internal data) entirely in the browser — nothing hits a server. Compliance-friendly by design.
Internal dev utilities
Formatters, converters, validators, generators, dashboards — the everyday tooling your team keeps rebuilding, done once and done well.
Fast, static, cheap to run
Next.js static exports on a CDN: hyper-fast, no servers to maintain, near-zero hosting cost. The same stack that runs this site.
This whole site is the portfolio
- Built and maintain all 979 tools on this site, solo
- Next.js 16 · React 19 · TypeScript · Tailwind — modern, type-safe stack
- Obsessive about performance, accessibility, and clean UX
- Everything client-side: your data never leaves the browser
Browse the 979 tools or read how it's built to see the quality bar.
Projects from $1,500
Have something in mind?
Tell me what you need, the data it touches, your timeline and budget. I'll reply with whether I'm the right fit and a rough quote — usually within a couple of days.
Why a client-side tool is often the right answer
A great deal of internal tooling exists to transform data that nobody is allowed to send anywhere — customer exports, log extracts, certificates, documents under an NDA. The moment such a tool has a server, it acquires a data-processing agreement, a retention policy, an access-control model and a breach surface. A tool that runs entirely in the browser has none of those, because the data never leaves the machine it was already on.
That is not a security claim about the code; it is a claim about the architecture. There is no upload to intercept, no database to exfiltrate and no log to subpoena, which is a stronger guarantee than any amount of careful server-side handling can offer.
What this approach handles well
Format conversion, validation, parsing, redaction, hashing, image and document processing, and anything that is fundamentally a pure function from input to output. Modern browsers ship a capable cryptography API, canvas and WebGL, WebAssembly for existing C and Rust libraries, and enough file access to work on multi-hundred-megabyte inputs without a round trip.
When it is the wrong choice
Anything needing shared state between users, a durable audit trail, a scheduled job, or a secret that must not reach the client — an API key for a paid service belongs on a server, and no amount of obfuscation changes that. Work requiring more compute than a laptop can supply, or a dataset too large to hold in memory, also belongs elsewhere.
It is worth saying plainly because the honest answer is sometimes that you do not need me. If a scheduled script or an existing SaaS product solves it, that is cheaper than commissioning anything.
How a project usually runs
A short conversation about the data and the constraint, then a fixed quote against a written scope rather than an hourly rate — which keeps the incentive on finishing rather than on billing. Delivery is the source plus a static build you host yourself, so there is nothing to renew and nothing that stops working if I disappear. The 979 tools on this site are the portfolio; every one of them is the same thing at a smaller scale.