An online collaborative text editor based on event sourcing.
Working example can be found here: https://text-sourcing.tomasz-rewak.com/
A longer project description can be found here: https://blog.tomasz-rewak.com/text-sourcing/
Everything here is written from a scratch: including the text editor as well as the event sourcing logic on the server and the client sides.
This text editor enables multiple people to edit the same text file at the same time. All users should be even able to edit the same line without any input drops.
This app doesn't send the entire content of the file between users after each change is made, but rather just basic events. Base on those events and the initial state of the document each client should be able to recreate the current state of the document. Event management is not only limited to simple state transformations. Event history is also used for undo/redo operations. The order of events is synchronized based on the server's internal clock so that the impact of communication delay can be neutralized.
This project is created using javascript, socket.io (for the clinet-server communication) and react (a frontend framework).
It's just a demo that I've created as a pet project. But if you've found any bugs, please, let me know.