{"id":29100478,"url":"https://github.com/kolesnikova-dev/finance-notifier","last_synced_at":"2025-08-29T06:17:50.715Z","repository":{"id":299221419,"uuid":"1002188842","full_name":"kolesnikova-dev/finance-notifier","owner":"kolesnikova-dev","description":"FinanceNotifier is a weekly background job that scrapes news articles, summarizes them with Google Gemini Flash and sends me an email with the summarized articles ","archived":false,"fork":false,"pushed_at":"2025-06-29T20:20:47.000Z","size":31,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-29T21:18:01.817Z","etag":null,"topics":["csharp","dotnet","google-gemini-ai","hangfire","html-agility-pack","playwright"],"latest_commit_sha":null,"homepage":"","language":"C#","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/kolesnikova-dev.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-06-14T22:56:13.000Z","updated_at":"2025-06-29T20:20:49.000Z","dependencies_parsed_at":"2025-06-15T12:44:17.504Z","dependency_job_id":null,"html_url":"https://github.com/kolesnikova-dev/finance-notifier","commit_stats":null,"previous_names":["kolesnikova-dev/finance-notifier"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kolesnikova-dev/finance-notifier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kolesnikova-dev%2Ffinance-notifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kolesnikova-dev%2Ffinance-notifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kolesnikova-dev%2Ffinance-notifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kolesnikova-dev%2Ffinance-notifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kolesnikova-dev","download_url":"https://codeload.github.com/kolesnikova-dev/finance-notifier/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kolesnikova-dev%2Ffinance-notifier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272640983,"owners_count":24968792,"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","status":"online","status_checked_at":"2025-08-29T02:00:10.610Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["csharp","dotnet","google-gemini-ai","hangfire","html-agility-pack","playwright"],"created_at":"2025-06-28T18:14:12.316Z","updated_at":"2025-08-29T06:17:50.707Z","avatar_url":"https://github.com/kolesnikova-dev.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FinanceNotifier\n\nFinanceNotifier is a C#-based background service that scrapes important financial news, summarizes it using AI, and delivers it to my inbox weekly. \nThe goal is to keep users up to date on key financial developments — without requiring them to actively monitor news sources.\n\n## Features\n- Scheduled weekly scraping job (every Sunday at 6AM EST)\n\n- Concurrent web scraping using `HttpClient` and `HtmlAgilityPack`\n\n- AI-generated article summaries (summarizied by `Gemini Flash`)\n\n- Email delivery via `MailKit`\n\n## Built with clean architecture and asynchronous C# practices\n\n📌 Tech Stack\nC# (.NET)\n\n- `Hangfire` for reliable background scheduling\n\n- `Playwright` for scraping SPAs with dynamic content\n\n- `HtmlAgilityPack` for HTML parsing\n\n- `HttpClient` for data fetching\n\n- `MailKit` for email sending\n\n- `Gemini Flash` integration\n\n\n## Architectural Choices\n\nTypically, I prefer built-in solutions, however, after conducting research I made following decisions:\n\n- Picked `Hangfire` over `System.Timers` for retry support\n- Picked `MailKit` instead of `SmtpClient` as it is becoming obsolete\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkolesnikova-dev%2Ffinance-notifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkolesnikova-dev%2Ffinance-notifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkolesnikova-dev%2Ffinance-notifier/lists"}