I built an open-source sync engine that brings "Local-First" capabilities to Go web applications.
The Problem: Most offline-first solutions (Firebase, PouchDB) force you into the JS ecosystem. If you are writing a Go backend, you often have to re-implement sync logic or settle for simple REST APIs that break when the user goes offline.
The Solution: GoSync runs the exact same Go code in the browser (via WebAssembly) and on the server. - Client: Go compiled to WASM, persisting to IndexedDB (via a small JS bridge). - Server: Go with SQLite or Postgres, persisting to disk. - Protocol: Merkle Trees to detect diffs, and WebSockets to sync them.
If the server dies or the user goes offline, the client keeps working. When connectivity returns, it heals the state automatically.
I'd love feedback on the Merkle Tree implementation and the WASM/JS bridge architecture.