Skip to content

Collaborative and distributed Markdown text editor, started as a bachelor thesis project at HEIG-VD.

License

Notifications You must be signed in to change notification settings

markdown-party/mono

Repository files navigation

License

.github/workflows/frontend.yml .github/workflows/backend.yml .github/workflows/tests.yml

.github/workflows/dokka.yml

Welcome to 🌈 markdown.party 🌈

markdown-party/mono is a distributed collaborative Markdown editor, based on a replicated log of events. Multiple abstractions are implemented, which replicate events on multiple sites. The project makes heavy use of Kotlin coroutines, to allow non-blocking concurrent communications with many replicas. It implements some tree-like and sequence CRDTs to replicate its state.

Markdown Party

Library and project walk-through

The library documentation can be found on GitHub Pages.

Many snippets from the walk-through can be found in the samples/walkthrough module. Make sure to check them out and run them on your machine, to get a feel of how the library works !

Project walk-through

  1. Introduction and basics
  2. The low-level event log API
  3. Integrations and websockets
  4. Example : adding a move operation for cursors

Local setup

This project uses Kotlin 1.6.21 and is built with Gradle. To run the unit tests locally, please proceed as follows :

# Clone the repository locally.
> git clone [email protected]:markdown-party/mono.git && cd mono

# Run Gradle tests.
> ./gradlew check

# Run the markdown editor frontend and backend. You'll have to edit the configuration in the
# file "markdown/markdown-frontend-compose/src/jsMain/resources/config.js" to point to your localhost
# rather than the production server.
> ./gradlew markdown:markdown-backend:run
> ./gradlew markdown:markdown-frontend-compose:jsBrowserRun

# Alternatively, if you have Docker Compose installed, you can run both the backend and the frontend
# locally as follows :
#
# > ./run-local.sh
#
# The frontend will be available on http://localhost:8080, and the backend on http://localhost:8081.

Cheat sheet

Here's how you should use the project :

Use-case Relevant module(s)
I want to use a Markdown editor. Go to markdown.party !
I want to replicate Markdown / Trees, but don't want a GUI. markdown, echo, (echo-core)
I want to create a custom CRDT and replicate it. echo-ktor-xxx, echo, (echo-core)
I only need a log of events which computes an aggregate. echo-core

About

I'm developing this project as part of my Bachelor thesis at HEIG-VD. If, like me, you like distributed systems, Kotlin, coroutines or reactive UI frameworks, I'd love to hear from you at [email protected] ✌️

About

Collaborative and distributed Markdown text editor, started as a bachelor thesis project at HEIG-VD.

Topics

Resources

License

Stars

Watchers

Forks

Languages