Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ramonmeffert/elm-gossip
A user-friendly web tool for exploring dynamic gossip.
https://github.com/ramonmeffert/elm-gossip
bachelor-project dynamic-gossip elm gossip gossip-protocol webapp
Last synced: about 1 month ago
JSON representation
A user-friendly web tool for exploring dynamic gossip.
- Host: GitHub
- URL: https://github.com/ramonmeffert/elm-gossip
- Owner: RamonMeffert
- License: gpl-3.0
- Created: 2020-09-03T13:27:04.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-05-18T11:02:33.000Z (over 1 year ago)
- Last Synced: 2023-05-18T13:55:22.714Z (over 1 year ago)
- Topics: bachelor-project, dynamic-gossip, elm, gossip, gossip-protocol, webapp
- Language: Elm
- Homepage: https://r3n.nl/elm-gossip/
- Size: 1.67 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ElmGossip: Explore dynamic gossip in your browser
[![Website](https://img.shields.io/website?url=https%3A%2F%2Framonmeffert.github.io%2Felm-gossip%2F)](https://ramonmeffert.github.io/elm-gossip/)
[![License](https://img.shields.io/github/license/ramonmeffert/elm-gossip)](https://github.com/RamonMeffert/elm-gossip/blob/master/LICENSE)ElmGossip is a web tool for exploring and analysing dynamic gossip, built in [Elm](https://elm-lang.org).
The tool is available [online](https://ramonmeffert.github.io/elm-gossip/), or you can follow the [instructions](#running-locally) 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](https://fse.studenttheses.ub.rug.nl/23961/).
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](https://github.com/RamonMeffert/elm-gossip/issues) page.
### Future ideas
- Mobile support ([#75](https://github.com/RamonMeffert/elm-gossip/issues/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`][1] (or, alternatively, [`npm`][1]).
To install:
```sh
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:
```sh
yarn start # or npm start
```If you want to build a release, you can run the following command:
```sh
yarn build # or npm build
```This will generate a `docs`2 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.[1]: https://yarnpkg.com/
[2]: https://www.npmjs.com/