aboutsummaryrefslogtreecommitdiffhomepage
path: root/docs/dev/roadmap.md
blob: d17ba41e98bf18719ce9a70b8be4b0c49e2e5ca5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Kioku Development Roadmap

## Issue #3: Introduce CRDT Library for Conflict Resolution

Replace the current Last-Write-Wins (LWW) conflict resolution with Automerge CRDT for better offline sync.

**Decisions:**
- Library: Automerge
- Text conflicts: LWW Register (simple, predictable)
- Migration: Clean migration (no backward compatibility)

### Phase 1: Add Automerge and Core Types

- [x] Install dependencies: `@automerge/automerge`, `@automerge/automerge-repo`, `@automerge/automerge-repo-storage-indexeddb`
- [x] Create `src/client/sync/crdt/types.ts` - Automerge document type definitions
- [x] Create `src/client/sync/crdt/document-manager.ts` - Automerge document lifecycle management
- [x] Create `src/client/sync/crdt/index.ts` - Module exports

### Phase 2: Create CRDT Repository Layer

- [x] Create `src/client/sync/crdt/repositories.ts` - CRDT-aware repository wrappers
- [x] Create `src/client/sync/crdt/sync-state.ts` - Sync state serialization

### Phase 3: Modify Sync Protocol

- [x] Modify `src/client/sync/push.ts` - Add crdtChanges to push payload
- [ ] Modify `src/client/sync/pull.ts` - Handle crdtChanges in pull response
- [ ] Modify `src/client/sync/conflict.ts` - Replace LWW with Automerge merge
- [ ] Modify `src/client/sync/manager.ts` - Integrate CRDT sync flow

### Phase 4: Server-Side CRDT Support

- [ ] Install server dependency: `@automerge/automerge`
- [ ] Create `src/server/db/schema-crdt.ts` - CRDT document storage schema
- [ ] Create database migration for crdt_documents table
- [ ] Modify `src/server/routes/sync.ts` - Handle CRDT changes in API
- [ ] Modify `src/server/repositories/sync.ts` - Store/merge CRDT documents

### Phase 5: Migration

- [ ] Create `src/client/sync/crdt/migration.ts` - One-time migration script
- [ ] Create server migration script to convert existing data

### Phase 6: Testing and Cleanup

- [ ] Add unit tests for CRDT operations
- [ ] Add integration tests for concurrent edit scenarios
- [ ] Remove legacy LWW code after validation