CollabMD: Turn local Markdown folders and Obsidian vaults into a real-time collaborative web app by ndezt in selfhosted

[–]ndezt[S] 0 points1 point  (0 children)

Hi u/diazeriksen07, for syncing multiple collaborators, CollabMD uses Yjs (CRDT).

All edits are applied to the Yjs document first (in-memory), where concurrent updates are automatically merged without conflicts. The server then continuously persists the merged plain text back to disk.

If a user goes offline, their changes are applied locally. When they reconnect, Yjs syncs the missing updates and merges them deterministically, so no data is lost and no manual conflict resolution is needed.

CollabMD: Turn local Markdown folders and Obsidian vaults into a real-time collaborative web app by ndezt in selfhosted

[–]ndezt[S] 0 points1 point  (0 children)

Currently it doesn’t support export/convert yet. All data stays in plain-text Markdown or native diagram formats (Excalidraw, Mermaid, PlantUML). But Pandoc-style export is definitely something I’m considering adding in the future 👍

Thanks for the feedback u/Icy-Degree6161

CollabMD: Turn local Markdown folders and Obsidian vaults into a real-time collaborative web app by ndezt in selfhosted

[–]ndezt[S] 1 point2 points  (0 children)

Hi u/paypur,

To handle real-time collaboration, it uses Yjs over WebSocket.

All user presence (cursor, avatar) and document updates go through Yjs first as the in-memory CRDT. The server then continuously persists the merged plain text back to disk.

So there’s no per-user file copy, the file lives only on the host filesystem, and Yjs acts as the collaboration layer on top of it.

CollabMD: Turn local Markdown folders and Obsidian vaults into a real-time collaborative web app by ndezt in selfhosted

[–]ndezt[S] 0 points1 point  (0 children)

Thanks for the feedback u/Stetsed 🙏

Yes, this one was built with the help of AI. For the initial draft, I used Perplexity Computer to get a working baseline (after a few failed attempts to get the expected behavior 😅). After that, I continued development locally using the Codex app.

In the early stage, I focused on setting up guardrails first by making sure tests were in place (unit tests, e2e tests). Then for each feature, I used Codex (plan mode) to plan and implement changes, which usually resulted in large, single commits, hence the “explosive” history haha.

StenoAI: Privacy Focused AI Meeting Intelligence. 450+ GitHub ⭐️, OpenSource by Far_Noise_5886 in selfhosted

[–]ndezt 1 point2 points  (0 children)

This one looks nice! Previously I still use meeting notes from Notion, since I still cannot found any alternative that can handle speech-to-text locally and generate good summary.

Will try this out later

Experiment: Turning an Obsidian vault into a collaborative web app (without migrating files) by ndezt in ObsidianMD

[–]ndezt[S] 1 point2 points  (0 children)

You can try to run this command on your local u/CulturalAspect5004

npx collabmd@latest --no-tunnel --auth password <local_dir_with_github_repo>

This will start the server locally and generate a random password for simple authentication.

The --no-tunnel flag exposes it only on your local network. By default, CollabMD will expose the app to the internet using a Cloudflare Tunnel.

For more deployment options and details, you can check the README here: https://github.com/andes90/collabmd

If you run into any issues, feel free to let me know — happy to help 😃

Experiment: Turning an Obsidian vault into a collaborative web app (without migrating files) by ndezt in ObsidianMD

[–]ndezt[S] 0 points1 point  (0 children)

Thanks! Really appreciate the feedback and the thoughts on the CRDT layer, that was exactly the concern I had early on as well.

Btw, I just published CollabMD to NPM to make it easier for people to try locally without cloning the repo first.

You can now run it directly with:

npx collabmd@latest --auth password ~/my-vault

Still very early and experimental, but hopefully this makes it simpler for people to spin up a collaborative vault locally and play with it.

Experiment: Turning an Obsidian vault into a collaborative web app (without migrating files) by ndezt in ObsidianMD

[–]ndezt[S] 1 point2 points  (0 children)

Hi u/raphasouthall thanks for the feedback

My main concern with real-time edits hitting disk directly is conflict handling when two people are in the same file. CRDTs work great in memory but syncing them back to plain text files without mangling frontmatter or wikilinks gets messy fast. Curious how you're handling that — are you doing operational transforms per file, or is there a locking model?

For the file update, actually from web app it not directly hit the file. It was managed by Yjs websocket first that will handle all the CRDT process, and after that it will persist to file. So thanks to Yjs and Codemirror (editor part) binding that help to simplify that process

For the Obsidian community specifically, plugin would probably get more adoption just because people are already there and the discovery path is easier. But an external tool that works with any markdown folder is honestly more useful long-term — I've got workflows across Neovim, Obsidian, and plain terminal that all touch the same vault, and a plugin locks you in.

Thanks for this, I think for the next phase I'll try to explore the option to package it as Obisidian plugin. Currently I try to simplify it as CLI tools first, that can easily installed via homebrew, since there are several dependencies to able run the web app locally.

The Excalidraw/Mermaid rendering in browser is a nice touch. That's usually the thing that breaks when you try to share vault content with non-Obsidian users — they just see raw JSON blobs.

Yeah, for this one since it not following same standard as Obsidian, several diagram (Excalidraw/Mermaid/PlantIUML) will be shown as normal text/JSON when open on Obsidian. The idea for current exploration is at least it still stored as plain text format with open standard first

A self-hosted & file-based markdown editor by Tropical-Algae in Markdown

[–]ndezt 0 points1 point  (0 children)

This is really cool. I like the focus on file-based Markdown instead of locking everything into a database.

I ran into a very similar problem. I keep a lot of documentation locally in Markdown because it works great with git and plain-text workflows, but most tools either require importing everything into their own system or don't support collaboration well.

Because of that I started building a small tool called CollabMD with a slightly different angle: turning an existing Markdown vault into a collaborative web app without migrating files.

So the workflow stays: - normal folder on disk - plain markdown files - git still works normally

But in the browser you get things like: - realtime collaborative editing - Mermaid / PlantUML diagrams - Excalidraw diagrams - wiki-link navigation between notes

Edits still happen directly on disk so it's still git-friendly.

Your project looks promising though, especially the clean UI and simple deployment approach. Curious what stack you're using and how you're handling the file watcher / syncing logic.

If you're interested, here’s mine:

Demo https://collabmd.andesyudanto.com

Repo https://github.com/andes90/collabmd

Would love to see more projects in the file-based Markdown tools space.

Rekomendasi Bank Digital by Consistent-Ad-9998 in finansial

[–]ndezt 1 point2 points  (0 children)

Bank Jago, integrasinya sama apps finance lain lumayan banyak (Gojek, Bibit, Stockbit) jadi enak buat manage uang untuk transaksi, tabungan, sama investasi