{"id":15839292,"url":"https://github.com/weedshaker/event-driven-web-components-yjs","last_synced_at":"2025-08-29T18:30:34.177Z","repository":{"id":96422897,"uuid":"576204555","full_name":"Weedshaker/event-driven-web-components-yjs","owner":"Weedshaker","description":"web components yjs ","archived":false,"fork":false,"pushed_at":"2025-03-26T20:39:39.000Z","size":45384,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-01T17:14:16.898Z","etag":null,"topics":["chat","crdt","decentralized-applications","event-driven","webcomponent","webrtc","websocket","yjs"],"latest_commit_sha":null,"homepage":"http://thedecentralweb.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Weedshaker.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-09T08:58:13.000Z","updated_at":"2025-03-26T20:39:43.000Z","dependencies_parsed_at":"2024-01-11T22:08:01.363Z","dependency_job_id":"d6e85187-1cf2-4d8e-8f79-2044e70ba964","html_url":"https://github.com/Weedshaker/event-driven-web-components-yjs","commit_stats":{"total_commits":245,"total_committers":4,"mean_commits":61.25,"dds":0.03265306122448974,"last_synced_commit":"4f1d372191d82ead7539cdb14662297ff78683f1"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Weedshaker/event-driven-web-components-yjs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Weedshaker%2Fevent-driven-web-components-yjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Weedshaker%2Fevent-driven-web-components-yjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Weedshaker%2Fevent-driven-web-components-yjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Weedshaker%2Fevent-driven-web-components-yjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Weedshaker","download_url":"https://codeload.github.com/Weedshaker/event-driven-web-components-yjs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Weedshaker%2Fevent-driven-web-components-yjs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272736815,"owners_count":24984497,"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","status":"online","status_checked_at":"2025-08-29T02:00:10.610Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["chat","crdt","decentralized-applications","event-driven","webcomponent","webrtc","websocket","yjs"],"created_at":"2024-10-05T16:03:54.548Z","updated_at":"2025-08-29T18:30:31.854Z","avatar_url":"https://github.com/Weedshaker.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Event Driven Web Components yjs\n\n\u003e yjs web components wrapper\nhttps://weedshaker.github.io/event-driven-web-components-yjs/\n\n\n### Installation\n\n- git submodule init\n- git submodule update\n- npm install\n\n(no stack repo)\n\n### Rough Roadmap\n\nDezentral Chat, Dezentral Chat with Video, Dezentral Game (voxel.js, or other stuff) with Chat + Video\n\n## Implementation\n\nFrontend Event Driven Architecture works basically like the DOM itself...\n\n## TODO:\n\nFrontend\n- [x] activate text link as html a tag (https://github.com/meyt/linkable.js)\n- [x] save to leveldb (servers/y-websocket/bin/server.js) with timeout to be deleted https://github.com/yjs/y-leveldb/tree/master persistence.clearDocument\n- [x] User controller with CRDT User object including connected ProviderNames + urls on user props\n- [x] implement more solid fingerprint library (https://github.com/fingerprintjs/fingerprintjs/tree/master)\n- [x] default offline but on set providers offer default servers fetched from file from github pages\n- [x] fingerprint is still not consistent, consider to remove fingerprint from the uid\n- [x] user local state field through user controller event at controllers/Users.js\n- [x] replace tests/exampleOne/AwarenessChange.js with users, etc. at tests/exampleFour.html or App (live-share)\n- [ ] draw.io representation\n- [ ] document.body should not be an absolute event listener target (https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) (shadow.js add event target choose function || document.body)\n- [ ] developer tutorials and tools\n\nWebsocket/RTC\n- [x] websocket without leveldb nor runtime cache (removed all persistance and deployed at https://github.com/Weedshaker/y-websocket)\n- [x] **websocket push (https://web.dev/push-notifications-subscribing-a-user/), notifications (https://astral.ninja/notifications) and service worker controller with cache and evtl. own yjs doc instance**\n- [x] allow the user to choose to keep chat alive at websocket (see TODO: allow certain rooms to have persistence at https://github.com/\n- [ ] Provider connection ERROR handling (take note of it in the provider class)\n- [ ] Use Notification FCM alternatives even though it is already encrypted but FCM is blocked by Brave (https://github.com/7-iris/iris_server | https://emteria.com/blog/fcm-alternatives)\n- [ ] hosting websocket/webrtc from local machine through https://tailscale.com/blog/tailscale-funnel-beta/?utm_source=changelog-news\n- [ ] hosting websocket/webrtc from local through https://www.runonflux.io/flux-nodes.html\n- [ ] hosting websocket/webrtc from local through onion service\n- [ ] on websocket shutdown save the map (subscriptions) to leveldb and load it backup when starting... servers/y-websocket/bin/utils.js\n- [ ] value for value (v4v): https://github.com/monero-ecosystem/monero-javascript ...\n- [ ] verification service (badge analog twitter verification badge) through SMS or post card with qr code\n- [ ] own heroku webrtc testing\n\nVision\n- Principles: 100% Open Source, Offline eg. Local First (decentralized content [CRDT] === decentralized ownership), as decentralized in all aspects as feasible\n- creativity (app types: bullet board, wiki, draw, chat, one way chat (web site builder), givesendgo (crowd founding), doodle, sudoku, miro like, 2d platformer, add voice \u0026 video, simple games, heartbeat game, breathing app lobby to breath and meditate together afterwards staying in touch in own chat room)\n\n\n\n## Credit\n\nCreated by [Edmgb](https://github.com/Edmgb) + [Weedshaker](https://github.com/Weedshaker)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweedshaker%2Fevent-driven-web-components-yjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweedshaker%2Fevent-driven-web-components-yjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweedshaker%2Fevent-driven-web-components-yjs/lists"}