You have a tab open right now that you have been meaning to read for three weeks. You have a "Read Later" folder with 500 links you haven't touched since 2023.
We treat information like fast food. We see a headline, we get a dopamine hit, and we click "Save." We feel productive. We feel like we have learned something just by bookmarking it.
But we haven't. We have just moved a URL from a public server to a private database row.
I looked at my own habits recently. I wasn't building a knowledge base. I was building a digital cemetery.
The tools we use, Instapaper and Notion are designed for hoarding. They want you to save as much as possible because that keeps you in their ecosystem. They measure success by "items saved," not by "knowledge gained."
I wanted a tool that respects my attention and actually forces me to learn. So I built one.
The "Collector's Fallacy" There is a concept called the Collector's Fallacy. It is the false belief that "having access to knowledge" is the same as "having knowledge."
As developers, we are the worst offenders. We save tutorials on Rust, articles on System Design, and papers on AI architecture. We tell ourselves we will read them "this weekend." We never do.
To fix this, I realized a "Read Later" app needs to do two things that most apps don't:
Stop the spying. I don't want an app that analyzes my reading habits to build an ad profile.
Force engagement. A list is passive. A learning tool must be active.
Enter the Resurrection Engine I built Sigilla to solve my own problem.
It is a privacy-first reading companion. It runs on a boring, stable stack (PostgreSQL via Supabase + React), because I want my data to outlive the current hype cycle.
The core feature isn't saving. It is resurfacing.
I implemented a Spaced Repetition system, similar to Anki, but for articles. If I save a deep dive on Postgres Indexing, Sigilla doesn't let it rot. It brings it back to my attention. It asks: "Did you actually read this? If not, do you want to delete it?"
It forces a decision. Read it, or admit you never will and let it go.
Privacy as a Feature We have seen the recent reports about browser extensions scraping user data. It is a nightmare.
That is why I built Sigilla to be quiet. The extension doesn't track your browsing. It doesn't "phone home" with your history. It only activates when you explicitly tell it to save a specific page.
I calculate reading metrics (like scroll depth and time spent) locally in the browser. The only thing that touches the database is the final engagement score. I don't want your data. I just want you to read the articles you saved.
Why I am building this I am tired of renting my brain to SaaS companies that profit from my distraction.
Sigilla is currently free to use. I am building it for myself and for other knowledge workers who are tired of the noise.
If you are ready to stop hoarding and start curating, you can try it out. But be warned: It will force you to actually read.
Let me know in the comments: Be honest, how many unread tabs do you have open right now?
Top comments (103)
"You have a tab open right now that you have been meaning to read for three weeks. You have a "Read Later" folder with 500 links you haven't touched since 2023." - how did you know, are you clairvoyant? ;-)
My first instinct was to click the "Save to reading list" button on this article, but through immense willpower I constrained my index finger from going down, and moved the mouse pointer away from that button ...
For me the point is really that, instead of reading all those "important" articles, I get much more satisfaction (in addition to getting in shape) from going outside on a cycling trip, than spending even more hours than I already do sitting on a chair behind a computer monitor ;-)
Haha, you actually made the right call there. If it is a choice between a cycling trip and another tab, the bike wins every single time. The whole reason I built this was to spend less time feeling guilty about unread tabs and more time actually living. Hope the ride was good!
Rides are almost always good, except when I have a flat tyre or something like that - but building a fun and creative little project (like what you did in this case) isn't bad either!
Thanks! It was definitely a fun project to put together. Now I just need to make sure I spend as much time using it as I do building it. Enjoy the next ride!
Awesome tool! I have to admit I also keep saving things “to read later” and… somehow never get back to them.
And I love that thanks to the example article, immortal fame awaits me now 😂
Haha, you are definitely not alone in that. Most of us have that "save reflex" but forget to follow through. Glad you like the tool! It was fun using your piece as a placeholder for the demo.
You’re right — too often we add things to a reading list… and then never actually read them. I’ve taken a similar approach with Wallabag (which overlaps with your app in some ways), processing new entries each week through an LLM that sends me a summary of the content, emerging trends, and actionable levers. But I’m curious — I’m going to try your app; it looks interesting.
That setup sounds incredibly efficient for staying on top of news.
I actually went the exact opposite direction intentionally. I found that when I read AI summaries, I felt productive but didn't actually retain the deep knowledge. So I built this to force myself to slow down and read the full text. But for high-volume processing, your workflow is definitely a beast.
Interesting — I just checked out Sigilla and I like the philosophy behind it. The privacy-first angle and the idea of building a personal research library you actually remember feels very aligned with the ‘slow reading’ approach you described.
I think there’s probably a nice complementarity between our two approaches: mine helps me scan and prioritize at scale, and yours seems designed to create real retention and depth. I’m curious to see how it changes the way I read once I start using it more intentionally.
I really appreciate that. "Slow reading" is a tough sell in a world obsessed with speed, so I’m glad the philosophy resonated with you.
Please do let me know how it goes. Since you have such a structured process already, your feedback on the retention mechanics would be super valuable.
First attempt: pleasant and clean interface, I love it. Saving an article is simple, but a Chrome/Android widget would be nice… Highlights and notes work well and are an interesting aspect of reading. Reading an article in Sigilla is really great, no ads, no distracting elements on the page… a bit like reading in read-only mode :)
Only drawback: doesn't work with Medium (well, Medium is a bit rubbish), even with the free reading links.
Glad you like the clean interface! That distraction-free environment is the core of the app.
A Chrome extension is actually the next big feature I am planning to ship. I agree that saving needs to be instant.
Regarding Medium: It is the final boss of read-later apps. Since they lock down their content so heavily, it is very hard to get a clean scrape even with free links. I decided to prioritize open web articles for the beta, but I appreciate the feedback!
Regarding Medium: Wallabag captures pages when I use its widget; that might be the missing piece. Otherwise, you can look at how they do it – that's the method I use when I can't find a solution myself.
That’s a great point. I suspect Wallabag sends the actual HTML from the browser instead of just the link, which is a clever way to get around those pesky bot blockers.
I'll definitely check out their method. It seems like the best way to handle "walled gardens" like Medium without fighting their scrapers constantly. Really appreciate the tip!
I used your tool everyday. My feeling: interesting, but there's a bug when I attempt to mark an article as reviewed. As I said before, readind in Sigilla is very easy and pleasant, with a widget and bugs resolved, it will be a great tool.
Daily use is the best feedback I can get.
I am looking into the review bug right now. Does it hang on the loading state or just fail silently?
I want to get that core loop perfect before I ship the widget.
In fact, when I click on 'Mark Reviewed', a popup appears: 'Failed to schedule review' - so I have to archive or to skip.
Found and fixed the "Failed to schedule review" bug!
The issue was an ambiguous column reference in the database function.
It's now fixed and deployed.
Try again, now it should work. Im super thankful for all the feedback you are giving me!
My bookmarks include Google Translate, GitHub, casual-effects, and CMU Graphics Lab Motion Capture Database. I don't know if the last two sites will be useful, but it's better to let them remain forgotten in my bookmarks. Perhaps if I hadn't read this article, I wouldn't have even remembered them. Moreover, I had already forgotten where my bookmarks were in Brave, so I had to search on Google how to open bookmarks in Brave (shortcut - Ctrl + Shift + O). Surprisingly, saving bookmarks is easier (ctrl+D) than opening them. I'll bookmark my comment so I don't forget the shortcut, lol.
You actually nailed the core design flaw right there. Browsers made saving frictionless (Ctrl+D) but retrieval a hassle. It is literally an interface designed for hoarding. And bookmarking your own comment to remember the shortcut is honestly the perfect meta-joke to illustrate the problem.
This is an unhelpful overgeneralization.
You're probably right. It's definitely a bit of a rant based on my own bad habits and what I see in my bubble. I know some people are incredibly disciplined with their bookmarks, but for the rest of us hoarders, the struggle is very real.
I know that feeling well. Eventually, you just have to declare bankruptcy and hit "mark all as read" to save your sanity. I basically tried to build that "mark all as read" logic directly into the tool so I don't have to feel guilty about the pile anymore.
The fragmentation point someone raised above is huge. Reading lists scattered across Dev.to, Medium, LinkedIn, YouTube Watch Later, podcast queues — it's the same hoarding instinct across every medium, not just articles.
What helped me was flipping the model entirely: instead of saving content to consume "later," I started producing content about the topics I cared about. Writing a newsletter forces you to actually synthesize what you've read. Recording a quick podcast episode about a topic cements it way better than a bookmark ever could.
I've been using giv1.com for this — it handles both newsletters and podcasts in one place, so the workflow is: find something interesting, write or record your take on it, publish. The content you create becomes the "proof" that you actually learned something, and your audience holds you accountable to keep showing up.
The Collector's Fallacy dies the moment you shift from consumer to creator. You stop saving everything because you only need material for what you're actively writing about.
Shift from consumer to creator is the only thing that actually cures the hoarding. You are right.
The friction is just so much higher. Sometimes I just want to learn without the pressure of publishing a take on it immediately.
This really resonates. The “digital cemetery” line is painfully accurate — I’ve definitely been guilty of confusing saving with learning. I love the resurfacing + spaced repetition angle. That’s real product thinking, not just another bookmark wrapper. And choosing Supabase + React with a privacy-first flow shows solid architectural judgment.
A couple of practical notes from testing it:
1️⃣ When I click “Continue with Google”, I’m getting:
This usually means Google isn’t enabled in Supabase → Authentication → Providers, or the OAuth credentials (Client ID / Secret) aren’t configured correctly. Worth double-checking:
NEXT_PUBLIC_SUPABASE_URLandNEXT_PUBLIC_SUPABASE_ANON_KEYare correct in production2️⃣ Some Supabase flows feel unstable (auth/session persistence + route refresh issues). I’d suggest:
supabase.auth.getSession()on app init to verify hydrationpersistSession: truein client config3️⃣ Also, refreshing on non-
/routes returns the default Vercel 404. You should add a SPA rewrite invercel.json:Overall though — the core idea is strong. The product philosophy is clear. Tightening auth, routing, and Supabase config will make it feel production-grade instead of prototype-level. You’re close — just needs some hardening.
Thanks for the catch on the Vercel rewrites. I completely missed that for the SPA routing, I will get that fixed today. Really glad you liked the line about moving URLs to database rows. It is a trap I fell into for years before I realized I was just hoarding data.
Love that mindset — the fact that you’re fixing things quickly already says a lot about how seriously you’re taking this 👍
And honestly, we’ve all fallen into that hoarding trap. The difference is you actually built something to counter it.
One more thing — apart from the Vercel rewrite, I’d strongly recommend double-checking the Supabase auth setup. The
Unsupported provider: provider is not enablederror usually means Google isn’t enabled in the Supabase dashboard or the OAuth credentials / redirect URLs don’t match exactly in production. It might also be worth verifying:SUPABASE_URL,ANON_KEY) are correct in VercelThese small auth/config inconsistencies can make the product feel unstable even when the core idea is solid — and your core idea is solid. Keep going — this is the kind of focused, thoughtful tool more developers need.
This is incredibly helpful. I am actually looking into the Google Auth config right now, it is likely a redirect URL mismatch between my local environment and the Vercel production build. Thanks for the detailed checklist, it makes debugging much faster. Really appreciate you taking the time to dig into this!
You’re most welcome 🙌
Honestly, it’s just part of being a developer — if we spot bugs or edge cases, we help fix them. That’s how good products get built.
Really glad the checklist helped speed things up. Keep shipping 🚀
Couldn't agree more. Thanks again for the help, it really made the launch day much smoother. Cheers!
I've realized my Read Later list is more like a safety net than a helpful tool. It's time for me to either delete the links or actually read them
That safety net analogy is perfect. We often save things just to alleviate the fear of missing out, rather than to actually learn from them.
Making that hard decision to read or delete is the only way to actually clear the backlog.
True, and 100% of the time I never really read any of them
Gemini said
That 100% figure is brutal but honest. It is aspirational saving. We save for the person we want to be, but then reality gets in the way.
Mass deleting them feels surprisingly good.
Your "Collector's Fallacy" frame is useful—but I'd push it further. The problem isn't just that saving feels like learning. It's that queuing feels like committing.
Most people treat their read-later list as a vault for unrealized selves—a mausoleum of intentions. Articles saved in the hope that a future version of them will be wiser, more disciplined, more spacious. I don't operate that way. My list stays small because I don't outsource intention to a queue. If something enters my field, it's because it already belongs to the arc I'm walking.
This isn't productivity. It's governance.
I don't begin a project without a completion boundary. I don't save a link unless I know when I'll read it. I don't treat "later" as an expansion of capacity. My practice: if it matters, it gets a slot. If it doesn't get a slot, it doesn't matter.
This is how I maintain continuity. Not by hoarding potential, but by honoring capacity. Not by collecting inputs, but by curating a lineage I can actually finish. My read-later list isn't a graveyard because nothing enters it without a covenant.
"Mausoleum of intentions" is a brilliant phrase. You nailed the psychological trap—we often save links for the person we aspire to be, rather than the person we actually are.
That shift from productivity to governance is exactly what I am trying to automate. Since most of us lack that internal discipline to strictly slot every link, I built the decay algorithm to act as that external boundary. It enforces the "covenant" you mention—if you do not honor the slot within a set timeframe, the system decides it did not matter and removes it.
Great insight on capacity versus potential. I will be using that framing going forward.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.