Hacker News new | past | comments | ask | show | jobs | submit

Learn Yjs Interactively

https://learn.yjs.dev/
Hey HN! I'm the developer at Jamsocket who made this. In case you're not familiar with Yjs, it's a CRDT library for building collaborative and local-first apps.

The thing is, if you're not used to working with distributed state there's definitely a learning curve. Even simple things like incrementing a counter — the "hello world" of JavaScript framework demos — get tricky when dealing with multiple clients. Worse, a lot of tutorials are just like "install this library and text editor integration and boom you have an app", which doesn't give you a good mental model for what's actually happening.

So we made Learn Yjs! It's an interactive Yjs tutorial. I wanted it to be really intuitive for people just getting their feet wet with local-first development, so there are lots of explorable demos and coding exercises. The idea is to use interactive examples to build an understanding from the ground up.

Hope you like it :)

loading story #42734940
I am just looking at this but quick question. Is there an example for building a local-first app? Also, I working with plain vanilla HTML & JS and Alpine. Can this be used in my apps?
Y-sweet (which this is built with) allows you to make a Yjs app local-first by passing “offlineSupport” to the provider when constructing.

There’s a demo of this here: https://demos.y-sweet.dev/color-grid

The source for that demo is here: https://github.com/jamsocket/y-sweet/blob/5fa6941cf5568f4a3f...

That demo uses react, but there is a vanilla js version of the same demo here: https://github.com/jamsocket/y-sweet/tree/main/examples/vani...

(The vanilla js version is not local first, but it would just be a matter of passing the same offlineSupport flag to make it so.)

I just noticed that if you install the example service after setting up an account, it installs a version of @y-sweet/react which doesn't offer the offlineSupport prop.

The version specified is ^0.5.1. After switching to 0.7.1 as the repo you linked uses, all is well. Probably not a big deal for most newcomers, but it might be worth updating dependencies in the example service.

loading story #42741801
loading story #42734608
loading story #42734366
loading story #42734849
loading story #42732669
loading story #42743128
loading story #42734827
loading story #42737576
loading story #42732890
loading story #42734949
loading story #42735656
loading story #42732336
loading story #42734009
The banner image game is silly but fun
loading story #42739198
loading story #42733600
loading story #42732623