← All posts

Why I built FolioReader

Every PDF reader I tried was either too heavy, locked my files on-device, or charged €10/month for basic sync. I wanted something minimal, fast, and honest — so I built it.

I read a lot of PDFs. Research papers, technical books, essays. Over the years I've tried most of the apps in this space — GoodReader, PDF Expert, Zotero, Adobe Acrobat — and they all have the same problem: they were built for a different era of computing, where your files lived on one device and syncing was an afterthought bolted on later.

The ones that do sync well tend to be subscription products that charge you monthly for features that should be table stakes. I don't want to pay €10/month just to open a PDF I already own on two different computers.

The itch

It started with a frustration I couldn't shake: I'd highlight something on my laptop, then reach for my tablet and the annotation wouldn't be there. Or I'd be on my phone and couldn't even open the file because it was stored locally on my Mac. Or I'd move between devices mid-chapter and lose my reading position.

The technical problem is not complicated. You need a server that stores files and syncs reading state. But no one had built this in a way that was simple enough to trust and honest enough to actually use.

What I wanted

Three things, really:

Files in the cloud. Not synced to iCloud or Google Drive or Dropbox — I wanted a service that knew about PDFs specifically and could serve them efficiently.

Reading progress that follows you. Open a document on any device and land on the right page, no friction.

Annotations that are yours. Not locked in a proprietary format, not dependent on a subscription to access.

The stack

I built the backend in Go — it compiles to a small binary, the concurrency model fits the problem well, and I wanted something I could deploy cheaply. The client is Flutter, which lets me target web, Android, and iOS from a single codebase without the performance compromises of a React Native approach.

Storage is pluggable — local Postgres bytea in development, S3-compatible object storage in production. The whole thing runs on a single small VPS and costs less than a coffee per month to operate.

Free sync, for real

One decision I made early: sync would be free, always. Not a 30-day trial, not limited to two devices. The free tier supports up to 10 documents with cross-device sync included. If you want an unlimited library you pay €39/year — €3.25/month — which is reasonable for what you get.

I wanted the pricing to reflect what it actually costs to run, not what the market will bear.


FolioReader is still early. There's a lot I want to add — export, full-text search, a mobile app with offline support. But it works today, it's fast, and the sync is solid. If you read PDFs seriously, give it a try.