Skip to content

A modern web-based RSS reader that can be used as a desktop application or self-hosted server. Fast deployment, zero dependencies, ready to use out of the box.

License

Notifications You must be signed in to change notification settings

TaylorChen/rss-hub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RSS-Hub

A clean, efficient self-hosted RSS reader

License: MIT Go Version Platform

A modern web-based RSS reader that can be used as a desktop application or self-hosted server. Fast deployment, zero dependencies, ready to use out of the box.

✨ Features

📰 Core Functionality

  • Multi-format Support - RSS 1.0/2.0, Atom, JSON Feed
  • Smart Subscription - Auto-discover website feeds
  • Category Management - Folder grouping with drag & drop
  • Bulk Operations - Multi-select, batch delete, batch move subscriptions
  • Full-text Search - Quickly search article content
  • Favorites - Star and manage important articles
  • Reader Mode - Readability extraction for clean text

🎨 User Experience

  • Modern Interface - Responsive design for desktop and mobile
  • Theme Switching - Light / Sepia / Dark themes
  • Font Customization - Sans-serif / Serif / Monospace options
  • Keyboard Navigation - Full keyboard shortcut support
  • Auto Refresh - Configurable feed update frequency

🔐 Security & Privacy

  • Local Storage - All data stored locally, fully controlled
  • Authentication - Username/password verification support
  • HTTPS Support - TLS certificate configuration
  • Access Control - Restrict access sources

🚀 Deployment Friendly

  • Zero Dependencies - Single binary, no external dependencies
  • Multi-database - SQLite (default) / MySQL optional
  • Cross-platform - Linux / macOS / Windows
  • GUI Mode - System tray support (macOS/Windows)
  • Docker Support - Containerized deployment
  • Fever API - Compatible with mobile clients

📦 Installation

Option 1: Pre-compiled Binaries

Download the binary for your platform from Releases:

# Linux / macOS
chmod +x rss-hub
./rss-hub

# Windows
rss-hub.exe

Visit http://127.0.0.1:7070

Option 2: Build from Source

Requirements:

  • Go 1.23 or higher
  • Make (recommended for cross-platform compilation)
  • Zig (optional, for cross-compilation)

Basic Build

git clone https://github.com/TaylorChen/rss-hub.git
cd rss-hub

# Method 1: Using Make (recommended)
make host
./out/rss-hub

# Method 2: Using Go directly
go build -o rss-hub ./cmd/rss-hub
./rss-hub

# Development mode with debugging
make serve

# Run tests
make test

Cross-platform Compilation

Note: Cross-platform compilation requires the Zig toolchain

Installing Zig:

# macOS
brew install zig

# Verify installation
zig version

Linux Platform:

make linux_amd64    # Linux x86_64
make linux_arm64    # Linux ARM64
make linux_armv7    # Linux ARMv7

Windows Platform:

make windows_amd64  # Windows x86_64
make windows_arm64  # Windows ARM64

macOS Platform (no Zig required):

make darwin_amd64   # macOS Intel
make darwin_arm64   # macOS Apple Silicon

Note: macOS native builds don't require Zig; only Linux/Windows cross-compilation needs it

GUI Version Build

# macOS app bundle
make darwin_arm64_gui   # macOS Apple Silicon (.app)
make darwin_amd64_gui   # macOS Intel (.app)

# Windows system tray version
make windows_amd64_gui  # Windows x86_64 (with tray icon)

Batch Build

# Build for current platform only (no Zig required)
make host

# Build all CLI versions (requires Zig)
make all

# Parallel build (faster, requires Zig)
make all-parallel

# Verify build artifacts
make verify

# Clean build artifacts
make clean

# Deep clean (including Go cache)
make distclean

# Show all available commands
make help

Common Scenarios:

  • Local development: make host
  • Cross-platform release: make all-parallel && make verify
  • Build macOS only: make darwin_amd64 darwin_arm64

Build Output Location: out/ directory, organized by platform

Database Support: The compiled binary supports both SQLite and MySQL, switchable at runtime via -db parameter without recompilation

Option 3: Docker Deployment

# Using SQLite
docker run -d \
  -p 7070:7070 \
  -v rss-hub-data:/data \
  --name rss-hub \
  taylorchen/rss-hub

# Using MySQL
docker run -d \
  -p 7070:7070 \
  -e RSS_HUB_DB="mysql://user:pass@tcp(mysql:3306)/rss_hub" \
  --name rss-hub \
  taylorchen/rss-hub

🔧 Configuration

Database Configuration

RSS-Hub supports two database types:

SQLite (Default)

# Default path
./rss-hub

# Specify database file
./rss-hub -db /path/to/database.db

Advantages:

  • Zero configuration, ready to use
  • Single file storage, easy to backup
  • Suitable for personal use

MySQL

# Using command-line arguments
./rss-hub -db "mysql://user:password@tcp(localhost:3306)/rss_hub"

# Or using environment variable
export RSS_HUB_DB="mysql://user:password@tcp(localhost:3306)/rss_hub"
./rss-hub

Connection String Format:

mysql://username:password@tcp(host:port)/database?charset=utf8mb4&parseTime=True&loc=Local

Advantages:

  • Better concurrent performance
  • Suitable for multi-user scenarios
  • Easy cluster deployment

Startup Parameters

Parameter Environment Variable Default Description
-addr RSS_HUB_ADDR 127.0.0.1:7070 Listen address and port
-db RSS_HUB_DB ~/.config/rss-hub/storage.db Database connection string
-auth RSS_HUB_AUTH - Authentication info user:pass
-auth-file RSS_HUB_AUTHFILE - Authentication file path
-cert-file RSS_HUB_CERTFILE - HTTPS certificate file
-key-file RSS_HUB_KEYFILE - HTTPS private key file
-base RSS_HUB_BASE - URL base path
-log-file RSS_HUB_LOGFILE stdout Log output file
-open - false Open browser after startup

Configuration Examples

# Basic startup
./rss-hub

# Enable authentication
./rss-hub -auth "admin:secretpassword"

# Using MySQL + HTTPS
./rss-hub \
  -db "mysql://root:password@tcp(localhost:3306)/rss_hub" \
  -cert-file /path/to/cert.pem \
  -key-file /path/to/key.pem \
  -addr 0.0.0.0:443

# Public network + reverse proxy
./rss-hub -addr 0.0.0.0:7070 -base /rss

📖 Usage Guide

Adding Subscriptions

  1. Click the "+" button in the top right corner
  2. Enter website URL or RSS address
  3. Select category folder (optional)
  4. Click "Add"

Bulk Management

Batch Delete:

  1. Click the bulk operations button in toolbar (✓ icon)
  2. Check subscriptions to delete
  3. Click "Delete" button at bottom

Batch Move:

  1. Enter bulk mode and select multiple subscriptions
  2. Drag any selected item to target folder
  3. All selected subscriptions will move together

Drag & Drop Grouping

  • Single Move - Drag subscription directly to folder
  • Batch Move - Multi-select then drag to folder
  • Remove from Group - Drag to "Remove from Group" area

Keyboard Shortcuts

Shortcut Function
1 2 3 Unread/Starred/All
/ Search bar
j k Next/Previous article
l h Next/Previous feed
r Toggle read/unread
s Toggle star
o Open in new tab
i Reader mode
q Close article
R Mark all as read

🛠️ Development

Development Environment

# Development mode (hot reload)
make serve

# Run tests
make test

# Build all platform versions
make all

Project Structure

rss-hub/
├── cmd/rss-hub/       # Main program entry
├── src/
│   ├── assets/        # Frontend resources (HTML/CSS/JS)
│   ├── content/       # Content processing (Readability, etc.)
│   ├── parser/        # Feed parsing
│   ├── platform/      # Platform-specific (GUI, tray, etc.)
│   ├── server/        # HTTP server and routing
│   ├── storage/       # Database layer
│   └── worker/        # Background tasks (refresh, download, etc.)
├── etc/              # Build scripts and configs
└── doc/              # Documentation

Tech Stack

Backend

  • Go 1.23+
  • GORM (ORM framework)
  • SQLite / MySQL
  • Chi Router

Frontend

  • Vue.js 2
  • Vanilla CSS (lightweight design)
  • Feather Icons

Build Tools

  • Make
  • Zig (cross-compilation)

🤝 Contributing

Issues and Pull Requests are welcome!

Contribution Process

  1. Fork this repository
  2. Create feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Run tests before committing: make test
  • Keep code style consistent
  • Update relevant documentation
  • Clear and specific PR descriptions

🙏 Acknowledgements

This project is based on the following excellent open-source projects:

📄 License

MIT License - See LICENSE file for details


Made with ❤️ by TaylorChen

For questions or suggestions, please submit an Issue

About

A modern web-based RSS reader that can be used as a desktop application or self-hosted server. Fast deployment, zero dependencies, ready to use out of the box.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published