{"id":27521215,"url":"https://github.com/igrorp/newsagg","last_synced_at":"2026-04-29T08:35:16.557Z","repository":{"id":288156960,"uuid":"967024422","full_name":"igrorp/newsagg","owner":"igrorp","description":"NewsAgg is a pluggable, API-driven platform for aggregating, ranking, and serving news from multiple sources (RSS, APIs, JSON feeds) 📰","archived":false,"fork":false,"pushed_at":"2025-06-27T02:26:10.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-27T03:37:25.504Z","etag":null,"topics":["api","aws","fastapi","news","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/igrorp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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-04-15T20:08:09.000Z","updated_at":"2025-06-27T02:26:14.000Z","dependencies_parsed_at":"2025-06-27T03:29:01.146Z","dependency_job_id":"f0785fd5-8d6f-4397-bfc3-f666f296643e","html_url":"https://github.com/igrorp/newsagg","commit_stats":null,"previous_names":["igrorp/newsagg"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/igrorp/newsagg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrorp%2Fnewsagg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrorp%2Fnewsagg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrorp%2Fnewsagg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrorp%2Fnewsagg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/igrorp","download_url":"https://codeload.github.com/igrorp/newsagg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrorp%2Fnewsagg/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263951871,"owners_count":23534823,"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":["api","aws","fastapi","news","python"],"created_at":"2025-04-18T07:59:53.841Z","updated_at":"2026-04-29T08:35:11.538Z","avatar_url":"https://github.com/igrorp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📰 newsagg – Multi-Source News Aggregator API\n\n`newsagg` is a pluggable, API-driven platform for aggregating, ranking, and serving news from multiple sources (RSS, APIs, JSON feeds).\n\n---\n\n## 🚀 Features\n\n- 🧩 **Modular Adapter System** for fetching news from:\n  - RSS feeds (G1, Folha, BBC, etc.)\n  - APIs (NewsAPI.org, Reddit, HackerNews)\n- 📊 **Pluggable Ranking Strategies** (recency, popularity, sentiment, etc.)\n- 🧠 Group articles by topics or source\n- 🌐 RESTful API (FastAPI) to expose article data\n- ☁️ Deployable to AWS (Lambda or EC2)\n\n---\n\n## 🛠️ Tech Stack\n\n- **Python 3.10+**\n- **FastAPI** for REST API\n- **Pydantic** for data validation\n- **Feedparser** for RSS ingestion\n- **Uvicorn** for local dev server\n- **Docker** for containerized deployment\n- **AWS** (Lambda, API Gateway, S3, etc. planned)\n\n---\n\n## 🧠 Design Patterns Used\n\n- **Adapter**: Standardize news input formats\n- **Strategy**: Switchable article ranking logic\n- **Facade**: Simple interface for consuming articles\n- **Composite**: Group articles by source, topic, etc.\n- *(Optional)* **Observer**: Trigger actions on new article ingestion\n\n---\n\n## 📦 Example API Endpoints\n\n| Method | Route | Description |\n|--------|-------|-------------|\n| GET    | `/articles` | Get all aggregated articles |\n| GET    | `/articles?source=g1` | Filter by source |\n| GET    | `/articles?source=g1\u0026source=reddit:worldnews` | Filter by multiple sources |\n| GET    | `/topics/trending` | Group articles by topic |\n| POST   | `/rankings/strategy` | Set current ranking strategy |\n\n\n## 🐋 Docker image\n\nYou can build a Docker image and run a local server. On the repository folder, run:\n\n```bash\ndocker build -t newsagg-api .\ndocker run -p 8000:8000 newsagg-api\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figrorp%2Fnewsagg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figrorp%2Fnewsagg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figrorp%2Fnewsagg/lists"}