{"id":18885376,"url":"https://github.com/redis/Notifications","last_synced_at":"2026-02-23T06:30:17.150Z","repository":{"id":38320289,"uuid":"505855390","full_name":"RedisInsight/Notifications","owner":"RedisInsight","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-05T15:17:52.000Z","size":206,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-12-31T04:41:54.045Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/RedisInsight.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}},"created_at":"2022-06-21T13:28:38.000Z","updated_at":"2024-11-05T15:09:19.000Z","dependencies_parsed_at":"2024-12-31T04:41:28.956Z","dependency_job_id":"2db891e5-d3bd-40c6-b6db-126362a7027f","html_url":"https://github.com/RedisInsight/Notifications","commit_stats":null,"previous_names":["redis-insight/notifications","redisinsight/notifications"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedisInsight%2FNotifications","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedisInsight%2FNotifications/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedisInsight%2FNotifications/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedisInsight%2FNotifications/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RedisInsight","download_url":"https://codeload.github.com/RedisInsight/Notifications/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239858731,"owners_count":19708856,"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":[],"created_at":"2024-11-08T07:18:12.358Z","updated_at":"2026-02-23T06:30:17.096Z","avatar_url":"https://github.com/RedisInsight.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Notifications\n![Notification Center](docs/notification_center.png)\n\nIn-app notifications allow to inform users about any updates, news or events inside of RedisInsight.\n\nThis repository used to manage \"global\" notifications which are distributed to all RedisInsight app users\n\n## Structure\n\nAll notifications are stored inside the `notifications.json` in the root of the repository.\nTo manage notifications it is enough to edit this json file.\n\n### notifications.json example\n```json\n{\n    \"notifications\": [\n        {\n            \"title\": \"Plain notification\",\n            \"body\": \"Plain text here\",\n            \"timestamp\": 1656374400\n        },\n        {\n            \"title\": \"Html notification\",\n            \"body\": \"\u003cul\u003e\u003cli\u003eFIRST unnumerated\u003c/li\u003e\u003cli\u003eSecond unnumerated\u003c/li\u003e\u003cli\u003eThird unnumerated\u003c/li\u003e\u003cli\u003eFourth unnumerated\u003c/li\u003e\u003c/ul\u003e\",\n            \"timestamp\": 1656460800\n        },\n        {\n            \"title\": \"Notification with link\",\n            \"body\": \"Try to click \u003ca href=\\\"link here\\\"\u003ehere\u003c/a\u003e fro more details\",\n            \"timestamp\": 1656547200\n        }\n    ]\n}\n```\n\nEach notification is an object under the `notifications` array field of the json\nwith the following structure.\n\n| Prop | Type | Description |\n| --- | --- | --- |\n| title (**required**)      | string |  |\n| body (**required**)       | string | text/html |\n| timestamp (**required**)  | integer | Number of **seconds** since 1970.01.01T00:00:00  |\n\n**timestamp** and **type** (\"global\" in our case) will be used as an id\nin the RedisInsight database, so it is very important to keep them unique and not change\nunless you understand why you do that. Also, the **timestamp** is used to represent the notification\ndate in the list and for sorting. So it is better to rely on the current or\nplanned notification release date and convert it to the timestamp using,\nfor example, this [tool](https://www.epochconverter.com/)\n\n## How to manage notifications\n### How to add\n\nLet's assume that there are 2 notifications inside of the `notifications.json`\n```json\n{\n    \"notifications\": [\n        {\n            \"title\": \"Plain notification\",\n            \"body\": \"Plain text here\",\n            \"category\": \"Release\",\n            \"categoryColor\": \"#ffffff\",\n            \"timestamp\": 1656374400\n        },\n        {\n            \"title\": \"Html notification\",\n            \"body\": \"\u003cul\u003e\u003cli\u003eFIRST unnumerated\u003c/li\u003e\u003cli\u003eSecond unnumerated\u003c/li\u003e\u003cli\u003eThird unnumerated\u003c/li\u003e\u003cli\u003eFourth unnumerated\u003c/li\u003e\u003c/ul\u003e\",\n            \"category\": \"Release\",\n            \"categoryColor\": \"#ffffff\",\n            \"timestamp\": 1656460800\n        }\n    ]\n}\n```\n![Notification Center](docs/2_notifications_list.png)\n\nTo add new notification, add a new object inside the `notifications` array (though it can be added at any position since RedisInsight will sort notifications by the timestamp, please insert a new notification to the top to easily navigate through the file).\n\n```json\n{\n    \"notifications\": [\n        {\n            \"title\": \"Plain notification\",\n            \"body\": \"Plain text here\",\n            \"category\": \"Release\",\n            \"categoryColor\": \"#ffffff\",\n            \"timestamp\": 1656374400\n        },\n        {\n            \"title\": \"Html notification\",\n            \"body\": \"\u003cul\u003e\u003cli\u003eFIRST unnumerated\u003c/li\u003e\u003cli\u003eSecond unnumerated\u003c/li\u003e\u003cli\u003eThird unnumerated\u003c/li\u003e\u003cli\u003eFourth unnumerated\u003c/li\u003e\u003c/ul\u003e\",\n            \"category\": \"Release\",\n            \"categoryColor\": \"#ffffff\",\n            \"timestamp\": 1656460800\n        },\n+        {\n+            \"title\": \"Notification with link\",\n+            \"body\": \"Try to click \u003ca href=\\\"\\\"\u003ehere\u003c/a\u003e fro more details\",\n+            \"timestamp\": 1656547200\n+        }\n    ]\n}\n```\n\nWhen all the changes are made, merge the updated `notifications.json` into the `main` branch. After double-checking the changes in the `main` branch, merge them to the `latest` branch.\nRedisInsight checks new notifications from the `latest` branch on the application start-up or each 1 hour (at '00) if the application is not closed. When changes are captured, RedisInsight will display the notification.\n\n\n![New Notification](docs/new_notification.png)\n\n### How to edit\nIf there is any information that should be changed in the notifications already published (e.g. a typo), change the information in the `notifications.json` and merge it to the latest branch. RedisInsight will capture the updates according to standard rules and display them in the Notification Center.\n\nIf the **timestamp** has not been changed, then the notification will be updated silently, if it has been changed then the previous notification will be deleted and a new one will be posted (with the same rules as applied for new notifications).\n\n\n\n### How to delete\nIf a notification should be deleted, then just delete the notification from the `notifications.json` and merge it to the latest branch. After capturing the changes, RedisInsight will silently remove the notification from the Notification Center.\n\n## Notifications auto update and dev process\n\n![](docs/flow.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredis%2FNotifications","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredis%2FNotifications","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredis%2FNotifications/lists"}