Server for Musannif, A sophisticated collaborative Markdown editor designed for teams, enabling seamless real-time collaboration and creativity.
- Clients communicate diffs back and forth through a central server that resolves conflicts should any arise
- If a central server is reaching computational limits, it informs a master server to spin up a new server to handle the load, and transmits data to it, as well as transferring clients to it
- CHECK: Move database to a separate server that communicates with the master and/or worker servers
- The easiest way to install Musannif is to simply grab an automatically created release
git clone https://github.com/musannif-md/musannif.git
cd musannif
cp config_example.yaml config.yaml # and modify the new file accordingly
make
./musannif --signup -username <username> -password <password> # Optional
./musannif -serve
- Init a basic logger - create wrapper over zerolog
- Mete out system architecture - how to approach horizontal scaling?
- CI/CD: Publish new 'release' whenever a tagged commit is pushed
- File/'Note' management on disk
- Core websocket architecture
- Ping-pong
- Extract username from JWT as opposed to relying on JSON body
- Diff algorithm
- Single user note modification
- Concurrency: real-time collaboration w/ multiple users
- Bug: note name shouldn't contain extension whilst being stored/passed
- Disconnect other clients if the host disconnects
- Note sharing via URL
- Fix Dockerfile, add persistent storage + networking support (through Docker Compose?) & configure CI/CD for pushing image to DockerHub
- User directory/Team management
- Shift to Protobufs
- 'Recently Deleted' note section
- ???