Only tested on the lastest versions of Chrome, Android Chrome and Firefox, so it might have problems in other browsers. Please report on twitter @AndreBaltazar if you find any problem.
Right now there is a limit of 5 registered workers per endpoint to avoid spam. There is also a limit of 2 notification per minute on each endpoint. Notifications sent when rate limited will be discarded, not queued. This project was created to notify me of internal errors with my website. Please don't abuse this system or I will shut it down. Also, I might send you a notification thanking you for using this project, or an update regarding it's state. Hope you enjoy, thanks.
It's quite inefficient at the moment, it registers a service worker for each endpoint. In the future a single service worker will be used for all events.
If there is any interest, I might do private endpoints that require a key to notify and without limits.
Try using cURL
curl -X POST https://notifier.icy.pt/O_fMj8XE8K9f5rXEf_olkhcKDNidTXFsR_BrDTy3W0Y
Try using cURL with message
curl -d "title=Hello+from+notifier.icy.pt&body=Example+notification" -X POST https://notifier.icy.pt/O_fMj8XE8K9f5rXEf_olkhcKDNidTXFsR_BrDTy3W0Y
Try using cURL with custom title, message, logo, and url (when clicked) using JSON
curl -d '{"title":"icy.pt","body":"Visit my website and explore other projects!","url":"https://icy.pt/","icon":"https://icy.pt/icy-logo.png"}' -H "Content-Type: application/json" -X POST https://notifier.icy.pt/O_fMj8XE8K9f5rXEf_olkhcKDNidTXFsR_BrDTy3W0Y
Try with PHP
<?php file_get_contents('https://notifier.icy.pt/O_fMj8XE8K9f5rXEf_olkhcKDNidTXFsR_BrDTy3W0Y', false, stream_context_create(['http' => ['method' => 'POST']]));
Try with PHP with custom title, message, logo, and url (when clicked) using JSON
<?php file_get_contents('https://notifier.icy.pt/O_fMj8XE8K9f5rXEf_olkhcKDNidTXFsR_BrDTy3W0Y', false, stream_context_create(['http' => ['method' => 'POST', 'header' => 'Content-type: application/json', 'content' => '{"title":"icy.pt","body":"Visit my website and explore other projects!","url":"https://icy.pt/","icon":"https://icy.pt/icy-logo.png"}']]));
Try with JS with everything using JSON
fetch('https://notifier.icy.pt/O_fMj8XE8K9f5rXEf_olkhcKDNidTXFsR_BrDTy3W0Y', { method: 'POST', body: JSON.stringify({ 'title': 'Notifier @ icy', 'body': 'Thanks for trying the notifications!', 'icon': '/images/notifier-logo.png', 'url': 'https://notifier.icy.pt/', 'badge': '/images/notifier-logo-96-bw.png', 'image': '/images/notifier-thanks.png', 'vibrate': [200, 100, 200, 100, 200, 100, 400], 'requireInteraction': true, 'actions': { 'website': { 'title': 'Visit my website', 'icon': 'https://icy.pt/icy-logo-96-bw.png', 'url': 'https://icy.pt/' }, 'twitter': { 'title': 'Follow me on Twitter @AndreBaltazar', 'icon': '/images/twitter-bw.png', 'url': 'https://twitter.com/AndreBaltazar' } } }), headers: new Headers({ 'Content-Type': 'application/json' }) });