Skip to content
Portrait of Lucian Andrei Negoita Lucian
ES
Things I made
Thesis · Nominated for highest honours

Many people, one file, zero conflicts

My final degree project: several people edit the same code at once inside a Moodle course, with no conflicts and every change published as an event.

How it works

CRDTs and events, end to end
  1. Moodle plugin The editor lives inside the course, with Moodle's users and permissions.
  2. Hocuspocus + Yjs Syncs edits with CRDTs over WebSocket.
  3. Kafka Every change is published as an event for processing.
  4. Selenium E2E tests with up to 10 users editing at once.

Why I built it

I wanted a real distributed systems problem: concurrent editing where latency and event order matter, built into a platform students already use.

What it taught me

  • CRDTs solve convergence, but not presence or permissions: those need their own design.
  • Testing with 10 real browsers at once teaches more than any unit test.

Built with

  • Kafka
  • Yjs
  • Hocuspocus
  • WebSocket
  • Moodle (PHP)
  • Docker Compose
  • MariaDB
  • Selenium
Project view: Real-time collaborative editor
Next project Serverless data pipeline For fun

Curious about the code?