rfc-2 rss-to-email service

· team pico

An RSS service

status published
last updated 2024-12-04
site https://pico.sh/feeds

RSS/Atom is a great companion in the smol web. It's relatively standard, easy to write, easy to consume, and provide users with choice on how to view their feeds.

We think an RSS service using an SSH app could be useful to the pico.sh platform. We like the idea of our notification system be completely opt-in, including for pico+ users. We can also build internal tooling around RSS. For example, we can monitor all new sites on pages. Further this can be just as useful to feeds outside of pico.

This service can be run with three small go services:

features #

how it works #

A user would copy a file containing a lists of rss feeds.

It doesn't matter how many feed files the user uploads. Because an RSS feed can contain a bunch of metadata about a feed, we should capture as much of that as possible when presenting it to the user.

fetching #

We want to be smart about how we fetch feeds because it could be resource intensive if the service gets big enough.

For now, we are simply showing what we can in the email and the rest are links to the originating sites.

email digest #

I also think that if we do send out a daily digest, we add a button in the email that they need to click within 6 months or else we disable sending them an email. They click the button in the email and then we delay disabling it for 6 months.

tracking feed entries #

We would probably create a separate table for the feed results in order to optimize storing an retrieval.

 1CREATE TABLE IF NOT EXISTS feed_entry (
 2  id          uuid NOT NILL DEFAULT uuid_generate_v4(),
 3  post_id     uuid NOT NULL,
 4  read        boolean NOT NULL DEFAULT false,
 5  author      character varying(250),
 6  category    character varying(250),
 7  published   timestamp without time zone NOT NULL DEFAULT NOW(),
 8  rights      character varying(2000),
 9  source      character varying(2000),
10  content     text,
11  contributor character varying(250),
12  atom_id     character varying(250),
13  link        character varying(2000),
14  summary     text,
15  title       character varying(250),
16  created_at  timestamp without time zone NOT NULL DEFAULT NOW(),
17  updated_at  timestamp without time zone NOT NULL DEFAULT NOW(),
18  CONSTRAINT  entry_unique_atom_id UNIQUE (atom_id, post_id),
19  CONSTRAINT  feed_entry_pkey PRIMARY KEY (id),
20  CONSTRAINT  fk_entry_posts
21    FOREIGN KEY(post_id)
22  REFERENCES posts(id)
23  ON DELETE CASCADE
24  ON UPDATE CASCADE
25);

conclusion #

RSS is a standard way to notify users of new content on a site and we see it as critical to the function of pico.sh.


Join our irc #pico.sh on libera or email us at hello@pico.sh.

Be sure to subscribe to our rss feed to get the latest updates at team pico.