Skip to content

A self-hosted RSS reader that's fast, clean, and just works. Built with Vue 3 and Go, featuring a minimal UI, multi-user support, and SQLite storage.

License

Notifications You must be signed in to change notification settings

brendlij/softfeed

Repository files navigation

SoftFeed Logo SoftFeed

A self-hosted RSS reader that's fast, clean, and just works.

License Docker Vue TypeScript Go

Built with Vue 3 (TypeScript) and Go.

🚀 Try the Live Demo — Login with demo / demo123

Screenshots

Desktop

Dark Mode Light Mode
Dark Mode Light Mode

Context Menu

Mobile

Feeds Articles Article Detail
Mobile Sidebar Mobile Articles Mobile Detail

Features

  • Clean, minimal interface - no clutter, just your feeds
  • Multi-user support with authentication
  • Push notifications via Pushover
  • Save articles as PDF
  • Search articles
  • Pin Feeds to the Top
  • Resize Sections
  • Rename Feeds
  • Dark mode support
  • Fully responsive - works on desktop, tablet, and mobile
  • Easy Docker deployment

Quick Start

Using Docker (Recommended)

  1. Create a docker-compose.yml:
services:
  softfeed:
    image: ghcr.io/brendlij/softfeed:latest
    container_name: softfeed
    ports:
      - "8080:8080"
    environment:
      - APP_ENV=production
      - APP_JWT_SECRET=your-secret-key-here
    volumes:
      - softfeed-data:/data
    restart: unless-stopped
    healthcheck:
      test:
        [
          "CMD",
          "wget",
          "--no-verbose",
          "--tries=1",
          "--spider",
          "http://localhost:8080/health",
        ]
      interval: 30s
      timeout: 3s
      start_period: 10s
      retries: 3

volumes:
  softfeed-data:
  1. Start the container:
docker-compose up -d
  1. Open http://localhost:8080 and create your account.

Note: The first registered user becomes the admin.


Build from Source

If you prefer to build the image yourself:

  1. Clone the repository:
git clone https://github.com/brendlij/softfeed.git
cd softfeed
  1. Build and run:
docker-compose -f docker-compose.build.yml up -d --build

Configuration

Environment Variable Description Default
APP_ENV Environment mode (production or development) development
APP_PORT Server port 8080
APP_JWT_SECRET Secret key for JWT tokens (change in production!) -
APP_DB_PATH Path to SQLite database /data/app.db

Tip: Generate a secure JWT secret with:

  • Linux/macOS: openssl rand -base64 32
  • Windows (PowerShell): [Convert]::ToBase64String((1..32 | ForEach-Object { Get-Random -Max 256 }))
  • Online: IT-Tools Token Generator

Example RSS Feeds

Get started with these popular feeds:

  • Hacker News: https://hnrss.org/frontpage
  • TechCrunch: https://techcrunch.com/feed/
  • The Verge: https://www.theverge.com/rss/index.xml
  • Dev.to: https://dev.to/feed

Tech Stack

  • Frontend: Vue 3.5, TypeScript 5.9, Pinia, Vite
  • Backend: Go 1.24, Gin, GORM, SQLite
  • Auth: JWT with HTTP-only cookies

Future Plans

  • More Notification Channels: Email, Discord, Slack, Telegram, Ntfy
  • Text-to-Speech: Listen to articles instead of reading
  • Two-Factor Authentication: TOTP-based 2FA for enhanced security
  • Feed Categories: Organize feeds into folders/groups
  • Keyboard Shortcuts: Navigate and manage feeds without a mouse
  • OPML Import/Export: Easy migration from other RSS readers
  • Full-Text Search: Search across all articles
  • Read Later / Favorites: Save articles for later

License

MIT License - feel free to use this project for personal or commercial purposes.


Made by brendlij

About

A self-hosted RSS reader that's fast, clean, and just works. Built with Vue 3 and Go, featuring a minimal UI, multi-user support, and SQLite storage.

Topics

Resources

License

Stars

Watchers

Forks

Packages