GithubHelp home page GithubHelp logo

iota-streams-channels-interface's Introduction

IOTA Streams Channels Interface

A browser based graphical user interface to the IOTA Streams Channels application. The intention is to have a graphical way to explore the possibilities of the application and visualize the message structure.

⚠️ WORK IN PROGRESS ⚠️
This repository is actively developed and does not contain a usable program yet.

Prerequisites

To build and run the server and interface, we need:

Getting started

To clone and serve on default port 3030:

git clone https://github.com/jlvandenhout/iota-streams-channels-interface
cd iota-streams-channels-interface
cargo run

To use an other port:

cargo run -- -p <PORT>

To just serve the user interface on default port 3000 without server functionality:

cd interface
npm start

User flow

  1. Connect to a Node. Choose between:
    • Testnet.
    • Mainnet.
    • Custom Node URL.
  2. Initialize a User instance:
    1. Provide a Seed.
    2. Choose between:
      • Become an Author to a Single Branch Channel.
      • Become an Author to a Multi Branch Channel.
      • Become a Recipient to a Channel.
  3. Initialize a Channel:
    • As an Author: Announce a Channel.
    • As a Recipient: Provide an Announcement Link.
  4. Send and receive messages.

Implementation

The graphical user interface is built in Javascript using React and communicates to the server in JSON. User input is sent in the body of POST requests. Server output will be received using a web socket connection. The server is implemented in Rust using the warp crate and provides a mapping between the user interface and the Streams Channels interface.

TODO list

  • Implement a way to set up the prerequisites like initializing a Transport and a User instance.
  • Map basic functionality to graphical components:
    • Announcing a Channel as an Author.
    • Sending a Tagged Message as an Author.
    • Participate in a Channel as a Recipient.
    • Receive Messages as a Recipient.
  • Map remaining functionality to graphical components:
    • Sending Keyload Messages as an Author.
    • Subscribe and Unsubscribe as a Recipient.
    • Become a Publisher as Recipient.
    • Sending Tagged Messages as a Publisher.
  • Allow to persist and recall User states (client side or server side?).
  • Visualize the message structure:
    • Listen for message updates.
    • Display messages in a graph.
    • Figure out how to find the next linked message ID from any current message.
    • Connect linked messages in the graph.
  • Improve error handling:
    • Provide a way to communicate errors to the interface (can be regular HTTP status codes in response to the POST request).
    • Validate user input (validator is a good candidate for this).
    • Monitor Channels messaging errors.

Contribute

Any feedback on code quality, suggestions or help is welcome. Feel free to open an issue, send a PR or contact me on the IOTA Discord server.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.