{"id":19124073,"url":"https://github.com/efforg/pushserver","last_synced_at":"2025-07-05T22:33:12.667Z","repository":{"id":21416443,"uuid":"24734506","full_name":"EFForg/pushserver","owner":"EFForg","description":"A server for sending push notifications to mobile apps","archived":false,"fork":false,"pushed_at":"2018-03-22T21:32:47.000Z","size":198,"stargazers_count":30,"open_issues_count":5,"forks_count":8,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-04-19T11:09:08.515Z","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":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EFForg.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}},"created_at":"2014-10-02T20:04:15.000Z","updated_at":"2025-04-09T16:11:10.000Z","dependencies_parsed_at":"2022-08-21T08:41:00.521Z","dependency_job_id":null,"html_url":"https://github.com/EFForg/pushserver","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/EFForg%2Fpushserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EFForg%2Fpushserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EFForg%2Fpushserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EFForg%2Fpushserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EFForg","download_url":"https://codeload.github.com/EFForg/pushserver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252558606,"owners_count":21767798,"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-09T05:28:04.162Z","updated_at":"2025-05-05T19:00:04.110Z","avatar_url":"https://github.com/EFForg.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"push server\n============\n\n[![Build Status](https://travis-ci.org/EFForg/pushserver.svg)](https://travis-ci.org/EFForg/pushserver)\n\nHapi server app for creating and distributing push notifications\n\n## Table of Contents\n\n* [Getting Started](#getting-started)\n* [Running the server](#running-the-server)\n* [App Configuration](#app-configuration)\n* [Securing the app](#securing-the-app)\n* [Run tests](#run-tests)\n* [API](#api)\n  * [Notifications](#notifications)\n  * [Subscriptions](#subscriptions)\n  * [Errors](#errors)\n* [Angular App](#angular-app)\n\n## Getting Started\n\n```\nnpm install\nbower install\ngulp build\ngulp syncDb\n```\n\n## Running the server\n\nStart the hapi server and set up watches on templates, js and css\n\n```\ngulp watch\n```\n\n## App Configuration\n\nApp config is controlled via the [node-config](https://github.com/lorenwest/node-config) module.\n\nTo set push credentials, create a local.json file under the [config dir](/config) and override the CREDENTIALS setting.\n\nAlternately, you can use:\n* [Environment variables](https://github.com/lorenwest/node-config/wiki/Environment-Variables)\n* [Command line options](https://github.com/lorenwest/node-config/wiki/Command-Line-Overrides)\n\n## Securing the app\n\nBy default, the app exposes all API endpoints and the web UI. This would allow a 3rd party to send a correctly crafted notification object to the server and have it go to all subscribers.\n\nYou should ensure that wherever the app is running it either:\n* has an authentication layer\n* is running behind another server, nginx / apache etc., that restricts access to the relevant endpoints\n\n## Run tests\n\n```\ngulp test\n```\n\n## API\n\n### [Notifications](/routes/notifications)\n\n- [**\u003ccode\u003ePOST\u003c/code\u003e /api/1/notifications**](/routes/notifications/add_notification.js) - adds a new notification to the database and publishes it to all attached channels\n- [**\u003ccode\u003eGET\u003c/code\u003e /api/1/notification/{notificationId}**](/routes/notifications/get_notification.js) - fetches the notification matching notificationId\n- [**\u003ccode\u003ePOST\u003c/code\u003e /api/1/notifications/search**](/routes/notifications/get_notifications.js) - fetches all notifications matching the supplied search object\n\nSee the [schema object](/routes/notifications/validation.js) for details of the object structure these endpoints accept\n\n### [Subscriptions](/routes/subscriptions)\n\n- [**\u003ccode\u003ePOST\u003c/code\u003e /api/1/subscriptions**](/routes/subscriptions/add_subscription.js) - adds a new subscription and subscribes that user to notifications from their preferred channel(s)\n- [**\u003ccode\u003eDELETE\u003c/code\u003e /api/1/subscriptions/{deviceId}**](/routes/subscriptions/delete_subscription.js) - deletes a subscription\n\nSee the [schema object](/routes/subscriptions/validation.js) for details of the object structure these endpoints accept\n\n### [Errors](/routes/errors)\n\n- [**\u003ccode\u003ePOST\u003c/code\u003e /api/1/errors**](/routes/errors/log_error.js) - Logs a client-side error to the server logs\n\nSee the [schema object](/routes/errors/validation.js) for details of the object structure these endpoints accept\n\n## Angular app\n\nSee the [www/README.md](/www/README.md) for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fefforg%2Fpushserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fefforg%2Fpushserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fefforg%2Fpushserver/lists"}