Send push notifications to your phone or desktop using PUT/POST
Find a file
Nick Farrell 9f2311b98e
Avoid blocking incoming messages.
Through the additional of a secondary signalling channel,
whenever there are sufficient messages in the queue to fill a "batch",
the processing goroutine will be immediately woken. Because the
buffered channel has double that capacity, requests should never be
delayed unless the server is actually overloaded.

This preserves the improvements of the previous commit, meaning that,
even when a batch size of 10 and a batch delay of 1s is used:
- there is no background load; if no messages are received, the server
  is dormant;
- if no message was received in the last second, a new message will be
  immediately processed;
- if a small number of messages are received after the first, the
  additional messages will be collected and processed in a single
  transaction after the configured delay;
- if enough new messages arrive to fill a batch (ie 10 in this example),
  they will be immediately processed, freeing up capacity for more
  messages;
- if up to double the configured number of messages arrive in a burst,
  there will be sufficient capacity to cache them immediately,
  regardless of how slowly the mysql server commits each transaction
2022-12-23 08:30:47 +11:00
.github Remove test branch 2022-11-13 21:40:39 -05:00
assets Styling 2021-10-24 14:22:53 -04:00
auth Reduce bcrypt cost to 10 2022-02-07 22:09:31 -05:00
client ntfy pub: use default-user and default-password from client.yml 2022-10-09 08:34:23 -06:00
cmd Remove --env-topic flag from "ntfy publish" (as per deprecation) 2022-11-28 11:06:47 -05:00
docs Known issues 2022-12-20 21:58:54 -05:00
examples Python examples; that's all; closes #50 2021-12-15 20:37:21 -05:00
log Replace interface{} 2022-10-01 16:31:48 -04:00
scripts Filter emojis that don't render in Chrome on Desktop 2022-04-04 20:44:40 -04:00
server Avoid blocking incoming messages. 2022-12-23 08:30:47 +11:00
test Accumulate incoming messages in a buffered channel 2022-12-23 08:30:47 +11:00
tools/fbsend Upgrade Firebase Admin SDK version 2022-05-29 20:48:14 -04:00
util Accumulate incoming messages in a buffered channel 2022-12-23 08:30:47 +11:00
web Merge branch 'main' of https://hosted.weblate.org/git/ntfy/web 2022-12-19 09:59:42 -05:00
.gitignore Changelog 2022-05-24 22:30:12 -04:00
.gitpod.yml Add Gitpod configuration for quick setup of development environments 2022-12-10 21:56:13 +00:00
.goreleaser.yml Deprecation warnings 2022-09-27 12:45:43 -04:00
CODE_OF_CONDUCT.md Code of Conduct 2022-12-12 15:06:04 -05:00
docker-compose.yml add tzdata to image and use env for docker timezone 2022-06-02 13:35:49 -07:00
Dockerfile Revert tzdata change 2022-06-02 21:38:27 -04:00
go.mod Android release notes 2022-12-04 20:38:38 -05:00
go.sum Android release notes 2022-12-04 20:38:38 -05:00
LICENSE Update LICENSE 2021-12-05 12:51:08 -05:00
LICENSE.GPLv2 Update LICENSE.GPLv2 2021-12-05 12:52:20 -05:00
main.go Remove urfave/cli workaround 2022-03-16 14:50:00 -04:00
Makefile Move COMMIT into a variable so it could be overridden if desired 2022-08-02 03:40:33 +08:00
mkdocs.yml Known issues 2022-12-20 21:58:54 -05:00
README.md Thank you @Terrormixer3000 for your donation 2022-12-21 09:39:13 -05:00
requirements.txt Try it a better way 2022-03-24 19:27:07 -04:00

ntfy

ntfy.sh | Send push notifications to your phone or desktop via PUT/POST

Release Go Reference Tests Go Report Card codecov Discord Matrix Matrix space Reddit Healthcheck Gitpod

ntfy (pronounce: notify) is a simple HTTP-based pub-sub notification service. It allows you to send notifications to your phone or desktop via scripts from any computer, entirely without signup or cost. It's also open source (as you can plainly see) if you want to run your own.

I run a free version of it at ntfy.sh. There's also an open source Android app (see Google Play or F-Droid), and an open source iOS app (see App Store).

Documentation

Getting started | Android/iOS | API | Install / Self-hosting | Building

Chat / forum

There are a few ways to get in touch with me and/or the rest of the community. Feel free to use any of these methods. Whatever works best for you:

Announcements / beta testers

For announcements of new releases and cutting-edge beta versions, please subscribe to the ntfy.sh/announcements topic. If you'd like to test the iOS app, join TestFlight. For Android betas, join Discord/Matrix (I'll eventually make a testing channel in Google Play).

Contributing

I welcome any and all contributions. Just create a PR or an issue. For larger features/ideas, please reach out on Discord/Matrix first to see if I'd accept them. To contribute code, check out the build instructions for the server and the Android app. Or, if you'd like to help translate 🇩🇪 🇺🇸 🇧🇬, you can start immediately in Hosted Weblate.

Translation status

Sponsors

I have just very recently started accepting donations via GitHub Sponsors. I would be humbled if you helped me carry the server and developer account costs. Even small donations are very much appreciated. A big fat Thank You to the folks already sponsoring ntfy:

I'd also like to thank JetBrains for providing their awesome IntelliJ IDEA to me for free, and DigitalOcean for supporting the project with $60/yr:

Code of Conduct

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

Please be sure to read the complete Code of Conduct.

License

Made with ❤️ by Philipp C. Heckel.
The project is dual licensed under the Apache License 2.0 and the GPLv2 License.

Third party libraries and resources: