Code Monkey home page Code Monkey logo

notify's Introduction

Introducing Notify: Your Awesome Offline Push Message Sender! πŸ“²

Looking for a super-easy way to send push messages to your devices, even when you're offline? Meet Notify - the open-source project that's got your back! With Notify, you can send push messages via a webhook to any device that supports web push. Whether you're using Docker, bare metal, or Deno Deploy, Notify's got you covered!

Get Notified Anywhere, Anytime! πŸ“²

And that's not all! Notify comes with a cool offline installable PWA, ensuring you never miss any important notifications - even when you're on the go!

Check Out the DEMO πŸš€

Want to see Notify in action? No problem! We've set up a live demo instance on deno deploy. Try it out now! Just use this command to send a notification to all your devices:

curl -X POST -H "Content-Type: application/json" -d '{"title":"Hello", "message":"World"}' https://notify-demo.deno.dev/api/notify

Customize Your Notifications! ✨

You're in control! Personalize your notifications with optional features like adding an icon:

curl -X POST -H "Content-Type: application/json" -d '{"title":"Hello", "message":"World", "icon": "https://via.placeholder.com/150", "tags": ["test", "server"] }' https://notify-demo.deno.dev/api/notify

Easy Installation - No Fuss! πŸ› οΈ

Don't worry about complicated setups. The installation documentation is right here to help you get started with Notify in no time! πŸ“š

πŸ‘‰ Installation Documentation πŸ‘‰ Api Documentation

Features πŸŽ‰

  • Send push messages to any device that supports web push
  • Easy installation with Docker, bare metal, or Deno Deploy
  • Offline installable PWA
  • Customize your notifications with optional features like adding an icon
  • Open-source and free to use
  • No registration required
  • Easy to use API

Quickstart using Docker 🐳

I know this looks scary on first glance but i swear it makes sense.

  1. Generate your instance vapid key deno run --unstable --import-map https://raw.githubusercontent.com/K0IN/Notify/main/app/backend/deno.json https://raw.githubusercontent.com/K0IN/Notify/main/app/backend/main.ts generate
  2. Start the docker (fill in the vapid key from step 1.) docker run -p 8787:8787 -e VAPID_KEY=<vapidkey> -e SUB=mailto:[email protected] -e SENDKEY=mypassword ghcr.io/k0in/notify:latest
  3. Start sending notifications curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer mypassword" -d '{"title":"Hello", "message":"World"}' http://localhost:8787/api/notify or use our cli deno run --allow-net --unstable --import-map https://raw.githubusercontent.com/K0IN/Notify/main/app/backend/deno.json https://raw.githubusercontent.com/K0IN/Notify/main/app/backend/main.ts notify -r http://localhost:8787/api/notify -t test -m world --key mypassword

Need Help? πŸ€”

Credits to the Amazing Developers! πŸ™

Huge shout-out to the talented folks who made this possible! We've built on the fantastic web push code from gauntface and, not to forget, we use the Google Icon Font.

notify's People

Contributors

dependabot[bot] avatar k0in avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

notify's Issues

borken vapid. borken notifications.

helo,,,,,,,,,,,,,,,,,,,,,,,,,,

url for generating vapid is borken...

code & api requires 500+ iq to understand, pls fix so u can test send notifications on page easy & fetch list send notifications to specific simplified user ids like phone numbers : !!!!

also notofications no work brave web browser if no use google paranoid security settings, pls fix i have many other sites they work

other than that very good i have fork https://github.com/ttttttttttttttttttttttttttttttttttttttx/n

🍻

docker ARM error

docker run -dit --name notify \
-e TZ="$(cat /etc/timezone)" \
-p 8787:8787 \
-v ~/notify/app.env:/usr/app/app.env \
-v ~/notify/persistance:/usr/app/data \
ghcr.io/k0in/notify

error

docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "miniflare": executable file not found in $PATH: unknown.

Notification content does not support Chinese

curl -X POST -H "Content-Type: application/json" -d '{"title":"ι€šηŸ₯", "message":"ζ΅‹θ―•"}' https://notify_app-demo.thisk0in.workers.dev/api/notify

Show success but no notification

ARM Version doesn't work

When trying to use the armv6 version, I get the following error:

#
# Fatal error in , line 0
# unreachable code
#
#
#
#FailureMessage Object: 0xbec485fc

Please fix.

docker ARM error

exec /bin/deno: exec format error

Linux test 5.19.0-35-generic #36-Ubuntu SMP PREEMPT_DYNAMIC Fri Feb 3 18:36:47 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
➜  ~ docker -v 
Docker version 24.0.4, build 3713ee1

PWA improvement

Hi, thanks for this awesome project

I tried via docker all are working fine but I feel need some improvements in the PWA manifest

{
    "name": "notify_frontend",
    "short_name": "notify_frontend",
    "start_url": "/",
    "display": "standalone",
    "orientation": "portrait",
    "background_color": "#000",
    "theme_color": "#000",
    "icons": [
        {
            "src": "/assets/icons/notify_big.png",
            "type": "image/png",
            "sizes": "512x512"
        }
    ]
}

docker cannot pull

docker run -p 8787:8787 -e VAPID_KEY=*** -e SUB=mailto:[email protected] -e CORS=true -e SENDKEY=**** ghcr.io/k0in/notify:latest

β€”β€”β€”β€”β€”β€”β€”β€”

docker: Error response from daemon: pull access denied for run, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.

Password error in console and not working in FF for me

Great idea, congrats!
Using ubuntu 22.04
I set up a testing docker instance with a password on my VPS with my domain name, and get the push messages but only on Chromium and its console raises an error: [DOM] Password field is not contained in a form: (More info: https://goo.gl/9p2vKq) <input type=​"password" class=​"mdc-text-field__input" placeholder label=​"Enter login key" id=​"tf-1" valid=​"true">​…​</input>​
And even without password (using your demo) Firefox stays mute, no notifications.
I didn't expect the client to be mandated to enter the password, only when calling the API using POST.
Why password is mandatory for client?

Would you please write a little doc about how to implement the browser code within a NodeJS project on another docker instance? Because usually, notifying is useful in an app :)
Also, is there a way to notify only one user?

Thank you!

It does not deploy properly cloudflare

wrangler.toml Updates required
npm run build_all error

Browserslist: caniuse-lite is outdated. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
 Build  [==                  ] 10% (0.0s) buildingError: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:71:19)
    at Object.createHash (node:crypto:140:10)
    at module.exports (/workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/NormalModule.js:471:10)
    at /workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/NormalModule.js:503:5
    at /workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/NormalModule.js:358:12
    at /workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at iterateNormalLoaders (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
    at /workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:236:3
    at runSyncOrAsync (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:130:11)
    at iterateNormalLoaders (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:232:2)
    at Array.<anonymous> (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
    at Storage.finished (/workspaces/empty/Notify/app/frontend/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16)
    at /workspaces/empty/Notify/app/frontend/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9
Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:71:19)
    at Object.createHash (node:crypto:140:10)
    at module.exports (/workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/NormalModule.js:471:10)
    at /workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/NormalModule.js:503:5
    at /workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/NormalModule.js:358:12
    at /workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at iterateNormalLoaders (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
    at /workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:236:3
    at runSyncOrAsync (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:130:11)
    at iterateNormalLoaders (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:232:2)
    at Array.<anonymous> (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
    at Storage.finished (/workspaces/empty/Notify/app/frontend/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16)
    at /workspaces/empty/Notify/app/frontend/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9
 Build  [==                  ] 10% (0.3s) buildingβœ– ERROR Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:71:19)
    at Object.createHash (node:crypto:140:10)
    at module.exports (/workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/NormalModule.js:471:10)
    at /workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/NormalModule.js:503:5
    at /workspaces/empty/Notify/app/frontend/node_modules/webpack/lib/NormalModule.js:358:12
    at /workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at iterateNormalLoaders (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
    at /workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:236:3
    at context.callback (/workspaces/empty/Notify/app/frontend/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
    at /workspaces/empty/Notify/app/frontend/node_modules/babel-loader/lib/index.js:59:71

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.