# gator A blog aggregator CLI built as part of the [boot.dev](https://boot.dev) course. Follow RSS feeds and browse their latest posts right from your terminal. ## Requirements Before you can run gator you'll need to have the following installed: - **Go** (1.26 or newer) - **PostgreSQL** (a running server, local or remote) ## Installation Install the gator CLI with `go install`: ```sh go install github.com/StevanFreeborn/gator@latest ``` The binary is placed in `$(go env GOPATH)/bin`. Make sure that directory is on your `PATH`: ```sh export PATH="$(go env GOPATH)/bin:$PATH" ``` ## Setup ### 1. Create a database Create a database for gator in your Postgres server: ```sh createdb gator ``` The schema is managed with [goose](https://github.com/pressly/goose) migrations in `sql/schema`. Install goose and apply the migrations: ```sh go install github.com/pressly/goose/v3/cmd/goose@latest goose -dir sql/schema postgres "postgres://:@localhost:5432/gator?sslmode=disable" up ``` ### 2. Create the config file gator reads its configuration from `~/.gatorconfig.json`. Create that file with the connection string for your database: ```json { "db_url": "postgres://:@localhost:5432/gator?sslmode=disable", "current_user_name": "" } ``` ## Usage Run gator with `gator `. Start by registering a user, then log in: ```sh gator register myusername gator login myusername ``` A few commands you can run: | Command | Description | | ------------------------------ | --------------------------------------------------------------------------------------- | | `gator register ` | Register a new user and log in as them | | `gator login ` | Log in as an existing user | | `gator users` | List all registered users | | `gator addfeed ` | Add an RSS feed and follow it | | `gator feeds` | List all feeds | | `gator follow ` | Follow a feed by name or url | | `gator following` | List the feeds you're following | | `gator unfollow ` | Unfollow a feed by name or url | | `gator browse [limit]` | Browse posts from your followed feeds | | `gator agg ` | Continuously fetch posts every `` (e.g. `60s`); press `q` or `Ctrl-C` to stop | | `gator reset` | Delete all users and their data |