# 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. ## 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. ## 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` ## 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` ## 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 MIT.