Giter Site home page Giter Site logo

ramonmeffert / elm-gossip Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 0.0 1.71 MB

A user-friendly web tool for exploring dynamic gossip.

Home Page: https://r3n.nl/elm-gossip/

License: GNU General Public License v3.0

Elm 83.12% SCSS 14.78% HTML 1.48% JavaScript 0.62%
gossip elm bachelor-project dynamic-gossip gossip-protocol webapp

elm-gossip's Introduction

ElmGossip: Explore dynamic gossip in your browser

Website License

ElmGossip is a web tool for exploring and analysing dynamic gossip, built in Elm. The tool is available online, or you can follow the instructions below to run the tool locally. In general, we advise using the online version unless you plan to do anything with the source code.

About

This tool began its life as part of my bachelor's thesis. Since finishing my thesis, I have been working on implementing new features and polishing the tool.

Features

  • ๐Ÿ‘ Visualise gossip graphs
  • โ˜Ž๏ธ See which calls are allowed for any protocol
  • โœ… Validate and execute call sequences
  • โฐ Time-travel between multiple graph states after executing calls
  • ๐Ÿ›  Create your own custom gossip protocols
  • ๐ŸŒณ Generate execution trees
  • โš ๏ธ Helpful and human-oriented error messages
  • ๐Ÿชถ Lightweight1

In progress

  • Successfulness analysis
    That is, whether some protocol is weakly/strongly successful on a given graph
  • GraphViz and LaTeX export
    Making it easy to use graphs and protocol formulae in other places
  • Saving the state of the tool to LocalStorage
    So you don't lose your work when navigating away from the page
  • Saving and loading custom protocols
    Transferability!
  • Dark mode
    ๐ŸŒš

You can track the progress of these features on the issues page.

Future ideas

  • Mobile support (#75)
  • Turn the site into a Progressive Web App for offline access

Running locally

If you want to build this project yourself, you'll need yarn (or, alternatively, npm).

To install:

yarn install # or npm install

Building and running

If you just want to run the project, you can run a live-reload server in development mode:

yarn start # or npm start

If you want to build a release, you can run the following command:

yarn build # or npm build

This will generate a docs2 directory. You can upload this directory to a web server or run a local web server from this directory (e.g. python3 -m http.server) to see the project. Since Elm is compiled to Javascript, uploading the compiled files is all you need to do โ€“ you don't have to start a web server as everything runs client side.


1 The entire application, bundled for production, weighs in at around 200kb. That includes compiled js, css, images and all favicons โ€“ most of which you won't even load, since they are platform-specific. For example, when loading the application on Firefox, only 129.29KB (45.73KB gzipped) is downloaded.
2 The application is configured for deployment to GitHub Pages, which expects a docs directory.

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.