FRE-600: Implement Phase 1 WebSocket + Yjs CRDT foundation

- Create TypeScript and Vite configuration for SolidJS
- Implement Yjs document structure for screenplay collaboration
- Build WebSocket connection manager with exponential backoff reconnection
- Create CRDT document manager with undo/redo support
- Set up WebSocket sync server with JWT authentication
- Add SolidJS reactive bindings for Yjs shared types
- Build collaborative editor component
- Write unit tests for CRDT operations
- Document implementation in analysis/fre600_websocket_foundation.md

Architecture: Yjs chosen over Automerge for better ecosystem and
Tauri compatibility. WebSocket for sync, WebRTC for video.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-04-22 23:08:27 -04:00
parent 6cf6858b1c
commit ef1b15c9ea
22 changed files with 2851 additions and 0 deletions

37
vite.config.ts Normal file
View File

@@ -0,0 +1,37 @@
import { defineConfig } from 'vite';
import solid from 'vite-plugin-solid';
import { resolve } from 'path';
export default defineConfig({
plugins: [solid()],
resolve: {
alias: {
'@lib': resolve(__dirname, './src/lib'),
'@components': resolve(__dirname, './src/components'),
'@types': resolve(__dirname, './src/types'),
},
},
build: {
target: 'esnext',
outDir: 'dist',
sourcemap: true,
rollupOptions: {
input: {
main: resolve(__dirname, 'index.html'),
},
},
},
server: {
port: 3000,
proxy: {
'/sync': {
target: 'ws://localhost:8080',
ws: true,
},
},
},
test: {
globals: true,
environment: 'node',
},
});