{"id":22930343,"url":"https://github.com/haedarrfd/simple-rss-aggregator","last_synced_at":"2025-04-01T17:19:46.121Z","repository":{"id":258890780,"uuid":"860852444","full_name":"haedarrfd/simple-rss-aggregator","owner":"haedarrfd","description":"A simple RSS Aggregator was built in Go programming language that allows users to create, retrieve, and manage feeds using REST APIs.","archived":false,"fork":false,"pushed_at":"2024-10-21T01:37:28.000Z","size":178,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-07T11:14:50.336Z","etag":null,"topics":["go","go-chi","goose","http","middleware","postgresql","rest-api","sqlc"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/haedarrfd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-21T10:42:31.000Z","updated_at":"2024-10-24T09:13:10.000Z","dependencies_parsed_at":"2024-10-21T05:09:11.313Z","dependency_job_id":null,"html_url":"https://github.com/haedarrfd/simple-rss-aggregator","commit_stats":null,"previous_names":["haedarrfd/simple-rss-aggregator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haedarrfd%2Fsimple-rss-aggregator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haedarrfd%2Fsimple-rss-aggregator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haedarrfd%2Fsimple-rss-aggregator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haedarrfd%2Fsimple-rss-aggregator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/haedarrfd","download_url":"https://codeload.github.com/haedarrfd/simple-rss-aggregator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246679066,"owners_count":20816402,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","go-chi","goose","http","middleware","postgresql","rest-api","sqlc"],"created_at":"2024-12-14T10:27:41.677Z","updated_at":"2025-04-01T17:19:46.101Z","avatar_url":"https://github.com/haedarrfd.png","language":"Go","readme":"## RSS Aggregator App\n\nAn RSS aggregator is a tool that allows you to view and read all the latest posts from your favorite blogs and websites in one place. This simple RSS Aggregator project was built in Go programming language that allows users to create, retrieve, and manage feeds using REST APIs. It uses PostgreSQL as the database and implements authentication using API keys.\n\n## 🔧 Requirements\n\nTo run this project, you must have Go, PostgreSQL, Goose and Sqlc installed on your machine.\n\n- Go: Version 1.20 or later\n- PostgreSQL: 15.0 or later\n- Goose: 3.22 or later\n- Sqlc: 1.27 or later\n\nMake sure that PostgreSQL service is running and you should have the necessary credentials for database connection (e.g., username, password, and database name).\n\n## 🔌 Installation\n\n- **If you haven't install goose, use this command to install it (see the documentation [goose](http://pressly.github.io/goose/))**\n\n```\ngo install github.com/pressly/goose/v3/cmd/goose@latest\n```\n\n- **If you haven't install sqlc, use this command to install it (see the documentation [sqlc](https://docs.sqlc.dev/en/stable/index.html))**\n\n```\ngo install github.com/sqlc-dev/sqlc/cmd/sqlc@latest\n```\n\n- **Clone this repository**\n\n```\ngit clone https://github.com/haedarrfd/simple-rss-aggregator.git\ncd simple-rss-aggregator\n```\n\n- **Adds any missing module requirements**\n\n```\ngo mod tidy\n```\n\n- **Copy the example `.env` file**\n\n```\ncp .env.example .env\n```\n\n**Note**: If the PostgreSQL database user does not have a password, just leave it blank.\n\n- **Run database migrations**\n\n```\ncd postgresql/schema\ngoose up\n```\n\n- **Run the project**\n\n```\ngo run main.go\n```\n\n**Or**\n\n- **Build and run the project**\n\n```\ngo build \u0026\u0026 ./simple-rss-aggregator\n```\n\n- **Use the project**\n  To use the project you can use tools like _[Postman](https://www.postman.com/)_ or any other tools to interact with the API.\n\n## 📖 API Reference\n\n#### Create a user\n\n```\n  POST /v1/users\n```\n\n| Parameter | Type     | Description                |\n| :-------- | :------- | :------------------------- |\n| `name`    | `string` | **Required**. Your name |\n\n#### Get a user by the API key\n\n```\n  GET /v1/users\n```\n\n| Parameter | Type     | Description                |\n| :-------- | :------- | :------------------------- |\n| `authorization` | `key` | **Required**. Your API key |\n\n#### Get all feeds\n\n```\n  GET /v1/feeds\n```\n\n#### Create a feed\n\n```\n  POST /v1/feeds\n```\n\n| Parameter | Type     | Description                |\n| :-------- | :------- | :------------------------- |\n| `authorization` | `key` | **Required**. Your API key |\n| `name` | `string` | **Required**. The name of the feed |\n| `url` | `string` | **Required**. The URL of the feed |\n| `user_id` | `string` | **Required**. The user who added this feed |\n\n#### Get all feed follows for user\n\n```\n  GET /v1/feed_follows\n```\n\n| Parameter | Type     | Description                |\n| :-------- | :------- | :------------------------- |\n| `authorization` | `key` | **Required**. Your API key |\n\n#### Create a feed follow\n\n```\n  POST /v1/feed_follows\n```\n\n| Parameter | Type     | Description                |\n| :-------- | :------- | :------------------------- |\n| `authorization` | `key` | **Required**. Your API key |\n| `feed_id` | `string` | **Required**. The ID of the feed that user wants to follow |\n\n#### Delete a feed follow\n\n```\n  DELETE /v1/feed_follows/{feedFollowID}\n```\n\n| Parameter | Type     | Description                |\n| :-------- | :------- | :------------------------- |\n| `authorization` | `key` | **Required**. Your API key |\n| `feedFollowID` | `param` | **Required**. The ID of the feed |\n\n#### Get all posts to a user\n\n```\n  GET /v1/posts\n```\n\n| Parameter | Type     | Description                |\n| :-------- | :------- | :------------------------- |\n| `authorization` | `key` | **Required**. Your API key |\n\n## 📁 File Structure\n\n```\n.\n├── internal\n│   ├── auth\n│   │   └── auth.go\n│   ├── database\n│   │   ├── db.go\n│   │   ├── feed_follows.sql.go\n│   │   ├── feeds.sql.go\n│   │   ├── models.sql.go\n│   │   ├── posts.sql.go\n│   │   └── users.sql.go\n├── postgresql\n│   ├── queries\n│   │   ├── feed_follows.sql\n│   │   ├── feeds.sql\n│   │   ├── posts.sql\n│   │   └── users.sql\n│   ├── schema\n│   │   ├── 001_users.sql\n│   │   ├── 002_feeds.sql\n│   │   ├── 003_feed_follows.sql\n│   │   └── 004_posts.sql\n├── vendor\n│   ├── github.com\n│   │   ├── go-chi\n│   │   │   ├── chi\n│   │   │   └── cors\n│   │   ├── google\n│   │   │   └── uuid\n│   │   ├── joho\n│   │   │   └── godotenv\n│   │   ├── lib\n│   │   │   └── pq\n│       └── modules.txt\n├── .env.example\n├── .gitignore\n├── go.mod\n├── go.sum\n├── handler_feed_follows.go\n├── handler_feed.go\n├── handler_posts.go\n├── handler_user.go\n├── json.go\n├── main.go\n├── middleware_auth.go\n├── models.go\n├── README.md\n├── rss.go\n├── scraper.go\n└── sqlc.yaml\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaedarrfd%2Fsimple-rss-aggregator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhaedarrfd%2Fsimple-rss-aggregator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaedarrfd%2Fsimple-rss-aggregator/lists"}