lykin/README.md

85 lines
3.4 KiB
Markdown
Raw Permalink Normal View History

2022-05-09 11:51:09 +00:00
# lykin
_Symbiosis of SSB, key-value store and web server._
## Introduction
lykin is a tutorial application funded by a Secure Scuttlebutt (SSB) community grant. It is intended to showcase one way in which an SSB application can be written using the [golgi](http://golgi.mycelial.technology) client library. The application is not intended for widespread or longterm use and will not be maintained as such; it is purely for demonstration purposes. Anyone is free to fork the repository and use it as the basis for their own application.
2022-08-26 09:31:50 +00:00
If you'd like to learn how lykin works, or how to build your own simple Scuttlebutt client application, please read the [lykin tutorial series](https://git.coopcloud.tech/glyph/lykin_tutorial). You might also like to watch the [lykin demonstration video](https://www.youtube.com/watch?v=mXMAyBOd4is).
2022-08-25 10:54:19 +00:00
2022-08-25 11:24:38 +00:00
![Screenshot of a web UI with a green navigation topbar, a blue list of peers, an orange list of posts and a yellow post content view.](screenshots/lykin_gui.png)
2022-08-25 11:21:50 +00:00
## Quickstart
Prerequisites: a running instance of go-sbot (see the [installation guide](https://github.com/ssbc/go-ssb#installation)).
Download, build and run lykin.
```
git clone https://git.coopcloud.tech/glyph/lykin.git
cd lykin
cargo build --release
RUST_LOG=lykin=info ./target/release/lykin
```
Open `localhost:8000` in your browser.
**Note**: by default, lykin attempts to connect to the go-sbot instance on port 8021. Set the `GO_SBOT_PORT` environment variable if you wish to use another port.
2022-05-09 11:51:09 +00:00
## Features
lykin presents an email inbox-like UI and functions as a Scuttlebutt reader application. It allows the user to subscribe to peers and read the root posts of those peers. Individual posts can be marked as read or unread.
A summary of the features:
- Subscribe to a peer (follow)
- Unsubscribe from a peer (unfollow)
- List subscribed peers
- List root posts for each peer
- Mark a post as read
- Mark a post as unread
- Fetch new posts
## Design
lykin has been built with the following components:
- [tera](https://crates.io/crates/tera) : templating engine
- [rocket](https://crates.io/crates/rocket/0.5.0-rc.1) : web server
- [golgi](https://crates.io/crates/golgi) : Scuttlebutt client library
- [sled](https://crates.io/crates/sled) : transactional embedded database (key-value store)
- [sbot](https://github.com/cryptoscope/ssb) : Scuttlebutt server (in our case, go-ssb)
## Documentation
This project is documented in the form of code comments and Rust doc comments. In order to generate and read the doc comments in a web browser, run the following command in the lykin repo:
`cargo doc --open --no-deps`
2022-08-11 12:59:27 +00:00
## Logging
lykin emits logs at three levels: `debug`, `info` and `warn`. The log level can be set using the `RUST_LOG` environment variable.
For example, emit only `info` logs:
`RUST_LOG=lykin=info ./target/release/lykin`
It is also possible to emit logs solely from a single module of lykin.
For example, emit only `warn` logs from the `db` module of lykin:
`RUST_LOG=lykin::db=warn cargo run`
2022-05-09 11:51:09 +00:00
## Thanks
I am grateful to the Butts who voted to fund this work, all contributors to the SSBC and Erick Lavoie in particular - both for partially funding this work and for developing and overseeing the community grant process.
## Contact
I can be reached via email: [glyph@mycelial.technology](mailto:glyph@mycelial.technology) or Scuttlebutt: `@HEqy940T6uB+T+d9Jaa58aNfRzLx9eRWqkZljBmnkmk=.ed25519`.
## License
2022-08-11 10:44:14 +00:00
MIT.