2022-03-13 21:08:38 +01:00
![ntfy ](web/public/static/img/ntfy.png )
2021-11-03 16:38:46 +01:00
2021-12-05 22:28:12 +01:00
# ntfy.sh | Send push notifications to your phone or desktop via PUT/POST
2021-11-26 23:09:41 +01:00
[![Release ](https://img.shields.io/github/release/binwiederhier/ntfy.svg?color=success&style=flat-square )](https://github.com/binwiederhier/ntfy/releases/latest)
2021-12-07 21:39:42 +01:00
[![Go Reference ](https://pkg.go.dev/badge/heckel.io/ntfy.svg )](https://pkg.go.dev/heckel.io/ntfy)
[![Tests ](https://github.com/binwiederhier/ntfy/workflows/test/badge.svg )](https://github.com/binwiederhier/ntfy/actions)
[![Go Report Card ](https://goreportcard.com/badge/github.com/binwiederhier/ntfy )](https://goreportcard.com/report/github.com/binwiederhier/ntfy)
[![codecov ](https://codecov.io/gh/binwiederhier/ntfy/branch/main/graph/badge.svg?token=A597KQ463G )](https://codecov.io/gh/binwiederhier/ntfy)
2022-01-03 17:49:39 +01:00
[![Discord ](https://img.shields.io/discord/874398661709295626?label=Discord )](https://discord.gg/cT7ECsZj9w)
[![Matrix ](https://img.shields.io/matrix/ntfy:matrix.org?label=Matrix )](https://matrix.to/#/#ntfy:matrix.org)
2022-06-06 15:50:26 +02:00
[![Matrix space ](https://img.shields.io/matrix/ntfy-space:matrix.org?label=Matrix+space )](https://matrix.to/#/#ntfy-space:matrix.org)
2022-10-29 03:03:52 +02:00
[![Reddit ](https://img.shields.io/reddit/subreddit-subscribers/ntfy?color=%23317f6f&label=-%20r%2Fntfy&style=social )](https://www.reddit.com/r/ntfy/)
2021-12-09 19:53:47 +01:00
[![Healthcheck ](https://healthchecks.io/badge/68b65976-b3b0-4102-aec9-980921/kcoEgrLY.svg )](https://ntfy.statuspage.io/)
2022-12-10 22:56:13 +01:00
[![Gitpod ](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod )](https://gitpod.io/#https://github.com/binwiederhier/ntfy)
2021-11-20 22:02:05 +01:00
**ntfy** (pronounce: *notify* ) is a simple HTTP-based [pub-sub ](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern ) notification service.
2021-11-03 16:36:09 +01:00
It allows you to **send notifications to your phone or desktop via scripts** from any computer, entirely **without signup or cost** .
2021-11-03 16:33:34 +01:00
It's also open source (as you can plainly see) if you want to run your own.
2022-06-06 17:41:51 +02:00
I run a free version of it at ** [ntfy.sh ](https://ntfy.sh )**. There's also an [open source Android app ](https://github.com/binwiederhier/ntfy-android ) (see [Google Play ](https://play.google.com/store/apps/details?id=io.heckel.ntfy ) or [F-Droid ](https://f-droid.org/en/packages/io.heckel.ntfy/ )), and an [open source iOS app ](https://github.com/binwiederhier/ntfy-ios ) (see [App Store ](https://apps.apple.com/us/app/ntfy/id1625396347 )).
2021-10-23 03:26:01 +02:00
2021-11-09 16:51:21 +01:00
< p >
2022-03-12 04:02:44 +01:00
< img src = "web/public/static/img/screenshot-curl.png" height = "180" >
< img src = "web/public/static/img/screenshot-web-detail.png" height = "180" >
< img src = "web/public/static/img/screenshot-phone-main.jpg" height = "180" >
< img src = "web/public/static/img/screenshot-phone-detail.jpg" height = "180" >
< img src = "web/public/static/img/screenshot-phone-notification.jpg" height = "180" >
2021-11-09 16:51:21 +01:00
< / p >
2021-12-05 22:28:12 +01:00
## **[Documentation](https://ntfy.sh/docs/)**
2021-10-23 03:26:01 +02:00
2021-12-05 22:28:12 +01:00
[Getting started ](https://ntfy.sh/docs/ ) |
[Android/iOS ](https://ntfy.sh/docs/subscribe/phone/ ) |
[API ](https://ntfy.sh/docs/publish/ ) |
[Install / Self-hosting ](https://ntfy.sh/docs/install/ ) |
[Building ](https://ntfy.sh/docs/develop/ )
2021-10-24 05:37:30 +02:00
2022-10-29 03:03:52 +02:00
## 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:
* [Discord server ](https://discord.gg/cT7ECsZj9w ) - direct chat with the community
* [Matrix room #ntfy ](https://matrix.to/#/#ntfy:matrix.org ) (+ [Matrix space ](https://matrix.to/#/#ntfy-space:matrix.org )) - same chat, bridged from Discord
* [Reddit r/ntfy ](https://www.reddit.com/r/ntfy/ ) - asynchronous forum (_new as of October 2022_)
* [GitHub issues ](https://github.com/binwiederhier/ntfy/issues ) - questions, features, bugs
* [Email ](https://heckel.io/about ) - reach me directly (_I usually prefer the other methods_)
2022-06-01 19:05:38 +02:00
## Announcements / beta testers
For announcements of new releases and cutting-edge beta versions, please subscribe to the [ntfy.sh/announcements ](https://ntfy.sh/announcements )
topic. If you'd like to test the iOS app, join [TestFlight ](https://testflight.apple.com/join/P1fFnAm9 ). For Android betas,
join Discord/Matrix (I'll eventually make a testing channel in Google Play).
2021-10-23 21:22:17 +02:00
## Contributing
2022-12-12 21:06:04 +01:00
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 ](https://ntfy.sh/docs/develop/ )
for the server and the Android app. Or, if you'd like to help translate 🇩🇪 🇺🇸 🇧🇬, you can start immediately in
2022-03-25 23:54:40 +01:00
[Hosted Weblate ](https://hosted.weblate.org/projects/ntfy/ ).
2021-10-23 21:22:17 +02:00
2022-03-28 17:07:05 +02:00
< a href = "https://hosted.weblate.org/engage/ntfy/" >
< img src = "https://hosted.weblate.org/widgets/ntfy/-/multi-blue.svg" alt = "Translation status" / >
< / a >
2022-11-25 15:10:40 +01:00
## Sponsors
2023-01-24 16:32:11 +01:00
I have just very recently started accepting donations via [GitHub Sponsors ](https://github.com/sponsors/binwiederhier ),
and [Liberapay ](https://liberapay.com/ntfy ). 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:
2022-09-30 18:06:31 +02:00
2022-11-10 15:49:47 +01:00
< a href = "https://github.com/neutralinsomniac" > < img src = "https://github.com/neutralinsomniac.png" width = "40px" / > < / a >
2022-09-30 18:06:31 +02:00
< a href = "https://github.com/aspyct" > < img src = "https://github.com/aspyct.png" width = "40px" / > < / a >
2022-11-10 15:49:47 +01:00
< a href = "https://github.com/nickexyz" > < img src = "https://github.com/nickexyz.png" width = "40px" / > < / a >
< a href = "https://github.com/qcasey" > < img src = "https://github.com/qcasey.png" width = "40px" / > < / a >
< a href = "https://github.com/mckay115" > < img src = "https://github.com/mckay115.png" width = "40px" / > < / a >
< a href = "https://github.com/Salamafet" > < img src = "https://github.com/Salamafet.png" width = "40px" / > < / a >
2022-09-30 18:06:31 +02:00
< a href = "https://github.com/codinghipster" > < img src = "https://github.com/codinghipster.png" width = "40px" / > < / a >
2022-11-10 15:49:47 +01:00
< a href = "https://github.com/HinFort" > < img src = "https://github.com/HinFort.png" width = "40px" / > < / a >
< a href = "https://github.com/Lexevolution" > < img src = "https://github.com/Lexevolution.png" width = "40px" / > < / a >
< a href = "https://github.com/johnnyip" > < img src = "https://github.com/johnnyip.png" width = "40px" / > < / a >
< a href = "https://github.com/JonDerThan" > < img src = "https://github.com/JonDerThan.png" width = "40px" / > < / a >
< a href = "https://github.com/12nick12" > < img src = "https://github.com/12nick12.png" width = "40px" / > < / a >
2022-11-08 20:10:59 +01:00
< a href = "https://github.com/eanplatter" > < img src = "https://github.com/eanplatter.png" width = "40px" / > < / a >
< a href = "https://github.com/fnoelscher" > < img src = "https://github.com/fnoelscher.png" width = "40px" / > < / a >
2022-11-10 15:49:47 +01:00
< a href = "https://github.com/bnorick" > < img src = "https://github.com/bnorick.png" width = "40px" / > < / a >
< a href = "https://github.com/snh" > < img src = "https://github.com/snh.png" width = "40px" / > < / a >
2022-11-09 15:18:42 +01:00
< a href = "https://github.com/hen-x" > < img src = "https://github.com/hen-x.png" width = "40px" / > < / a >
< a href = "https://github.com/JamieGoodson" > < img src = "https://github.com/JamieGoodson.png" width = "40px" / > < / a >
2022-11-10 15:49:47 +01:00
< a href = "https://github.com/cremesk" > < img src = "https://github.com/cremesk.png" width = "40px" / > < / a >
< a href = "https://github.com/dangowans" > < img src = "https://github.com/dangowans.png" width = "40px" / > < / a >
2022-11-10 15:44:42 +01:00
< a href = "https://github.com/mnault" > < img src = "https://github.com/mnault.png" width = "40px" / > < / a >
< a href = "https://github.com/nwithan8" > < img src = "https://github.com/nwithan8.png" width = "40px" / > < / a >
< a href = "https://github.com/peterleiser" > < img src = "https://github.com/peterleiser.png" width = "40px" / > < / a >
2022-11-12 12:56:40 +01:00
< a href = "https://github.com/portothree" > < img src = "https://github.com/portothree.png" width = "40px" / > < / a >
2022-11-15 15:09:31 +01:00
< a href = "https://github.com/finngreig" > < img src = "https://github.com/finngreig.png" width = "40px" / > < / a >
2022-11-16 20:26:54 +01:00
< a href = "https://github.com/skrollme" > < img src = "https://github.com/skrollme.png" width = "40px" / > < / a >
2022-11-17 12:40:59 +01:00
< a href = "https://github.com/gergepalfi" > < img src = "https://github.com/gergepalfi.png" width = "40px" / > < / a >
2022-11-18 16:35:08 +01:00
< a href = "https://github.com/tonyakwei" > < img src = "https://github.com/tonyakwei.png" width = "40px" / > < / a >
2022-11-18 21:38:39 +01:00
< a href = "https://github.com/crosbyh" > < img src = "https://github.com/crosbyh.png" width = "40px" / > < / a >
2022-12-03 01:58:11 +01:00
< a href = "https://github.com/mdlnr" > < img src = "https://github.com/mdlnr.png" width = "40px" / > < / a >
2022-12-10 15:01:40 +01:00
< a href = "https://github.com/p-samuel" > < img src = "https://github.com/p-samuel.png" width = "40px" / > < / a >
2022-12-12 16:54:53 +01:00
< a href = "https://github.com/zugaldia" > < img src = "https://github.com/zugaldia.png" width = "40px" / > < / a >
< a href = "https://github.com/NathanSweet" > < img src = "https://github.com/NathanSweet.png" width = "40px" / > < / a >
2022-12-13 21:21:06 +01:00
< a href = "https://github.com/msdeibel" > < img src = "https://github.com/msdeibel.png" width = "40px" / > < / a >
2022-12-14 11:38:33 +01:00
< a href = "https://github.com/ksurl" > < img src = "https://github.com/ksurl.png" width = "40px" / > < / a >
2022-12-19 16:02:19 +01:00
< a href = "https://github.com/CodingTimeDEV" > < img src = "https://github.com/CodingTimeDEV.png" width = "40px" / > < / a >
2022-12-21 15:39:13 +01:00
< a href = "https://github.com/Terrormixer3000" > < img src = "https://github.com/Terrormixer3000.png" width = "40px" / > < / a >
2022-12-23 14:39:44 +01:00
< a href = "https://github.com/voroskoi" > < img src = "https://github.com/voroskoi.png" width = "40px" / > < / a >
2022-12-24 18:11:40 +01:00
< a href = "https://github.com/Nickwasused" > < img src = "https://github.com/Nickwasused.png" width = "40px" / > < / a >
2022-12-31 15:32:59 +01:00
< a href = "https://github.com/bahur142" > < img src = "https://github.com/bahur142.png" width = "40px" / > < / a >
2023-01-03 04:24:00 +01:00
< a href = "https://github.com/vinhdizzo" > < img src = "https://github.com/vinhdizzo.png" width = "40px" / > < / a >
< a href = "https://github.com/Ge0rg3" > < img src = "https://github.com/Ge0rg3.png" width = "40px" / > < / a >
2023-01-03 17:28:51 +01:00
< a href = "https://github.com/biopsin" > < img src = "https://github.com/biopsin.png" width = "40px" / > < / a >
2023-01-04 15:38:52 +01:00
< a href = "https://github.com/thebino" > < img src = "https://github.com/thebino.png" width = "40px" / > < / a >
2023-01-12 16:25:13 +01:00
< a href = "https://github.com/sky4055" > < img src="https://github.com/sky4055.png" width="40px" />< / a >
2023-01-21 22:20:24 +01:00
< a href = "https://github.com/julianlam" > < img src = "https://github.com/julianlam.png" width = "40px" / > < / a >
2023-01-24 16:32:11 +01:00
< a href = "https://github.com/andreapx" > < img src = "https://github.com/andreapx.png" width = "40px" / > < / a >
2023-01-26 04:27:47 +01:00
< a href = "https://github.com/billycao" > < img src = "https://github.com/billycao.png" width = "40px" / > < / a >
2022-09-05 21:05:44 +02:00
2022-12-13 21:21:06 +01:00
I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA ](https://www.jetbrains.com/idea/ ) to me for free,
2023-01-19 18:05:26 +01:00
and [DigitalOcean ](https://m.do.co/c/442b929528db ) (*referral link*) for supporting the project:
2022-11-25 15:10:40 +01:00
2023-01-19 18:05:26 +01:00
< a href = "https://m.do.co/c/442b929528db" > < img src = "https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg" width = "201px" > < / a >
2022-11-25 15:10:40 +01:00
2022-12-12 21:06:04 +01:00
## 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 ](CODE_OF_CONDUCT.md )._
2021-10-23 21:22:17 +02:00
## License
2021-11-20 02:21:16 +01:00
Made with ❤️ by [Philipp C. Heckel ](https://heckel.io ).
The project is dual licensed under the [Apache License 2.0 ](LICENSE ) and the [GPLv2 License ](LICENSE.GPLv2 ).
2021-10-24 20:51:49 +02:00
Third party libraries and resources:
2022-08-14 14:29:24 +02:00
* [github.com/urfave/cli ](https://github.com/urfave/cli ) (MIT) is used to drive the CLI
2022-03-06 16:42:05 +01:00
* [Mixkit sounds ](https://mixkit.co/free-sound-effects/notification/ ) (Mixkit Free License) are used as notification sounds
* [Sounds from notificationsounds.com ](https://notificationsounds.com ) (Creative Commons Attribution) are used as notification sounds
* [Roboto Font ](https://fonts.google.com/specimen/Roboto ) (Apache 2.0) is used as a font in everything web
* [React ](https://reactjs.org/ ) (MIT) is used for the web app
* [Material UI components ](https://mui.com/ ) (MIT) are used in the web app
* [MUI dashboard template ](https://github.com/mui/material-ui/tree/master/docs/data/material/getting-started/templates/dashboard ) (MIT) was used as a basis for the web app
* [Dexie.js ](https://github.com/dexie/Dexie.js ) (Apache 2.0) is used for web app persistence in IndexedDB
2021-11-03 16:33:34 +01:00
* [GoReleaser ](https://goreleaser.com/ ) (MIT) is used to create releases
2021-12-28 17:36:12 +01:00
* [go-smtp ](https://github.com/emersion/go-smtp ) (MIT) is used to receive e-mails
* [stretchr/testify ](https://github.com/stretchr/testify ) (MIT) is used for unit and integration tests
2021-11-03 16:33:34 +01:00
* [github.com/mattn/go-sqlite3 ](https://github.com/mattn/go-sqlite3 ) (MIT) is used to provide the persistent message cache
* [Firebase Admin SDK ](https://github.com/firebase/firebase-admin-go ) (Apache 2.0) is used to send FCM messages
2021-11-29 15:34:43 +01:00
* [github/gemoji ](https://github.com/github/gemoji ) (MIT) is used for emoji support (specifically the [emoji.json ](https://raw.githubusercontent.com/github/gemoji/master/db/emoji.json ) file)
2022-03-06 16:42:05 +01:00
* [Lightbox with vanilla JS ](https://yossiabramov.com/blog/vanilla-js-lightbox ) as a lightbox on the landing page
2022-03-11 03:55:56 +01:00
* [HTTP middleware for gzip compression ](https://gist.github.com/CJEnright/bc2d8b8dc0c1389a9feeddb110f822d7 ) (MIT) is used for serving static files
2022-03-11 17:46:19 +01:00
* [Regex for auto-linking ](https://github.com/bryanwoods/autolink-js ) (MIT) is used to highlight links (the library is not used)
2021-11-21 02:18:40 +01:00
* [Statically linking go-sqlite3 ](https://www.arp242.net/static-go.html )
2022-03-11 16:43:18 +01:00
* [Linked tabs in mkdocs ](https://facelessuser.github.io/pymdown-extensions/extensions/tabbed/#linked-tabs )