Host your own Web Push Service.
- Deployment
- Subscribing to Channels
- Sending Web Push Notifications
- Installation as CLI
- Usage
- Dependencies
- Contribute
- Authors
- License
Prerequisites
- Linux Machine with Ubuntu. Get $10 to spend at Digital Ocean.
- Domain Name. Namecheap.
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 runningsudo npm install -g web-push-service
. - Configure
Web Push Service
by runnningweb-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
See Sample
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
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="
}
npm install -g web-push-service
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
- 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
Coming Soon
- Barend Erasmus - Initial work - barend-erasmus
This project is licensed under the MIT License - see the LICENSE.md file for details