A single-tenant read-it-later

Built for one reader. Me.

A personal Pocket I made for myself — links I save via a bookmarklet and newsletters I tag in Gmail land in one queue, cleaned by Readability and summarised in two Slovak sentences by Gemini. Every morning at 7 a digest of what arrived overnight shows up in my inbox and as a card on top of the queue. No accounts, no team plans, no roadmap.

What it does

01 / Capture

Bookmarklet, share, label

A drag-to-bookmarks Save to Stash, a PWA share target on iOS/Android, and an IMAP poller that pulls anything I tag stash in Gmail every 15 minutes.

02 / Clean

Just the article

Readability extracts the main body, strips tracking pixels and the usual unsubscribe footers. Gemini follows with a 2–3 sentence Slovak TL;DR per item.

03 / Digest

7 AM email + queue card

Every morning at 7 a digest of what landed overnight shows up in my inbox, and as a type=digest card on top of the queue. Triage from either side.

Stack

Laravel 13 · Breeze (Blade) · Tailwind 4 · Alpine · SQLite (WAL) · fivefilters readability · webklex IMAP · Gemini 2.5 Flash-Lite · Gmail SMTP for the digest mail. Single VM behind nginx, supervisor for the queue worker, cron for the scheduler.

Why public?

The code is on GitHub so I can read about my own architecture later, and so anyone curious can fork it. The hosted instance has registration disabled — it's not a service.