{"id":22407984,"url":"https://github.com/ramonmeffert/elm-gossip","last_synced_at":"2025-07-31T19:31:55.979Z","repository":{"id":44727652,"uuid":"292577918","full_name":"RamonMeffert/elm-gossip","owner":"RamonMeffert","description":"A user-friendly web tool for exploring dynamic gossip.","archived":false,"fork":false,"pushed_at":"2023-05-18T11:02:33.000Z","size":1748,"stargazers_count":2,"open_issues_count":17,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-05-18T13:55:22.714Z","etag":null,"topics":["bachelor-project","dynamic-gossip","elm","gossip","gossip-protocol","webapp"],"latest_commit_sha":null,"homepage":"https://r3n.nl/elm-gossip/","language":"Elm","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RamonMeffert.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-03T13:27:04.000Z","updated_at":"2023-05-18T13:55:22.716Z","dependencies_parsed_at":"2023-02-09T16:00:35.073Z","dependency_job_id":null,"html_url":"https://github.com/RamonMeffert/elm-gossip","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamonMeffert%2Felm-gossip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamonMeffert%2Felm-gossip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamonMeffert%2Felm-gossip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamonMeffert%2Felm-gossip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RamonMeffert","download_url":"https://codeload.github.com/RamonMeffert/elm-gossip/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228283720,"owners_count":17896267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bachelor-project","dynamic-gossip","elm","gossip","gossip-protocol","webapp"],"created_at":"2024-12-05T11:16:05.025Z","updated_at":"2024-12-05T11:16:05.945Z","avatar_url":"https://github.com/RamonMeffert.png","language":"Elm","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ElmGossip: Explore dynamic gossip in your browser\n\n[![Website](https://img.shields.io/website?url=https%3A%2F%2Framonmeffert.github.io%2Felm-gossip%2F)](https://ramonmeffert.github.io/elm-gossip/)\n[![License](https://img.shields.io/github/license/ramonmeffert/elm-gossip)](https://github.com/RamonMeffert/elm-gossip/blob/master/LICENSE)\n\nElmGossip is a web tool for exploring and analysing dynamic gossip, built in [Elm](https://elm-lang.org).\nThe tool is available [online](https://ramonmeffert.github.io/elm-gossip/), or you can follow the [instructions](#running-locally) below to run the tool locally.\nIn general, we advise using the online version unless you plan to do anything with the source code.\n\n## About\n\nThis tool began its life as part of my [bachelor's thesis](https://fse.studenttheses.ub.rug.nl/23961/).\nSince finishing my thesis, I have been working on implementing new features and polishing the tool.\n\n## Features\n\n- 👁 Visualise gossip graphs\n- ☎️ See which calls are allowed for any protocol\n- ✅ Validate and execute call sequences\n- ⏰ Time-travel between multiple graph states after executing calls\n- 🛠 Create your own custom gossip protocols\n- 🌳 Generate execution trees\n- ⚠️ Helpful and human-oriented error messages\n- 🪶 Lightweight\u003csup\u003e1\u003c/sup\u003e\n\n### In progress\n\n- Successfulness analysis  \n  _That is, whether some protocol is weakly/strongly successful on a given graph_\n- GraphViz and LaTeX export  \n  _Making it easy to use graphs and protocol formulae in other places_\n- Saving the state of the tool to LocalStorage  \n  _So you don't lose your work when navigating away from the page_\n- Saving and loading custom protocols  \n  _Transferability!_\n- Dark mode  \n  _🌚_\n\nYou can track the progress of these features on the [issues](https://github.com/RamonMeffert/elm-gossip/issues) page.\n\n### Future ideas\n\n- Mobile support ([#75](https://github.com/RamonMeffert/elm-gossip/issues/75))\n- Turn the site into a Progressive Web App for offline access\n\n## Running locally\n\nIf you want to build this project yourself, you'll need [`yarn`][1] (or, alternatively, [`npm`][1]).\n\nTo install:\n\n```sh\nyarn install # or npm install\n```\n\n## Building and running\n\nIf you just want to run the project, you can run a live-reload server in development mode:\n\n```sh\nyarn start # or npm start\n```\n\nIf you want to build a release, you can run the following command:\n\n```sh\nyarn build # or npm build\n```\n\nThis will generate a `docs`\u003csup\u003e2\u003c/sup\u003e 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.\n\n---\n\n\u003csup\u003e\u003csup\u003e1\u003c/sup\u003e 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.\u003c/sup\u003e  \n\u003csup\u003e\u003csup\u003e2\u003c/sup\u003e The application is configured for deployment to GitHub Pages, which expects a `docs` directory.\u003c/sup\u003e\n\n\u003c!--Urls--\u003e\n\n[1]: https://yarnpkg.com/\n[2]: https://www.npmjs.com/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framonmeffert%2Felm-gossip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Framonmeffert%2Felm-gossip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framonmeffert%2Felm-gossip/lists"}