Skip to content

barend-erasmus/web-push-service

Repository files navigation

Web Push Service

Host your own Web Push Service.

Travis CI Coverage Status NPM Dependencies Maintainability License Last Commit Language

Table of contents

Deployment

Production Environment

Prerequisites

Setup

  • Connect to your Linux Machine via SSH using your preferred client.
  • Install node.js by using the guide on their website.
  • Install Web Push Service via npm by running sudo npm install -g web-push-service.
  • Configure Web Push Service by runnning web-push-service start --host your-domain.com --mongo mongodb://127.0.0.1:27017 --port 8080

Browse https://your-domain.com to view the Swagger UI

swagger

Subscribing to Channels

See Sample

Sending Web Push Notifications

cURL

curl -d '{ "image": "https://via.placeholder.com/50x50", "message": "My first message", "title": "Hello World", "url": "https://example.com" }' -H "Authorization: <your-key-here>" -H "Content-Type: application/json" -X POST https://your-domain.com/api/v1/push

Obtaining Credentials

cURL

curl -d '{ "endpoint": "https://your-domain.com" }' -H "Content-Type: application/json" -X POST https://your-domain.com/api/v1/client

This request will return your key and publicKey.

{
  "id": "2ab7acb4-f8ef-40e3-b2e9-f7855047d835",
  "key": "467b5026-c14a-48fc-97b1-f3ca5fb21a95",
  "publicKey": "BBqOI20HlYxLMth7sbTk002PMinG7QVRUC12BEZpvq9r1maySNv30MeHxHSYPzKULqhHiSIsFKsdVlc9IJ1NuwE="
}

Installation as CLI

npm install -g web-push-service

Usage

Usage: start [options]

  Options:

    -h --host <host>    defaults to 'localhost:8080'
    -m --mongo <host>   if not provided, file-based storage will be used
    -p --port <port>    port
    -h, --help          output usage information

Usage: install [options]

  Options:

    -h --host <host>   defaults to 'your-domain.com'
    -m --mongo <host>  if not provided, file-based storage will be used
    -p --port <port>   port
    --nginx            install NGINX
    --letsencrypt      install and configure Let's Encrypt
    -h, --help         output usage information

Dependencies

  • ajv - Another JSON Schema Validator
  • body-parser - Node.js body parsing middleware
  • chalk - Terminal string styling done right
  • commander - The complete solution for node.js command-line programs
  • cors - Node.js CORS middleware
  • express - Fast, unopinionated, minimalist web framework
  • js-yaml - YAML 1.2 parser / writer for JavaScript
  • mongodb - The official MongoDB driver for Node.js
  • nedb - File-based embedded data store for node.js
  • swagger-ui-express - Swagger UI Express
  • uuid - RFC4122 (v1, v4, and v5) UUIDs
  • web-push - Web Push library for Node.js

Contribute

Coming Soon

Authors

License

This project is licensed under the MIT License - see the LICENSE.md file for details

About

Host your own Web Push Service.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published