{"id":26477593,"url":"https://github.com/krishpatel023/go-rss-scraper","last_synced_at":"2026-05-03T01:44:26.534Z","repository":{"id":276450092,"uuid":"927737740","full_name":"krishpatel023/go-rss-scraper","owner":"krishpatel023","description":"A modern RSS feed aggregator that synchronizes feeds automatically, provides a clean UI, and ensures fast, reliable content fetching.","archived":false,"fork":false,"pushed_at":"2025-02-14T13:05:50.000Z","size":151,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-16T16:30:47.634Z","etag":null,"topics":["golang","nextjs","postgresql","rss-aggregator","rss-reader","sqlc","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/krishpatel023.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,"zenodo":null}},"created_at":"2025-02-05T13:14:09.000Z","updated_at":"2025-02-14T13:10:58.000Z","dependencies_parsed_at":"2025-08-16T16:30:30.226Z","dependency_job_id":null,"html_url":"https://github.com/krishpatel023/go-rss-scraper","commit_stats":null,"previous_names":["krishpatel023/go-rss-scraper"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/krishpatel023/go-rss-scraper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krishpatel023%2Fgo-rss-scraper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krishpatel023%2Fgo-rss-scraper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krishpatel023%2Fgo-rss-scraper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krishpatel023%2Fgo-rss-scraper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krishpatel023","download_url":"https://codeload.github.com/krishpatel023/go-rss-scraper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krishpatel023%2Fgo-rss-scraper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32555839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T00:31:16.350Z","status":"ssl_error","status_checked_at":"2026-05-03T00:31:15.546Z","response_time":132,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["golang","nextjs","postgresql","rss-aggregator","rss-reader","sqlc","typescript"],"created_at":"2025-03-20T00:47:47.778Z","updated_at":"2026-05-03T01:44:26.522Z","avatar_url":"https://github.com/krishpatel023.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RSS Feed Scraper \u0026 Aggregator\n\n[![Next.js](https://img.shields.io/badge/Next.js-15.1-black)](https://nextjs.org/)\n[![Go](https://img.shields.io/badge/Go-1.23.2-blue)](https://golang.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue)](https://www.typescriptlang.org/)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-Latest-336791)](https://www.postgresql.org/)\n\n\u003e A modern RSS feed aggregator that helps you stay up-to-date with content from multiple sources in one place. Built with Next.js frontend and Go backend, featuring automatic feed synchronization and a clean, accessible interface.\n\n## 🌟 Overview\n\nThis RSS Feed Scraper is a personal project designed to provide a clean, efficient way to track various blogs, news sites, and content creators. Unlike commercial RSS readers, it focuses on simplicity and speed, letting you aggregate all your favorite feeds in one place without unnecessary social features or recommendations.\n\n## ✨ Features\n\n### Feed Management\n- **Multiple RSS Sources**: Add any number of RSS feeds from blogs, news sites, and podcasts with automatic feed URL validation and metadata extraction.\n- **Automatic Synchronization**: Stay up-to-date with fresh content through our efficient background synchronization system that fetches new articles every minute. Currently limited to 10 feeds at a time but can be easily increased.\n- **Feed Validation**: Robust error handling system that validates feed formats and maintains feed health monitoring.\n\n## 🚀 Tech Stack\n\n### Frontend\n- Next.js 15.1 with App Router\n- TypeScript 5.0\n- Tailwind CSS for styling\n- ShadcnUI components\n- Zod for validation\n- Axios for API requests\n\n### Backend\n- Go 1.23.2\n- Chi router for HTTP routing\n- PostgreSQL with SQLC\n- JWT authentication\n- Bcrypt for password hashing\n\n\n## 📦 Installation\n\n### Prerequisites\n- Go 1.23.2 or higher\n- Node.js 18 or higher\n- PostgreSQL\n- Make (for running Makefile commands)\n\n### Backend Setup\n\n1. Navigate to backend directory:\n```bash\ncd backend\n```\n\n2. Install Go dependencies:\n```bash\ngo mod download\n```\n\n3. Create and configure environment variables:\n```bash\ncp .env.example .env\n```\n\n4. Configure your `.env` with:\n```bash\nPORT=8000\nDATABASE_URL=postgresql://[user]:[password]@localhost:5432/[dbname]\n```\n\n5. Run database migrations:\n```bash\nmake backend_migrate_up\n```\n\n6. Build and run the backend:\n```bash\n# Build the backend\nmake backend_build\n\n# Run the backend\nmake backend_run\n```\n\nAdditional backend commands:\n```bash\n# Clean up backend build artifacts\nmake backend_clean\n\n# Generate SQLC code from SQL\nmake backend_sqlc\n\n# Run database migrations down\nmake backend_migrate_down\n```\n\n### Frontend Setup\n\n1. Navigate to frontend:\n```bash\ncd frontend\n```\n\n2. Install dependencies:\n```bash\nnpm install\n```\n\n3. Create and configure environment variables:\n```bash\ncp .env.example .env\n```\n\n4. Configure your `.env` with:\n```bash\nNEXT_PUBLIC_BACKEND_URL=http://localhost:8000\n```\n\n## 🚀 Usage\n\n### Starting the Frontend\n```bash\ncd frontend\nnpm run dev\n```\nFrontend will be available at `http://localhost:3000`\n\n### Starting the Backend\n```bash\nmake backend_run\n```\nBackend will be available at `http://localhost:8000`\n\n## 🔒 Authentication Flow\n\nThe application uses API key-based authentication:\n1. User signs up/logs in and receives an API key\n2. API key is stored in HTTP-only cookies\n3. Subsequent requests include the API key in Authorization header\n4. Protected routes verify the API key before processing requests","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrishpatel023%2Fgo-rss-scraper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrishpatel023%2Fgo-rss-scraper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrishpatel023%2Fgo-rss-scraper/lists"}