Pranjal Sailwal

recovering from log

  1. seq 0000recovering from log

SyncState

“Can people keep writing together when the network drops?”

An offline-first collaborative editor that doesn't need the network to keep working

Yjs

CRDT library behind the merging (integrated, not written from scratch)

0

automated tests in the repository

Reel 1 of 7: Now showing

Scroll to watch. Click someone in the audience.

  • In the audience

Now showing

SyncState

An offline-first collaborative editor that doesn't need the network to keep working

The case in short.

The problem
Collaborative editors assume a stable connection. When that breaks, they stop working, and I wanted one that doesn't.
Who it is for
People who write together on bad connections, and anyone curious how conflict-free replicated data types behave in a real UI.
My part
Sole author.

How it was done

  1. I built it on Yjs CRDTs, so edits made offline resolve without a server.
  2. Documents are stored locally in IndexedDB, with direct WebRTC peer-to-peer sync on top.
  3. I integrated TipTap rich-text editing, synchronised cursors, Supabase storage and Clerk authentication.
  4. I added a 3D version-history view for exploring how a document evolved.

What came out

A deployed front end built to keep working offline and merge when you reconnect. There are no automated tests in the repository, and the page says so.

What it rests on.

Every figure about this project, and how each one is known. The folder structure, languages and history on the right are read straight from GitHub, so they say what the code is, not what I wish it were.

YjsCRDT library behind the merging (integrated, not written from scratch)
0automated tests in the repository
github.com / sailwalpranjal / syncstate

17

commits

57

files

25

folders

159 KB

on disk

  • TypeScript 94%
  • CSS 3.1%
  • PLpgSQL 2.6%
  • JavaScript 0.5%
  • syncstate/
  • src/42 files
    • components/
    • lib/
    • app/
  • .env.example
  • .gitignore
  • LICENSE
  • middleware.ts
  • next.config.js
  • package-lock.json
  • package.json
  • postcss.config.mjs
  • README.md
  • supabase-disable-rls-versions.sql
Feb 2026 → Feb 2026.tsx ×24.ts ×19.sql ×4.json ×3.example ×1

Spectral Monte Carlo Path Tracer

A physically-based C++ renderer, cross-validated at 1.81M samples/sec

If you want to talk about how this was built, write to me.

  1. seq 0001you arrived
  2. seq 0002write back