SyncSpace is an offline-first collaborative workspace built for real-time notes, team presence, local persistence, and conflict-free sync.
- Real-time collaboration with WebSockets and Yjs CRDT updates
- Offline-first editing with IndexedDB persistence
- Automatic merge after reconnect without last-write-wins data loss
- Workspace, notes, tasks, presence, and version history UI
- Backend-ready persistence model for PostgreSQL
| Layer | Technology |
|---|---|
| Frontend | React, Vite, TypeScript |
| Styling | CSS modules-style global CSS |
| Collaboration | Yjs, y-websocket, y-indexeddb |
| Backend | Node.js, Express, ws |
| Database Design | PostgreSQL schema in database/schema.sql |
npm.cmd install
npm.cmd run devThen open:
- Client:
http://localhost:5173 - Server health:
http://localhost:4000/health - WebSocket sync endpoint:
ws://localhost:4000/sync
- Open the app in two browser tabs.
- Edit the same note in both tabs.
- Turn off network for one tab using DevTools.
- Continue editing offline.
- Restore network and watch the text merge through CRDT sync.
syncspace/
├── client/ React offline-first collaborative workspace
├── server/ Express + WebSocket Yjs sync server
├── shared/ CRDT helper notes and merge utilities
├── database/ PostgreSQL schema
└── docs/ Architecture and resume notes
Developed an offline-first collaborative workspace using CRDTs, WebSockets, IndexedDB, and PostgreSQL-ready persistence, supporting conflict-free real-time synchronization and local editing during network outages.