mirror of
https://github.com/binwiederhier/ntfy.git
synced 2024-12-26 19:52:30 +01:00
New logo and header
This commit is contained in:
parent
9af64bf3dd
commit
71af1af001
4 changed files with 55 additions and 27 deletions
|
@ -34,14 +34,14 @@
|
||||||
{{end}}
|
{{end}}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<div id="header"><div id="headerBox"><img src="static/img/ntfy.png" alt="ntfy"/></div></div>
|
||||||
<div id="main"{{if .Topic}} style="display: none"{{end}}>
|
<div id="main"{{if .Topic}} style="display: none"{{end}}>
|
||||||
<h1><img src="static/img/ntfy.png" alt="ntfy"/><br/>ntfy.sh | simple HTTP-based pub-sub</h1>
|
<h1>ntfy.sh | simple HTTP-based pub-sub</h1>
|
||||||
<p>
|
<p>
|
||||||
<b>Ntfy</b> (pronounce: <i>notify</i>) is a simple HTTP-based <a href="https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern">pub-sub</a> notification service.
|
<b>ntfy</b> (pronounce: <i>notify</i>) is a simple HTTP-based <a href="https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern">pub-sub</a> notification service.
|
||||||
It allows you to send notifications <a href="#subscribe-phone">to your phone</a> or desktop via scripts from any computer,
|
It allows you to send notifications to your phone or desktop via scripts from any computer,
|
||||||
entirely <b>without signup or cost</b>. It's also <a href="https://github.com/binwiederhier/ntfy">open source</a> if you want to run your own.
|
entirely <b>without signup, cost or setup</b>. It's also <a href="https://github.com/binwiederhier/ntfy">open source</a> if you want to run your own.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="screenshots">
|
<div id="screenshots">
|
||||||
<a href="static/img/screenshot-curl.png"><img src="static/img/screenshot-curl.png"/></a>
|
<a href="static/img/screenshot-curl.png"><img src="static/img/screenshot-curl.png"/></a>
|
||||||
<a href="static/img/screenshot-web-detail.png"><img src="static/img/screenshot-web-detail.png"/></a>
|
<a href="static/img/screenshot-web-detail.png"><img src="static/img/screenshot-web-detail.png"/></a>
|
||||||
|
@ -51,11 +51,9 @@
|
||||||
<a href="static/img/screenshot-phone-notification.jpg"><img src="static/img/screenshot-phone-notification.jpg"/></a>
|
<a href="static/img/screenshot-phone-notification.jpg"><img src="static/img/screenshot-phone-notification.jpg"/></a>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
There are many ways to use Ntfy. You can send yourself messages for all sorts of things: When a long process finishes or fails,
|
There are many ways to use it: Notify yourself when a build finishes, when an rsync is done or a backup fails,
|
||||||
or to notify yourself when somebody logs into your server(s). Or you may want to use it in your own app to distribute messages to subscribed clients.
|
or know when somebody logs into your server. There are <a href="#examples">many more examples</a>, endless possibilities 😀.
|
||||||
Endless possibilities 😀. Be sure to check out the <a href="#examples">examples below</a>.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2 id="publish" class="anchor">Publishing messages</h2>
|
<h2 id="publish" class="anchor">Publishing messages</h2>
|
||||||
|
@ -64,16 +62,16 @@
|
||||||
Because there is no sign-up, <b>the topic is essentially a password</b>, so pick something that's not easily guessable.
|
Because there is no sign-up, <b>the topic is essentially a password</b>, so pick something that's not easily guessable.
|
||||||
</p>
|
</p>
|
||||||
<p class="smallMarginBottom">
|
<p class="smallMarginBottom">
|
||||||
Here's an example showing how to publish a message using <tt>curl</tt> (via POST):
|
Here's an example showing how to publish a message using a POST request (via <tt>curl -d</tt>):
|
||||||
</p>
|
</p>
|
||||||
<code>
|
<code>
|
||||||
curl -d "Backup successful 😀" <span class="ntfyUrl">ntfy.sh</span>/mytopic
|
curl -d "Backup successful 😀" <span class="ntfyUrl">ntfy.sh</span>/mytopic
|
||||||
</code>
|
</code>
|
||||||
<p class="smallMarginBottom">
|
<p class="smallMarginBottom">
|
||||||
And another one using PUT:
|
And another one using PUT (via <tt>curl -T</tt>):
|
||||||
</p>
|
</p>
|
||||||
<code>
|
<code>
|
||||||
echo -en "\u26A0\uFE0F Unauthorized login" | curl -sT- <span class="ntfyUrl">ntfy.sh</span>/mytopic
|
echo -en "\u26A0\uFE0F Unauthorized login" | curl -T- <span class="ntfyUrl">ntfy.sh</span>/mytopic
|
||||||
</code>
|
</code>
|
||||||
<p class="smallMarginBottom">
|
<p class="smallMarginBottom">
|
||||||
Here's an example in JS with <tt>fetch()</tt> (see <a href="https://github.com/binwiederhier/ntfy/tree/main/examples">full example</a>):
|
Here's an example in JS with <tt>fetch()</tt> (see <a href="https://github.com/binwiederhier/ntfy/tree/main/examples">full example</a>):
|
||||||
|
@ -200,7 +198,7 @@
|
||||||
|
|
||||||
<h2 id="examples" class="anchor">Examples</h2>
|
<h2 id="examples" class="anchor">Examples</h2>
|
||||||
<p>
|
<p>
|
||||||
There are a million ways to use Ntfy, but here are some inspirations. I try to collect
|
There are a million ways to use ntfy, but here are some inspirations. I try to collect
|
||||||
<a href="https://github.com/binwiederhier/ntfy/tree/main/examples">examples on GitHub</a>, so be sure to check
|
<a href="https://github.com/binwiederhier/ntfy/tree/main/examples">examples on GitHub</a>, so be sure to check
|
||||||
those out, too.
|
those out, too.
|
||||||
</p>
|
</p>
|
||||||
|
@ -220,7 +218,7 @@
|
||||||
|
|
||||||
<h3 id="example-web" class="anchor">Example: Server-sent messages in your web app</h3>
|
<h3 id="example-web" class="anchor">Example: Server-sent messages in your web app</h3>
|
||||||
<p>
|
<p>
|
||||||
Just as you can <a href="#subscribe-web">subscribe to topics in this Web UI</a>, you can use Ntfy in your own
|
Just as you can <a href="#subscribe-web">subscribe to topics in this Web UI</a>, you can use ntfy in your own
|
||||||
web application. Check out the <a href="example.html">live example</a> or just look the source of this page.
|
web application. Check out the <a href="example.html">live example</a> or just look the source of this page.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -302,9 +300,24 @@
|
||||||
is to facilitate instant notifications on Android.
|
is to facilitate instant notifications on Android.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<b id="battery-usage" class="anchor">How much battery does the Android app use?</b><br/>
|
||||||
|
If you use the ntfy.sh server and you don't use the <i>instant delivery</i> feature, the Android app uses no
|
||||||
|
additional battery, since Firebase Cloud Messaging (FCM) is used. If you use your own server, or you use
|
||||||
|
<i>instant delivery</i>, the app has to maintain a constant connection to the server, which consumes about 4% of
|
||||||
|
battery in 17h of use (on my phone). I use it and it makes no difference to me.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<b id="instant-delivery" class="anchor">What is instant delivery?</b><br/>
|
||||||
|
Instant delivery is a feature in the Android app. If turned on, the app maintains a constant connection to the
|
||||||
|
server and listens for incoming notifications. This consumes <a href="#battery-usage">additional battery</a>,
|
||||||
|
but delivers notifications instantly.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<b id="why-no-ios" class="anchor">Why is there no iOS app (yet)?</b><br/>
|
<b id="why-no-ios" class="anchor">Why is there no iOS app (yet)?</b><br/>
|
||||||
I don't have an iPhone or a Mac, so I didn't make an iOS app yet. I'd be awesome if
|
I don't have an iPhone or a Mac, so I didn't make an iOS app yet. It'd be awesome if
|
||||||
<a href="https://github.com/binwiederhier/ntfy/issues/4">someone else could help out</a>.
|
<a href="https://github.com/binwiederhier/ntfy/issues/4">someone else could help out</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -325,9 +338,9 @@
|
||||||
<div id="detail"{{if not .Topic}} style="display: none"{{end}}>
|
<div id="detail"{{if not .Topic}} style="display: none"{{end}}>
|
||||||
<div id="detailMain">
|
<div id="detailMain">
|
||||||
<button id="detailCloseButton"><img src="static/img/close_black_24dp.svg"/></button>
|
<button id="detailCloseButton"><img src="static/img/close_black_24dp.svg"/></button>
|
||||||
<h1><img src="static/img/ntfy.png" alt="ntfy"/><br/><span id="detailTitle"></span></h1>
|
<h1><span id="detailTitle"></span></h1>
|
||||||
<p class="smallMarginBottom">
|
<p class="smallMarginBottom">
|
||||||
<b>Ntfy</b> is a simple HTTP-based pub-sub notification service. This is a Ntfy topic.
|
<b>ntfy</b> is a simple HTTP-based pub-sub notification service. This is a ntfy topic.
|
||||||
To send notifications to it, simply PUT or POST to the topic URL. Here's an example using <tt>curl</tt>:
|
To send notifications to it, simply PUT or POST to the topic URL. Here's an example using <tt>curl</tt>:
|
||||||
</p>
|
</p>
|
||||||
<code>
|
<code>
|
||||||
|
|
|
@ -4,6 +4,8 @@ html, body {
|
||||||
font-family: 'Lato', sans-serif;
|
font-family: 'Lato', sans-serif;
|
||||||
color: #333;
|
color: #333;
|
||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
html {
|
html {
|
||||||
|
@ -25,6 +27,8 @@ h1 {
|
||||||
margin-top: 25px;
|
margin-top: 25px;
|
||||||
margin-bottom: 18px;
|
margin-bottom: 18px;
|
||||||
font-size: 2.5em;
|
font-size: 2.5em;
|
||||||
|
word-wrap: break-word; /* For very long topics */
|
||||||
|
padding-right: 40px; /* For the X on the detail page */
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
|
@ -84,6 +88,7 @@ code {
|
||||||
#main {
|
#main {
|
||||||
max-width: 900px;
|
max-width: 900px;
|
||||||
margin: 0 auto 50px auto;
|
margin: 0 auto 50px auto;
|
||||||
|
padding: 0 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#error {
|
#error {
|
||||||
|
@ -190,6 +195,23 @@ code {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Header */
|
||||||
|
|
||||||
|
#header {
|
||||||
|
background: #3a9784;
|
||||||
|
height: 130px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header #headerBox {
|
||||||
|
max-width: 900px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header img {
|
||||||
|
margin-top: 23px;
|
||||||
|
}
|
||||||
|
|
||||||
/* Subscribe box */
|
/* Subscribe box */
|
||||||
|
|
||||||
button {
|
button {
|
||||||
|
@ -352,13 +374,6 @@ li {
|
||||||
/** Detail view */
|
/** Detail view */
|
||||||
#detail {
|
#detail {
|
||||||
display: none;
|
display: none;
|
||||||
position: absolute;
|
|
||||||
z-index: 1;
|
|
||||||
left: 8px;
|
|
||||||
right: 8px;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background: white;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#detail .detailDate {
|
#detail .detailDate {
|
||||||
|
@ -375,7 +390,7 @@ li {
|
||||||
max-width: 900px;
|
max-width: 900px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
position: relative; /* required for close button's "position: absolute" */
|
position: relative; /* required for close button's "position: absolute" */
|
||||||
padding-bottom: 50px; /* Chrome and Firefox behave differently regarding bottom margin */
|
padding: 0 10px 50px 10px; /* Chrome and Firefox behave differently regarding bottom margin */
|
||||||
}
|
}
|
||||||
|
|
||||||
#detail #detailCloseButton {
|
#detail #detailCloseButton {
|
||||||
|
@ -384,7 +399,7 @@ li {
|
||||||
border: none;
|
border: none;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 10px;
|
||||||
top: 10px;
|
top: 10px;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 3.5 KiB |
|
@ -181,7 +181,7 @@ const hideDetailView = () => {
|
||||||
currentTopic = "";
|
currentTopic = "";
|
||||||
history.replaceState('', originalTitle, '/');
|
history.replaceState('', originalTitle, '/');
|
||||||
detailView.style.display = 'none';
|
detailView.style.display = 'none';
|
||||||
main.style.display = '';
|
main.style.display = 'block';
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue