Skip to content
An online collaborative text editor based on event sourcing architecture.
Branch: master
Clone or download
Latest commit 3de9f2a Feb 22, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
time-writer-client Cleaning up. Jan 14, 2019
time-writer-event-sourcing Fixing single caret event. Jan 14, 2019
time-writer-react Incrementing a communication delay predicion as there was a problem t… Jan 19, 2019
time-writer-server
time-writer-test Cleaning up. Jan 14, 2019
.gitattributes Add .gitignore and .gitattributes. Nov 5, 2018
.gitignore Ignoring app.js. Jan 15, 2019
LICENSE Update LICENSE Feb 22, 2019
README.md Update README.md Jan 19, 2019
package-lock.json More unit test plus some restructurization. Dec 9, 2018

README.md

Text sourcing

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.

About the project

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.

Technology

This project is created using javascript, socket.io (for the clinet-server communication) and react (a frontend framework).

Disclaimer

It's just a demo that I've created as a pet project. But if you've found any bugs, please, let me know.

You can’t perform that action at this time.