Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/schollz/snaptext
A simple webapp to send and receive self-destructing messages in real-time. :envelope: :zap:
https://github.com/schollz/snaptext
api instant-messaging messenger-platform website
Last synced: 5 days ago
JSON representation
A simple webapp to send and receive self-destructing messages in real-time. :envelope: :zap:
- Host: GitHub
- URL: https://github.com/schollz/snaptext
- Owner: schollz
- License: mit
- Created: 2018-02-18T19:03:34.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-06-15T12:56:25.000Z (over 4 years ago)
- Last Synced: 2024-10-08T04:26:47.034Z (about 1 month ago)
- Topics: api, instant-messaging, messenger-platform, website
- Language: Go
- Homepage: https://snaptext.schollz.com/
- Size: 5.3 MB
- Stars: 54
- Watchers: 5
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Like snapchat, but for text.
*snaptext* is a web app (and API) that lets you easily send and receive self-destructing messages in real-time. For example, you can go to [`snaptext.schollz.com/?to=schollz`](https://snaptext.schollz.com/?to=schollz) and write me a message. The message will be stored in a queue for me (`schollz`) and it will be destroyed when a browser is opened at [`snaptext.schollz.com/schollz`](https://snaptext.schollz.com/schollz) which pops the first message.
Messaging occurs in real-time using websockets, so to guarantee that you receive the message its best to have the browser open or use a obfuscated ID. Messages are queued for each ID, so you can send multiple messages and they will be read in order (FIFO).
# Why?
I recently made [a "turnkey" solution for the Raspberry Pi](https://github.com/schollz/raspberry-pi-turnkey) to easily assign the Pi WiFi credentials without using SSH or writing to the boot (useful for shipping to customers). The turnkey image Pi starts up a temporary WiFI access point and the user enters their home WiFi credentials. The Pi then restarts and connects to the new WiFi. At this point, it needs a way to communicate to the user that it is connected and provide its LAN IP. Email is not an option here because I cannot ship a Pi using my own SMTP credentials. Thus, I made *snaptext* so that the Pi sends the user the message through the temporary webpage, like `snaptext.schollz.com/abc234basd3b`, which tells the user that it is online and gives its IP address.
There may be other uses for *snaptext* - it is basically a simple, transient way of sending short messages once a URL is shared between the parties.
# Usage
*snaptext* only supports doing two things: writing or reading messages.
## Writing messages
You can write messages online. Goto [`snaptext.schollz.com`](https://snaptext.schollz.com) to write messages. The message can be text or HTML, though a limited number of HTML tags are allowed (to prevent XSS attacks).
You can also write messages from other programs. The API is incredibly simple. There is only one endpoint, to post a message: **POST /**. Use the following payload to set the recipient (`to`), the sender name (`from`), and the message (`message`).
```json
{
"to":"snaptext",
"from":"schollz",
"message":"Just a test"
}
```The recipient controls where the message can be seen (this particular message will be seen at `snaptext.schollz.com/snapchat`). The `from` just tells who is sending the message. An example CURL:
```bash
curl -d '{"to":"snaptext","from":"schollz","message":"Just a test"}' -X POST https://snaptext.schollz.com
```## Reading messages
Goto [`snaptext.schollz.com/snapchat`](https://snaptext.schollz.com/ID) to read messages that have been written to `snapchat`. Once a message is read, it is destroyed. There is no check on who reads a message - it is first come first serve. However, anyone with a browser currently connected can read an incoming message.
# Run your own server
The easiest way is using Go (requires Go 1.9+):
```
$ go install -v github.com/schollz/snaptext
$ snaptext
```# License
MIT