NineOne logo

NineOne

ProjectPersonal Project

MarkyDuck

A self-hosted collaborative Markdown review workspace I am building for small teams, with auth, sharing, realtime editing, preview, version snapshots, comments, reviews, and export.

#Next.js#TypeScript#Tailwind CSS#Better Auth#SQLite#Hocuspocus#Yjs#Markdown#Mermaid#Realtime Collaboration

MarkyDuck is a self-hosted collaborative Markdown review workspace I am building for small teams that need a focused place to write, review, and share technical documents.

The project is shaped around a simple idea: Markdown should stay lightweight, but the review workflow around it should feel more structured than passing files around manually. MarkyDuck brings document editing, sharing, realtime collaboration, preview, snapshots, comments, reviews, and export into one workspace.

Current product shape

MarkyDuck currently ships a working document flow with authentication, document management, invite acceptance, realtime editing, Markdown preview, version history, and export.

The app includes:

  • email and password authentication backed by SQLite
  • document dashboard and document detail flows
  • document settings, sharing, invites, and collaborator handling
  • raw Markdown editing in Edit mode
  • rendered Markdown in Preview mode
  • Mermaid support inside the preview experience
  • realtime shared text editing through Hocuspocus and Yjs
  • SQLite persistence for documents, collaborators, invites, comments, reviews, versions, activity logs, and Yjs document state
  • Markdown export endpoint for taking finished documents out of the workspace

Why I am building it

MarkyDuck came from a problem I kept running into while working with teams: writing decision documents, proposals, specs, and technical notes is already hard enough, but reviewing them together can become even messier.

Sometimes the document changes several times before everyone has seen the latest version. A reviewer may leave feedback on an older draft. The team may wait for approval without knowing whether the reviewer is looking at revision two, revision five, or the newest update. When the discussion happens across chat, files, and separate preview links, the document starts losing context.

I wanted a workspace where writers, teammates, and reviewers can see the same Markdown document in realtime, review changes with less friction, and keep the document flow closer to the actual collaboration.

MarkyDuck is my attempt to make that process calmer. It keeps the editing model close to Markdown while adding the things a team expects from a review workspace: accounts, access control, invite links, collaborative editing, document state, review history, and a cleaner handoff once the content is ready.

Technical direction

The app is built with a Next.js App Router foundation using TypeScript and Tailwind CSS. Better Auth handles email and password authentication, while SQLite keeps the project easy to run locally and suitable for a self-hosted setup.

Realtime collaboration runs through Hocuspocus and Yjs. The collaboration server syncs Markdown text between connected users and persists the Yjs document state so the shared editing session can continue across app restarts.

The current architecture separates the web app from the collaboration server, which makes the project easier to reason about as it grows. The product can keep a familiar document workflow while the realtime layer stays focused on synchronization.

Status

MarkyDuck is still an ongoing personal project.

The current version already has a usable document flow, but I am still refining the review experience, document activity model, collaboration edge cases, and the product shape before treating it as a finished release.

Collaboration

Need a similar product direction?

If this project shape matches what you want to build, the contact page is set up for direct outreach and the site config is ready for additional channels whenever you want to publish them.