Skip to content

About

Command-line RSS feed aggregator with user management, feed subscriptions, and PostgreSQL-backed persistence.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Gator

A command-line RSS feed aggregator built with Node.js, TypeScript, PostgreSQL, and Drizzle ORM.

Gator allows users to:

  • Create and switch between users
  • Add and follow RSS feeds
  • Periodically fetch posts from followed feeds
  • Browse posts sorted from newest to oldest

Tech Stack

  • Node.js (via nvm)
  • TypeScript
  • PostgreSQL
  • Drizzle ORM
  • Drizzle Kit (migrations)

Installation

1. Install Node (recommended via nvm)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install --lts
nvm use --lts

2. Install PostgreSQL

macOS

brew install postgresql@16
brew services start postgresql@16

Linux

sudo apt update
sudo apt install postgresql postgresql-contrib
sudo service postgresql start

Verify:

psql --version

3. Create the Database

psql postgres            # macOS
sudo -u postgres psql    # Linux
CREATE DATABASE gator;
\c gator

(Linux only)

ALTER USER postgres PASSWORD 'postgres';

Exit with:

\q

4. Configure Database Connection

Create:

nano ~/.gatorconfig.json

Add:

{
  "db_url": "postgres://username:password@localhost:5432/gator?sslmode=disable"
}

Update drizzle.config.ts to use the same URL.


5. Install Dependencies

npm install
npm install drizzle-orm postgres
npm install -D drizzle-kit

6. Run Migrations

npx drizzle-kit generate
npx drizzle-kit migrate

Usage

All commands are run with:

npm run start <command>

Commands

User Management

Register:

npm run start register <username>

Login:

npm run start login <username>

List users:

npm run start users

Reset database:

npm run start reset

Feed Management

Add feed:

npm run start addfeed <feedName> <feedURL>

List feeds:

npm run start feeds

Follow feed:

npm run start follow <feedURL>

Show followed feeds:

npm run start following

Unfollow feed:

npm run start unfollow <feedURL>

Aggregate Feeds

npm run start agg 1m

Supported time units:

  • ms
  • s
  • m
  • h

Stop with:

CTRL + C

Browse Posts

npm run start browse <numberOfPosts>

Example:

npm run start browse 5

Example Workflow

npm run start register niklas
npm run start login niklas
npm run start addfeed aktivprat https://anchor.fm/s/f8958960/podcast/rss
npm run start follow https://anchor.fm/s/f8958960/podcast/rss
npm run start agg 1m
npm run start browse 5

Notes

  • Use RSS feed URLs (not Spotify links).
  • Posts are sorted by publication date (newest first).
  • Designed as a local development CLI project.

About

Command-line RSS feed aggregator with user management, feed subscriptions, and PostgreSQL-backed persistence.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages