DEV Community

Cover image for I built ClipStack — a free read-later that actually finds the article you saved
Sunil Kumar
Sunil Kumar

Posted on

I built ClipStack — a free read-later that actually finds the article you saved

I built ClipStack — a free read-later that actually finds the article you saved.

You know the cycle. You bookmark something. Three weeks later you remember reading "that great article about Postgres locking" and you go look for it. Browser bookmarks search the title, not the body. The folder structure is six levels deep. The bookmarks tab loads in 4 seconds. You give up and Google the phrase you half-remember from the article.

That's the problem ClipStack solves. One click saves the full article — not just the link. Then you can search the body text of everything you've ever saved. Free forever, no card.

Live: https://clipstack.one
Chrome extension: https://chromewebstore.google.com/detail/fkdafeiembojodedkchlkogjhbcifeha

I'm an indie dev. Six people have installed it so far. I'd love your feedback.


What it actually does

  • 1-click save from any page via the Chrome extension. The full article HTML is parsed and stored, not just the URL.
  • Full-text search across the body of every saved article. You search for a phrase you remember; the article surfaces. Not a title match — a body match.
  • Reader view by default. No banners, no autoplay, no related-stories rail.
  • Tags, dedup, unlimited saves. If you save the same Hacker News post three times, it dedupes. Tags are flat, not nested — folders are a trap.

The stack

Nothing exotic, but a few decisions worth sharing.

Frontend & API: Next.js 16 (App Router), Server Actions for the save flow, NextAuth v5 with Google OAuth. The whole save round-trip is one Server Action call from the extension popup — no separate API layer.

Search: Postgres full-text search with a generated tsvector column and a GIN index. I evaluated Algolia and Typesense. For a single-user read-later corpus (a few thousand articles, max), Postgres FTS is plenty fast and adds zero infra. The query that powers /search is one WHERE tsv @@ plainto_tsquery($1) against a column that updates on insert via a trigger.

Content extraction: Mozilla's Readability.js running in the extension's content script before the save POST. This was the #1 source of bugs in early development. Some sites (paywalls, JS-heavy SPAs, Cloudflare-gated content) just won't extract cleanly — the extension falls back to "link-only mode" with a clear UI state instead of saving garbage HTML.

Chrome extension: Manifest V3, service worker for the background, popup for the save UI. The popup has six discrete states (logged-out, ready, saving, saved, duplicate, link-only-fallback) and they're a state machine, not boolean flags. Worth it — the popup IS the onboarding.

Hosting: Vercel for the Next app, Neon for Postgres. Both free tiers handle current load with margin to spare.

Three things I'd do differently

1. Build the extension first, dashboard second. I built the dashboard for a month before I started the extension. Nobody opens the dashboard. The extension popup is where every interaction starts. If I'd built the popup first, I'd have shipped two weeks earlier and the dashboard would be tighter because I'd already know what flows mattered.

2. Don't fight Readability.js. I spent a week trying to write a custom extractor that handled Substack and Medium "better" than Readability. It didn't. I shipped the custom one, found edge cases for two weeks, ripped it out, and went back to Readability + a link-only fallback. The fallback is the feature.

3. Ship the search before the polish. The differentiator is full-text search. I should have led with that in copy and screenshots from day one. Instead I led with "save articles" — which is what every competitor says.

Why I'm posting

I have 6 installs. The product works. I need 100 honest users to tell me what's wrong with it before I keep building.

If you bookmark articles and lose them, please try it: install the extension from the Chrome Web Store, save 5 articles you'd actually want to re-read, then search for a phrase from inside one of them. That's the one user-test I want feedback on.

DM me on X (https://x.com/sunil2610d/) or drop comments here. I read everything. I'll reply.

Install: https://chromewebstore.google.com/detail/fkdafeiembojodedkchlkogjhbcifeha
Web app: https://clipstack.one

Thanks for reading.

Top comments (0)