{"id":25611451,"url":"https://github.com/sealbro/go-feed-me","last_synced_at":"2026-05-04T22:42:18.620Z","repository":{"id":241872676,"uuid":"594768781","full_name":"sealbro/go-feed-me","owner":"sealbro","description":"Self managed feeds  crawler  ","archived":false,"fork":false,"pushed_at":"2024-09-01T10:57:26.000Z","size":245,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-21T23:20:14.718Z","etag":null,"topics":["atom","discord","go","golang","graphql","rss","rss-feed","self-hosted"],"latest_commit_sha":null,"homepage":"","language":"Go","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/sealbro.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2023-01-29T15:35:49.000Z","updated_at":"2024-09-25T13:21:53.000Z","dependencies_parsed_at":"2024-05-30T12:46:02.927Z","dependency_job_id":"9c78404b-8254-4428-a19a-827ec4b80bac","html_url":"https://github.com/sealbro/go-feed-me","commit_stats":null,"previous_names":["sealbro/go-feed-me"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/sealbro/go-feed-me","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sealbro%2Fgo-feed-me","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sealbro%2Fgo-feed-me/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sealbro%2Fgo-feed-me/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sealbro%2Fgo-feed-me/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sealbro","download_url":"https://codeload.github.com/sealbro/go-feed-me/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sealbro%2Fgo-feed-me/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263389466,"owners_count":23459403,"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":["atom","discord","go","golang","graphql","rss","rss-feed","self-hosted"],"created_at":"2025-02-21T23:19:43.605Z","updated_at":"2026-05-04T22:42:13.596Z","avatar_url":"https://github.com/sealbro.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Feeds notifier as a service\n\nThis is a simple RSS and Atom feed notifier. It fetches new articles from feed resources and notifies consumers like `discord` chat or `graphql` API subscribers.\n\n[![Hub](https://badgen.net/docker/pulls/sealbro/go-feed-me?icon=docker\u0026label=go-feed-me)](https://hub.docker.com/r/sealbro/go-feed-me/)\n\n```mermaid\nflowchart LR\n  subgraph go-feed-me\n    direction TB\n    subgraph job\n        t(\"`Cron crawlers`\")\n    end\n    subgraph storage\n        st1(\"`SQLite`\")\n        st2(\"`Postgres`\")\n    end\n    subgraph api\n        direction TB\n        api1(\"`/graphql`\")\n        api2(\"`/metrics`\")\n    end\n  end\n  subgraph consumers\n    direction RL\n    sub1(\"`Discord chat`\")\n    sub2(\"`Graphql subscribers`\")\n  end\n  feed(\"`RSS or atom feeds`\")  --\u003e go-feed-me  --\u003e consumers\n  job --\u003e storage --\u003e api\n```\n\n## Features\n\n- [x] GraphQL UI and API\n- [x] Storing data in database (sqlite, postgres)\n- [x] Adding new RSS feed resources and store them\n- [x] Fetch new articles from RSS feed resources\n- [x] Notify new articles to graphql subscribers, discord.\n- [x] Observability (logs, metrics, traces)\n- [ ] Support more subscribers (slack, email, etc) or make it pluggable\n- [ ] Support multiple users and roles\n- [ ] Support filtering resources (maybe articles) by tags\n\n## Quick start\n\n```bash\ndocker run -it --rm -p 8080:8080 -p 8081:8081 sealbro/go-feed-me:latest\n```\n\nOpen [http://localhost:8080/feed/graphql/](http://localhost:8080/feed/graphql/) in your browser.\n\n### Environment variables\n\n| Name                          | Description                | Default          |\n|-------------------------------|----------------------------|------------------|\n| `SLUG`                        | Path api prefix            | `feed`           |\n| `PUBLIC_ADDRESS`              | Public api address         | `:8080`          |\n| `PRIVATE_ADDRESS`             | Private metrics address    | `:8081`          |\n| `CRON`                        | Cron pattern when run jobs | `1/60 * * * * *` |\n| `SQLITE_CONNECTION`           | Sqlite file location       | `/feed.db`       |\n| `POSTGRES_CONNECTION`         | Postgres connection string | empty            |\n| `DISCORD_WEBHOOK_ID`          | Discord webhook id         | empty            |\n| `DISCORD_WEBHOOK_TOKEN`       | Discord webhook token      | empty            |\n| `LOG_LEVEL`                   | slog level                 | `INFO`           |\n| `OTEL_EXPORTER_OTLP_ENDPOINT` | Otlp grpc endpoint         | empty            |\n\n- Postgres [connection string](https://gorm.io/docs/connecting_to_the_database.html#PostgreSQL): `host=\u003cip or host\u003e user=\u003cusername\u003e password=\u003cpassword\u003e dbname=feed port=5432 sslmode=disable`\n- Discord how get id and token for [webhook](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks)\n- Cron pattern [quartz](https://github.com/reugn/go-quartz)\n\n## Graphql\n\n### Queries\n\n```graphql\nquery Articles {\n    articles (after: \"2023-01-01T15:04:05.999999999Z\") {\n        published,\n        link,\n        title,\n        description,\n        content\n    }\n}\n```\n\n```graphql\nquery Resources {\n    resources(active: true) {\n        url\n        title\n        active\n        created\n        modified\n        published\n    }\n}\n```\n\n### Mutations\n\n```graphql\nmutation AddResources {\n    addResources (resources: [\n        {url: \"https://github.com/opencv/opencv/releases.atom\", active: true},\n        {url: \"https://github.com/openvinotoolkit/openvino/releases.atom\", active: true},\n        {url: \"https://github.com/hybridgroup/gocv/releases.atom\", active: true},\n    ]) \n}\n```\n\n```graphql\nmutation ActivateResources {\n    activateResources ( \n        urls: [\"https://github.com/opencv/opencv/releases.atom\"],\n        active: false\n    ) \n}\n```\n\n```graphql\nmutation RemoveResources {\n    removeResources ( \n        urls: [\"https://github.com/opencv/opencv/releases.atom\"]\n    ) \n}\n```\n\n### Subscriptions\n\n```graphql\nsubscription notifyNewData {\n    articles {\n        title\n        description\n        content\n        link\n    }\n}\n```\n\n## Contributing\n\n### Build\n\nBuild docker image locally:\n```bash\ndocker build --build-arg GO_VERSION=\"$(grep '^go' go.mod | awk '{print $2}')\" -t feed .\n````\n### Run\n\nRun local built docker image:\n```bash\ndocker run -it --rm -p 8080:8080 -p 8081:8081 feed\n```\n\n### Re-generate graphql schema\n\n```bash\nmake generate\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsealbro%2Fgo-feed-me","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsealbro%2Fgo-feed-me","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsealbro%2Fgo-feed-me/lists"}