{"id":13769070,"url":"https://github.com/argoproj/notifications-engine","last_synced_at":"2025-05-14T07:08:32.190Z","repository":{"id":37847663,"uuid":"339569902","full_name":"argoproj/notifications-engine","owner":"argoproj","description":"Affordable notifications for Kubernetes","archived":false,"fork":false,"pushed_at":"2025-03-23T14:51:37.000Z","size":490,"stargazers_count":294,"open_issues_count":83,"forks_count":164,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-12T20:43:24.180Z","etag":null,"topics":["hacktoberfest","kubernetes","ms-teams","notifications","slack"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/argoproj.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,"zenodo":null}},"created_at":"2021-02-17T00:31:34.000Z","updated_at":"2025-04-04T03:50:27.000Z","dependencies_parsed_at":"2023-09-22T04:38:49.149Z","dependency_job_id":"74024449-b4be-4ff7-8e01-8e4a086e1761","html_url":"https://github.com/argoproj/notifications-engine","commit_stats":{"total_commits":137,"total_committers":74,"mean_commits":"1.8513513513513513","dds":0.8321167883211679,"last_synced_commit":"8cb0e74917d961212e2997eef1161f634426741a"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argoproj%2Fnotifications-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argoproj%2Fnotifications-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argoproj%2Fnotifications-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argoproj%2Fnotifications-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/argoproj","download_url":"https://codeload.github.com/argoproj/notifications-engine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254092775,"owners_count":22013290,"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":["hacktoberfest","kubernetes","ms-teams","notifications","slack"],"created_at":"2024-08-03T17:00:16.645Z","updated_at":"2025-05-14T07:08:32.171Z","avatar_url":"https://github.com/argoproj.png","language":"Go","funding_links":[],"categories":["Ecosystem Projects"],"sub_categories":[],"readme":"# Notifications Engine\n\nNotifications Engine is a configuration-driven Golang library that provides notifications for cloud-native applications.\nThe project provides integration with dozen of services like Slack, MS Teams, Mattermost, SMTP, Telegram, Netgenie, and the list keeps growing.\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"460\" src=\"https://user-images.githubusercontent.com/426437/115815221-70139a00-a3ab-11eb-8dc9-3e15f6b17804.png\"\u003e\n\u003c/p\u003e\n\n## Why Use It?\n\nThe first class notifications support is often eschewed feature in Kubernetes controllers. This is challenging because\nnotifications are very opinionated by nature. It is hard to predict what kind of events end-users want to be notified\nabout and especially how the notification should look like. Additionally, there are lots of notification services so it\nis hard to decide which one to support first.The Notifications Engine is trying to tackle both challenges:\n\n* provides a flexible configuration-driven mechanism of triggers and templates and allows CRD controller\n  administrators to accommodate end-user requirements without making any code changes;\n* out of the box integrates with dozen of notifications services (Slack, SMTP, Telegram etc) with many integrations yet to come;\n\n## Features\n\nUsing the engine CRD controller administrators can configure a set of [triggers](./docs/triggers.md) and [templates](./docs/templates.md)\nand enable end-users to subscribe to the required triggers by just annotating custom resources they care about.\n\nThe example below demonstrates the [Argo CD](https://github.com/argoproj/argo-cd) specific configuration:\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: argocd-notifications-cm\ndata:\n  trigger.on-sync-status-unknown: |\n    - when: app.status.sync.status == 'Unknown'\n      send: [app-sync-status]\n\n  template.app-sync-status: |\n    message: |\n      Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}.\n      Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.\n\n  service.slack: |\n    token: $slack-token\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: argocd-notifications-secret\nstringData:\n  slack-token: \u003cmy-slack-token\u003e\n```\n\nThe end-user can subscribe to the triggers they are interested in by adding  `notifications.argoproj.io/subscribe/\u003ctrigger\u003e/\u003cservice\u003e: \u003crecipients\u003e` annotation:\n\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  annotations:\n    notifications.argoproj.io/subscribe.on-sync-succeeded.slack: my-channel1;my-channel2\n```\n\nIf there is more than one trigger and multiple destinations you can configure the annotation as given below.\n\n```yaml\nnotifications.argoproj.io/subscriptions: |\n  - trigger: [on-scaling-replica-set, on-rollout-updated, on-rollout-step-completed]\n    destinations:\n      - service: slack\n        recipients: [my-channel-1, my-channel-2]\n      - service: email\n        recipients: [recipient-1, recipient-2, recipient-3 ]\n  - trigger: [on-rollout-aborted, on-analysis-run-failed, on-analysis-run-error]\n    destinations:\n      - service: slack\n        recipients: [my-channel-21, my-channel-22]\n```\n## Getting Started\n\nReady to add notifications to your project? Check out sample notifications for [cert-manager](./examples/certmanager/README.md)\n\n## Users\n\n* [Argo CD](https://github.com/argoproj/argo-cd) (implemented by [argocd-notifications](https://github.com/argoproj-labs/argocd-notifications))\n* [Argo Rollouts](https://github.com/argoproj/argo-rollouts)\n\n# Additional Resources\n\n* [Proposal document](https://docs.google.com/document/d/1nw0i7EAehNnjEkbpx-I3BVjfZvRgetUFUZby4iMUSWU/edit)\n* [Argoproj notifications blog post](https://blog.argoproj.io/notifications-for-argo-bb7338231604)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fargoproj%2Fnotifications-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fargoproj%2Fnotifications-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fargoproj%2Fnotifications-engine/lists"}