Utils
Day-to-day PDF toolkit (merge, split, rotate, compress) with Scan to Text OCR in English and Nepali.
Utils is a day-to-day PDF toolkit that handles common document chores in the browser.
Problem
Everyday PDF work (merging, splitting, rotating, compressing) usually means uploading documents to third-party websites, which is a poor fit for files that should not leave your machine.
What I built
A single workspace for merge, split, reorder, remove pages, rotate and compress, plus an interactive editor. The PDF tools run entirely in the browser, so files are processed locally. Scan to Text sends a scan to a separate OCR service that reads English and Nepali. Also includes internal finance tooling.
Feature reel
Merge
Combine PDFs in any order, entirely in the browser.
Split & reorder
Pull out page ranges or put pages in a new order.
Rotate
Rotate selected pages by 90, 180 or 270 degrees.
Compress
Shrink image-heavy PDFs without leaving the page.
Architecture & stack
- Next.js 16 with pdf-lib and pdf.js running client-side for the PDF tools
- better-auth with admin roles and TOTP two-factor authentication; sensitive tools are only available once two-factor is enabled
- Scan to Text calls a standalone FastAPI + PaddleOCR microservice directly from the browser, authenticated with short-lived JWTs that the service verifies against the app's published JWKS
- PostgreSQL through Prisma
What I learned
Doing the work client-side is both a privacy feature and a cost saving: most tools need no server at all. For the one part that does (OCR), splitting it into its own service with token-based trust kept the heavy OCR engine out of the main app and let it be deployed separately.