1. 4

I’m looking for a feed reader which is written in such a way that it’s essentially a service which writes to a database and other programs can connect to the database to read and display entries.

I would like it to be written in Rust, and use sqlite.

Such a system would make it easy to either sync feeds between machines (via database sync) or as a centralized self-hosted service (via a web app) or as a desktop application (via gtk/qt) or as a terminal application.

Thank you!

  1. 6

    That’s how Apple’s PubSub framework (which I tech-led and wrote a lot of) worked. A daemon process downloaded feeds, parsed them and added articles to a SQLite db. An Objective-C API accessed that database to retrieve articles and create & manage subscriptions.

    It doesn’t ship anymore (and it was C++ not Rust) … but you’re on the right track asking about this. It’s a good architecture.

    1. 2

      Anything that implements the Fever API would be a good fit for this, just because of the sheer amount of clients for it. For instance you could get tt-rss with this running locally. It’s not rust, but it satisfies your requirements I think.

      Miniflux which also implements the Fever API could be another solution.

      1. 1

        Miniflux supports the Fever API? https://miniflux.app/docs/services.html#fever

        Edit: On second read, I realize that you were suggesting Miniflux as a solution. My mistake I think :)

      2. 2

        This sounds like what https://indieweb.org/Microsub-spec tries to solve (though as a service)

        1. 2

          I wrote rssc and rssc-sendmail for this purpose.

          It doesn’t try to parse dates or story bodies, it just emails me links to stuff since ~nothing is readable as plain text and email is already synced between all my devices.

          The code is mad old but there’s not very much of it and it’s been chugging along for like 8 years with mostly no problems so good enough :)

          1. 1

            Why not write it?

            1. 3

              If it doesn’t exist…that’s the plan. Initial research here because I couldn’t find anything obvious myself.