Hi HN,
Like many of you here, this is not my first time applying to YC. Each time, my co-founder and I would copy the YC application to google docs to collaborate on it, then we copy it back to submit. This got us thinking - why can't we just collaborate on the YC application in the YC application?
At one point I went down the CRDT rabbit hole and realized collaborative forms would be a great use of CRDTs, so I decided to build this out to an MVP.
If you're curious about CRDTs (Conflict-Free Replicated Data Types) and how they differ from OT (Operational transformation, which is what powers Google Docs) the tl;dr is that OT requires a central server to merge edits from different clients, whereas CRDTs are a data structure with commutative and idempotent operations, that can merge concurrent edits deterministically to always end up at the same final state.
This gives you a bunch of cool properties out of the box. Real time support as clients merge concurrent edits from other clients (usually via some central server). Offline support through deterministic merging of offline edits from multiple clients as they reconnect. P2P support because you can send the underlying operations independent of a server and clients can build up the state themselves.
If you want to dig deeper there are a bunch of CRDT articles posted to HN. Two that I enjoyed reading are [1] by josephg and [2] by jakelazaroff.
CRDTs are also showing up in more software. The Zed editor posted last month uses CRDTs [3] and they have a blog post explaining how it works [4]. Rumor has it that Apple Notes uses CRDTs under the hood.
The CRDT library I used is Yjs [5].
If you want to try out TogetherForm for your YC S24 application, this will generate a unique link with the YC application you can share with your co-founder [6].
I'd love to hear any feedback and suggestions you have. I'm also trying to figure out where to focus my time next:
a. Build out the no-code form builder.
b. Build out a React library (or similar) that allows you to make your forms collaborative by, say, using a special <TogetherForm> component.
One last thing: I know it's a lot to trust a random new product, so here's a Google Doc template for the S24 YC application that you can copy and keep for yourself [7].
[1] https://news.ycombinator.com/item?id=31049883
[2] https://news.ycombinator.com/item?id=37764581
[3] https://news.ycombinator.com/item?id=39119835
[4] https://zed.dev/blog/crdts
[5] https://github.com/yjs/yjs
[6] https://togetherform.com/yc
[7] https://docs.google.com/document/d/1zpU14-9zcYGvbxmtLKEbDcsl...