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
- Node.js (via nvm)
- TypeScript
- PostgreSQL
- Drizzle ORM
- Drizzle Kit (migrations)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install --lts
nvm use --ltsmacOS
brew install postgresql@16
brew services start postgresql@16Linux
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo service postgresql startVerify:
psql --versionpsql postgres # macOS
sudo -u postgres psql # LinuxCREATE DATABASE gator;
\c gator(Linux only)
ALTER USER postgres PASSWORD 'postgres';Exit with:
\qCreate:
nano ~/.gatorconfig.jsonAdd:
{
"db_url": "postgres://username:password@localhost:5432/gator?sslmode=disable"
}Update drizzle.config.ts to use the same URL.
npm install
npm install drizzle-orm postgres
npm install -D drizzle-kitnpx drizzle-kit generate
npx drizzle-kit migrateAll commands are run with:
npm run start <command>Register:
npm run start register <username>Login:
npm run start login <username>List users:
npm run start usersReset database:
npm run start resetAdd feed:
npm run start addfeed <feedName> <feedURL>List feeds:
npm run start feedsFollow feed:
npm run start follow <feedURL>Show followed feeds:
npm run start followingUnfollow feed:
npm run start unfollow <feedURL>npm run start agg 1mSupported time units:
- ms
- s
- m
- h
Stop with:
CTRL + Cnpm run start browse <numberOfPosts>Example:
npm run start browse 5npm 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- Use RSS feed URLs (not Spotify links).
- Posts are sorted by publication date (newest first).
- Designed as a local development CLI project.