Symbiosis of SSB, key-value store and web server.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
glyph 6e5c017dd7 Merge pull request 'Remove uri_encode and use Tera filter instead' (#6) from remove_uri_dependency into main 2 weeks ago
screenshots add ui screenshot to readme 1 month ago
src remove uriencode and use tera filter instead 2 weeks ago
static small indentation tweak 3 weeks ago
templates remove uriencode and use tera filter instead 2 weeks ago
.gitignore update ignore list to hide video thumbnail 3 weeks ago
Cargo.lock remove uriencode and use tera filter instead 2 weeks ago
Cargo.toml remove uriencode and use tera filter instead 2 weeks ago
README.md add link to demo video 4 weeks ago

README.md

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 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.

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. You might also like to watch the lykin demonstration video.

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.

Quickstart

Prerequisites: a running instance of go-sbot (see the installation guide).

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 : templating engine
  • rocket : web server
  • golgi : Scuttlebutt client library
  • sled : transactional embedded database (key-value store)
  • sbot : 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 or Scuttlebutt: @HEqy940T6uB+T+d9Jaa58aNfRzLx9eRWqkZljBmnkmk=.ed25519.

License

MIT.