gitwtfhub

wtf is guanlan?

619dev/guanlan — explained in plain English

Analysis updated 2026-05-18

48TypeScriptAudience · developerComplexity · 3/5LicenseSetup · moderate

TL;DR

A self-hostable RSS reader modeled on Google Reader, built with React and Cloudflare Workers, storing feeds and articles in your own Cloudflare D1 database.

Mindmap

mindmap
  root((repo))
    What it does
      Self-hosted RSS reader
      Google Reader style
    Tech stack
      React
      Cloudflare Workers
      D1 database
    Use cases
      Private feed reading
      Curated starter feeds
    Audience
      Developers
      Self-hosters

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Self-host a private, password-protected RSS reader on Cloudflare's free tier

REASON 2

Replace a discontinued or third-party RSS service with one you fully control the data for

REASON 3

Start reading immediately from a curated 76-feed directory of tech, news, and science sources

What's in the stack?

ReactTypeScriptViteCloudflare WorkersCloudflare D1Drizzle ORMTailwind CSS

How it stacks up

619dev/guanlaneynzof/hermes-agent-cn-desktoproseforyou/cf-outlook-email
Stars484848
LanguageTypeScriptTypeScriptTypeScript
Setup difficultymoderatemoderatemoderate
Complexity3/53/53/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Needs a Cloudflare account with Workers and D1 to deploy for real cloud data.

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

Wtf does this do

Guanlan is a modern RSS reader modeled after the now-discontinued Google Reader, built to feel quiet and clear while keeping you in control of your own data. It runs as a Cloudflare Worker and stores your subscriptions, articles, and read or starred status in a Cloudflare D1 database, so once deployed the whole thing lives on infrastructure you control rather than a third-party service. The interface uses a three-column layout: your list of subscribed feeds, the article list for whichever feed or filter you have selected, and a focused reading pane. You can filter by all articles, unread only, starred items, or a single feed, search across articles, switch the list density, and mark everything as read in one action. Adding a new subscription just takes an RSS or Atom feed address. The interface supports both Chinese and English, and offers light and dark themes that are remembered between visits. Access is protected by a password checked on the Worker's server side, with a signed, HttpOnly session cookie once you log in. It ships with a curated starter directory of 76 RSS feeds spanning Chinese and international tech media, developer communities, company engineering blogs, general news, and science publications, so a fresh deployment is not an empty inbox. This starter list is versioned, so redeploying with an updated catalog adds new feeds in small batches without overwriting feeds you already added yourself. Under the hood it is built with React 19, TypeScript, Tailwind CSS, and Vite, using a tool called Vinext to combine React Server Components with Worker-compatible builds, and Drizzle as the ORM layer over D1. Setup for local development means installing dependencies with npm, copying an example environment file, and setting your own access password and session secret before running the dev server. Deployment to Cloudflare Workers can be done by forking the repository and connecting it through Cloudflare's own dashboard, without ever committing secrets or database IDs into the repo, the database and its tables are created automatically on first deploy and first successful login. The project is released under the MIT license.

Yoink these prompts

Prompt 1
Walk me through forking and deploying this Guanlan RSS reader to Cloudflare Workers
Prompt 2
Explain how the D1 database schema stores feeds, articles, and read or starred status
Prompt 3
Help me set the GUANLAN_PASSWORD and GUANLAN_SESSION_SECRET for my own deployment

Frequently asked questions

wtf is guanlan?

A self-hostable RSS reader modeled on Google Reader, built with React and Cloudflare Workers, storing feeds and articles in your own Cloudflare D1 database.

What language is guanlan written in?

Mainly TypeScript. The stack also includes React, TypeScript, Vite.

What license does guanlan use?

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

How hard is guanlan to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is guanlan for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.