Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Feeds

Minimal RSS Feeds

Overview

Feeds is a minimal RSS reader that mimics the original experience of RSS. It's just a list of posts. No categories, no marking a post read or unread, and there is no in-app reading. With this approach you have to read the post on the author's personal website and experience it in its original context.

  • Single Rust binary with embedded assets
  • Multiple feed sources: URL params, OPML file, or FreshRSS API
  • Password-protected admin panel for managing subscriptions
  • Feeds API with JSON and OPML export
  • Dark themed UI with Commit Mono font

Quickstart

git clone https://github.com/stevedylandev/andromeda.git
cd andromeda
cargo run -p feeds
# Server running on http://localhost:3000

Environment Variables

VariableDescriptionDefault
FRESHRSS_URLURL of your FreshRSS instance--
FRESHRSS_USERNAMEFreshRSS username--
FRESHRSS_PASSWORDFreshRSS password--
ADMIN_PASSWORDPassword for the admin panel--
COOKIE_SECUREEnable HTTPS-only cookiesfalse

Usage

There are several built-in ways to source RSS feeds.

URL Query Param

Once you have the app running you can add the following to the URL to source an RSS feed:

?url=https://bearblog.dev/discover/feed/

You can also add multiple URLs by using commas to separate them:

?urls=https://bearblog.dev/discover/feed/,https://bearblog.stevedylan.dev/feed/

OPML File

If you save a feeds.opml file in the root of the project the app will automatically source it and fetch the posts for the feeds inside.

FreshRSS API

If neither of the above are provided the app will default to using a FreshRSS API instance. Set the following environment variables:

FRESHRSS_URL=
FRESHRSS_USERNAME=
FRESHRSS_PASSWORD=

Admin Panel

Feeds includes a password-protected admin panel at /admin for managing your FreshRSS subscriptions. Set the ADMIN_PASSWORD environment variable to enable it. From the admin panel you can view your current subscriptions and add new feeds directly to your FreshRSS instance.

Feeds API

The /feeds endpoint exports your FreshRSS subscriptions in JSON or OPML format:

/feeds?format=json
/feeds?format=opml

Structure

feeds/
├── src/
│   ├── main.rs        # Axum server with routing, templates, and static asset serving
│   ├── feeds.rs       # Feed fetching, OPML parsing, and FreshRSS API integration
│   ├── auth.rs        # Session-based authentication with constant-time password verification
│   └── models.rs      # Data structures for feeds and FreshRSS responses
├── templates/         # Askama HTML templates
├── assets/            # Static assets embedded at compile time via rust-embed
├── Dockerfile
└── docker-compose.yml

Deployment

Railway

Deploy on Railway

Docker

cd apps/feeds
cp .env.sample .env
# Edit .env with your credentials
docker compose up -d

Binary

cargo build --release -p feeds

The resulting binary is self-contained with all assets embedded. Copy it to your server with a configured .env file and run it directly.