Before this, I was using Google Play Book to upload a pdf and read it. But it has its few cons, most important one is it is not available for desktop.
For the past few months, I’ve been using a personal project I built to manage and read my PDF library. I originally built it because I wanted a way to read my own PDFs across all my devices without dealing with the vendor lock-in of platforms like Google Play Books.
It is basically strip down version of Google Play Books where I can upload my own PDFs, read them in the browser, highlight sentences, and bookmark pages. All of my progress and annotations are saved to a database, so I can seamlessly pick up where you left off on any device.
I’ve been using it daily for my own reading and it’s been working great. Since it’s been so useful to me, I figured it might be helpful to others. So, I’ve decided to open-source it so anyone can self-host it.
And I have named it Shelf Host.
About the stack:
I specifically designed it to be free. It’s built to run almost entirely on Cloudflare’s free tier (using Workers, D1, and R2). The only cost is R2’s pay-per-usage for storage, which is negligible for personal use, though it does require adding a card to your Cloudflare account.
You can check out the code and self-host it here:
Shelfhost
Shelfhost is a self-hosted PDF library, reader, and highlighting tool designed to provide a warm, focused, and distraction-free reading experience for your PDF collection.
Built using modern serverless tech stacks, Shelfhost can be deployed globally for $0/month on Cloudflare's free tier.
Key Features
- Distraction-Free Reader: An interface designed to feel like sitting down with a good book — warm, focused, and unhurried. The browser UI chrome is minimal and retreats into the background while you read.
- Text Highlights: Highlight text selections instantly. Supports multiple highlight colors (yellow, green, pink, blue) to organize your thoughts.
- Page Bookmarks: Bookmark pages to easily navigate back to key reference points.
- Auto-Resume Progress: Automatically tracks your reading progress (debounced on scroll) and resumes right where you left off.
- Global Serverless Backend: Powered by Nuxt Nitro running on Cloudflare Workers and Pages, giving you instant load times anywhere in the…
If you decide to try it out, please feel free to open issues for bugs or PRs for features.
And If you are a Product Hunt user, please feel free to upvote it there.
Top comments (0)