Saltar al contenido
Retrato de Lucian Andrei Negoita Lucian
EN
Cosas que he hecho
TFG · Mención a Matrícula de Honor

Varias personas, un mismo fichero, cero conflictos

Mi Trabajo Fin de Grado: varias personas editan el mismo código a la vez dentro de un curso de Moodle, sin conflictos y con cada cambio publicado como evento.

Cómo funciona

CRDTs y eventos, de extremo a extremo
  1. Plugin de Moodle El editor vive dentro del curso, con los usuarios y permisos de Moodle.
  2. Hocuspocus + Yjs Sincroniza la edición con CRDTs sobre WebSocket.
  3. Kafka Cada cambio se publica como evento para su procesamiento.
  4. Selenium Pruebas E2E con hasta 10 usuarios editando a la vez.

Por qué lo construí

Quería un problema de sistemas distribuidos de verdad: edición concurrente donde la latencia y el orden de los eventos importan, integrada en una plataforma que los alumnos ya usan.

Qué me enseñó

  • Los CRDTs resuelven la convergencia, pero no la presencia ni los permisos: eso hay que diseñarlo aparte.
  • Probar con 10 navegadores reales a la vez enseña más que cualquier test unitario.

Construido con

  • Kafka
  • Yjs
  • Hocuspocus
  • WebSocket
  • Moodle (PHP)
  • Docker Compose
  • MariaDB
  • Selenium
Vista del proyecto: Editor colaborativo en tiempo real
Siguiente proyecto Pipeline de datos sin servidores Por gusto

¿Te pica la curiosidad por el código?