Git Product home page Git Product logo

timewriter's Introduction

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.

timewriter's People

Contributors

tomaszrewak avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.