All Projects → markdown-party → mono

markdown-party / mono

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

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to mono

backbeat
Zenko Backbeat is the core engine for asynchronous replication, optimized for queuing metadata updates and dispatching work to long-running tasks in the background.
Stars: ✭ 51 (+24.39%)
Mutual labels:  replication
pgcapture
A scalable Netflix DBLog implementation for PostgreSQL
Stars: ✭ 94 (+129.27%)
Mutual labels:  replication
deploy shard mongodb
This repository has a set of scripts and resources required for deploying MongoDB replicated sharded cluster.
Stars: ✭ 17 (-58.54%)
Mutual labels:  replication
data-transfer-hub
Seamless User Interface for replicating data into AWS.
Stars: ✭ 102 (+148.78%)
Mutual labels:  replication
docker-mysql-replication
master master & master slave replication in mysql
Stars: ✭ 33 (-19.51%)
Mutual labels:  replication
mysql-replication
mysql replication binlog php 同步工具
Stars: ✭ 60 (+46.34%)
Mutual labels:  replication
radiusd
Distributed Radius-server to do authentication+accounting.
Stars: ✭ 50 (+21.95%)
Mutual labels:  replication
slock
High-performance distributed sync service and atomic DB
Stars: ✭ 50 (+21.95%)
Mutual labels:  replication
asyncmy
A fast asyncio MySQL/MariaDB driver with replication protocol support
Stars: ✭ 126 (+207.32%)
Mutual labels:  replication
niqlow
design, solve and estimate discrete dynamic programs.
Stars: ✭ 16 (-60.98%)
Mutual labels:  replication
Recon
HA LDAP based key/value solution for projects configuration storing with multi master replication support
Stars: ✭ 12 (-70.73%)
Mutual labels:  replication
Active Directory Scripts
Making my local storage of useful AD Scripts available to everyone.
Stars: ✭ 46 (+12.2%)
Mutual labels:  replication
zap
Maintain and replicate ZFS snapshots
Stars: ✭ 48 (+17.07%)
Mutual labels:  replication
django-clone
Controlled Django model instance replication.
Stars: ✭ 89 (+117.07%)
Mutual labels:  replication
cross-cluster-replication
Synchronize your data across multiple clusters for lower latencies and higher availability
Stars: ✭ 22 (-46.34%)
Mutual labels:  replication
pglogrepl
PostgreSQL logical replication library for Go.
Stars: ✭ 150 (+265.85%)
Mutual labels:  replication
Operational-Transformation
A collection of Algorithms to Synchronise changes across multiple clients using Operational Transformation
Stars: ✭ 25 (-39.02%)
Mutual labels:  eventual-consistency
bftdb
Tendermint + Sqlite3 = BFT Database Replication
Stars: ✭ 35 (-14.63%)
Mutual labels:  replication
awesome-storage
A curated list of storage open source tools. Backups, redundancy, sharing, distribution, encryption, etc.
Stars: ✭ 324 (+690.24%)
Mutual labels:  replication
eventsourcing-go
Event Sourcing + CQRS using Golang Tutorial
Stars: ✭ 75 (+82.93%)
Mutual labels:  eventual-consistency

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] ✌️

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].