All projects

Utils

Day-to-day PDF toolkit (merge, split, rotate, compress) with Scan to Text OCR in English and Nepali.

Next.js 16pdf-libbetter-authFastAPIPaddleOCR

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.

Want something like this?

Get in touch