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.
- 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.
- Go (version 1.21 or higher)
- PostgreSQL (version 15 or higher)
- Goose (for database migrations)
Install the Gator CLI directly to your Go bin directory:
go install github.com/kozykoding/gator@latestCreate 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" upCreate a .gatorconfig.json file in your home directory (~/.gatorconfig.json):
{
"db_url": "postgres://postgres:@localhost:5432/gator",
"current_user_name": "your_username"
}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.
Start the background worker to scrape your feeds:
gator agg 1mGator will fetch all followed feeds concurrently every 1 minute.
Launch the interactive browser:
gator browse <limit>| 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 |
To run from source:
go run . <command>Built with LOVE using Go, PostgreSQL, and Charm.