{"id":16017832,"url":"https://github.com/zackradisic/learning-crdts-rust","last_synced_at":"2026-06-05T22:31:17.255Z","repository":{"id":65415305,"uuid":"574277663","full_name":"zackradisic/learning-crdts-rust","owner":"zackradisic","description":"Learning and implementing CRDTs in Rust","archived":false,"fork":false,"pushed_at":"2023-01-22T13:05:41.000Z","size":872,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-12T15:14:44.153Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zackradisic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-12-05T00:07:15.000Z","updated_at":"2023-04-13T01:57:00.000Z","dependencies_parsed_at":"2023-02-12T15:45:54.144Z","dependency_job_id":null,"html_url":"https://github.com/zackradisic/learning-crdts-rust","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackradisic%2Flearning-crdts-rust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackradisic%2Flearning-crdts-rust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackradisic%2Flearning-crdts-rust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackradisic%2Flearning-crdts-rust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zackradisic","download_url":"https://codeload.github.com/zackradisic/learning-crdts-rust/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241448469,"owners_count":19964466,"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":[],"created_at":"2024-10-08T16:23:29.405Z","updated_at":"2025-03-02T02:27:21.562Z","avatar_url":"https://github.com/zackradisic.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Learning CRDTs\n\nMonorepo of CRDT implementations I write as I learn more about them\n\n## Directory structure\n\n### [sypytkowski-convergent/](/sypytkowski-convergent)\n\nFollowing along and porting the code from convergent CRDT half of Bartosz Sypytkowski's [blog post series](https://bartoszsypytkowski.com/optimizing-state-based-crdts-1/) in F# to Rust\n\n### convergent-experiment\\*/\n\nAn experiment in building a simple app with convergent/state-based CRDTs taught in the first\nhalf of Bartosz Sypytkowski's blog post series\n\nIt is a web app where users can create and move around squares on a canvas that gets synced between multiple users through a websocket server.\n\nThe CRDTs from the [sypytkowski-convergent](/sypytkowski-convergent) crate are compiled to Wasm and bindings for TS are generated with [fp-bindgen](https://github.com/fiberplane/fp-bindgen)\n\n```bash\n# Generate the bindings for wasm\ncargo run --package convergent-experiment-protocol-gen --bin convergent-experiment-protocol-gen\n\n# Build wasm\ncargo build --package convergent-experiment --target wasm32-unknown-unknown --release\n\n# Copy wasm to frontend public folder\ncp target/wasm32-unknown-unknown/release/convergent_experiment.wasm convergent-experiment/frontend/public/ligma.wasm\n\n# Run the WS server\ncargo run --package convergent-experiment-ws\n```\n\n### [sypytkowski-commutative/](/sypytkowski-commutative)\n\nThis is the code for the operation-based half of Sypytkowski's article series.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzackradisic%2Flearning-crdts-rust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzackradisic%2Flearning-crdts-rust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzackradisic%2Flearning-crdts-rust/lists"}