Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gator - High-Performance RSS Aggregator

Gator is a terminal-based RSS feed aggregator built in Go. It features a multi-user system, a concurrent background scraper for rapid updates using Goroutines, and a stupid sexy, tabbed Terminal User Interface (TUI) for a super sexy reading experience.

Features

  • Multi-User Support: Manage separate subscriptions and follow-lists for different users.
  • Concurrent Aggregation: Uses Goroutines and sync primitives to scrape all your feeds simultaneously.
  • Interactive TUI: A sexy reading experience built with Bubble Tea and Lip Gloss.
  • Tabbed Browsing: Easily switch between your different feed subscriptions using a tabbed interface.
  • Browser Integration: Open interesting articles directly in your default web browser from the terminal.

Prerequisites

  • Go (version 1.21 or higher)
  • PostgreSQL (version 15 or higher)
  • Goose (for database migrations)

Installation

Install the Gator CLI directly to your Go bin directory:

go install github.com/kozykoding/gator@latest

Setup

1. Database

Create a PostgreSQL database named gator:

psql -c "CREATE DATABASE gator;"

Run the migrations to set up the schema:

goose -dir sql/schema postgres "postgres://postgres:@localhost:5432/gator" up

2. Configuration

Create a .gatorconfig.json file in your home directory (~/.gatorconfig.json):

{
  "db_url": "postgres://postgres:@localhost:5432/gator",
  "current_user_name": "your_username"
}

Commands

User & Feed Management

  • gator register <name> - Register a new user and log in.
  • gator login <name> - Switch between users.
  • gator addfeed <name> <url> - Add a new RSS feed (automatically follows).
  • gator follow <url> - Follow an existing feed.
  • gator unfollow <url> - Unfollow a feed.
  • gator users / gator feeds / gator following - List information.

The Aggregator

Start the background worker to scrape your feeds:

gator agg 1m

Gator will fetch all followed feeds concurrently every 1 minute.

The Reader (TUI)

Launch the interactive browser:

gator browse <limit>

TUI Controls

Key Action
Tab Cycle forward through feed tabs
Shift+Tab Cycle backward through feed tabs
Up/Down or K/J Scroll through posts in the active tab
Enter Open the selected post in your web browser
/ Search/Filter posts in the current view
Ctrl+C / Q Quit the reader

Development

To run from source:

go run . <command>

Built with LOVE using Go, PostgreSQL, and Charm.

About

RSS Feed AggreGATOR In Go

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages