{"id":21487378,"url":"https://github.com/dtinth/pushnot","last_synced_at":"2025-07-15T15:31:03.990Z","repository":{"id":12098951,"uuid":"14687597","full_name":"dtinth/pushnot","owner":"dtinth","description":"Personal Push Notification Server","archived":false,"fork":false,"pushed_at":"2014-04-08T09:03:48.000Z","size":134,"stargazers_count":71,"open_issues_count":0,"forks_count":5,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-05-02T06:07:31.682Z","etag":null,"topics":["express","leveldb","nodejs","zeromq"],"latest_commit_sha":null,"homepage":"http://me.dt.in.th/page/pushnot/","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/dtinth.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}},"created_at":"2013-11-25T14:24:20.000Z","updated_at":"2021-09-27T14:31:44.000Z","dependencies_parsed_at":"2022-09-21T19:51:26.384Z","dependency_job_id":null,"html_url":"https://github.com/dtinth/pushnot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fpushnot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fpushnot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fpushnot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fpushnot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dtinth","download_url":"https://codeload.github.com/dtinth/pushnot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226047919,"owners_count":17565422,"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":["express","leveldb","nodejs","zeromq"],"created_at":"2024-11-23T13:28:29.212Z","updated_at":"2024-11-23T13:28:29.853Z","avatar_url":"https://github.com/dtinth.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"pushnot\n=======\n\n![Screenshot](http://me.dt.in.th/images/pushnot-Screenshot2.png)\n\nThai's personal push notification server written in Node.js. A combination of:\n\n* [zephyros][] for alerts and [node-zephyros][] for a promise-based Node.js interface.\n* [express][] for building HTTP API.\n* [ursa][] for encrypting the Notification text.\n* [zeromq][] and [zeromq.node][] for pubsub server.\n* [leveldb][] and [node-levelup][] for local database.\n* [growl][] and [node-growl][] for another notification system.\n* [hawk][] for HTTP authentication so that I don't have to roll my own.\n\n\nThe Components\n--------------\n\n![Overview](http://me.dt.in.th/images/pushnot.png)\n\nIt consists of several components:\n\n### The Server\n\n* lets the client send a notification to the server\n* publish the latest notification ID through a zeromq pubsub socket.\n* lets subscribers get the notification data through an HTTP api.\n\n\n### The Client\n\n* encrypts the notification message and post it to the server\n\n\n### The CLI\n\n* a command line interface to the client.\n  lets user type `pushnot app_name message` to send a push notification,\n  for use in shell scripts.\n\n\n### The Subscriber\n\n* a zephyros script that subscribes to new notification messages\n  and display an alert and send to growl.\n\n\nGetting Started\n---------------\n\nRead the [blog post](http://me.dt.in.th/page/pushnot/) for how to install.\n\n\n[zephyros]: https://github.com/sdegutis/zephyros\n[node-zephyros]: https://github.com/danielepolencic/node-zephyros\n[express]: http://expressjs.com/\n[ursa]: https://github.com/Obvious/ursa\n[zeromq]: http://zeromq.org/\n[zeromq.node]: https://github.com/JustinTulloss/zeromq.node\n[leveldb]: http://code.google.com/p/leveldb/\n[levelup]: https://github.com/rvagg/node-levelup\n[growl]: http://growl.info/\n[node-growl]: https://github.com/visionmedia/node-growl\n[hawk]: https://github.com/hueniverse/hawk\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtinth%2Fpushnot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdtinth%2Fpushnot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtinth%2Fpushnot/lists"}