Diffdown is a real-time collaborative Markdown editor/previewer built on the AT Protocol diffdown.com
at main 49 lines 4.8 kB view raw
1{{template "base" .}} 2{{define "content"}} 3<div class="about-page"> 4 <section class="about-header"> 5 <h1>About Diffdown</h1> 6 </section> 7 <section class="about-content"> 8 <div class="about-col"> 9 <h2>What is This?</h2> 10 <p>Diffdown is a real-time collaborative <a href="https://www.markdownguide.org/basic-syntax/">Markdown</a> editor/previewer built on <a href="https://atproto.brussels/about-the-atmosphere">AT Protocol</a> (the tech that powers <a href="https://bsky.app">Bluesky</a> and <a href="https://blueskydirectory.com">many other cool apps</a>). 11 <p>Diffdown is decentralized; it stores documents as <a href="https://atproto.wiki/en/wiki/reference/data/records">records</a> on the document creator's <a href="https://atproto.wiki/en/wiki/reference/core-architecture/pds">Personal Data Server (PDS)</a>, not on the Diffdown server or a cloud provider. Your data is yours, literally.</p> 12 <h3>Features</h3> 13 <ul> 14 <li>Decentralized storage on the document creator's AT Protocol PDS</li> 15 <li>Auto-save</li> 16 <li>Real-time collaborative editing (click <strong>Share</strong> in a document and send the link to your collaborators)</li> 17 <li>View Markdown source with syntax highlighting</li> 18 <li>Live document preview</li> 19 <li>Comments (<em>very</em> hacky)</li> 20 </ul> 21 22 <h3>Technology</h3> 23 <p>I wrote this app to learn more about AT Protocol and see if I (not a software engineer) could build a useable product with <a href="https://www.ibm.com/think/topics/agentic-engineering">agentic engineering</a>. I used the following:</p> 24 <ul> 25 <li><strong>Backend:</strong> Go, SQLite (only for session management; Diffdown sotres <strong>no</strong> user data)</li> 26 <li><strong>Frontend:</strong> Plain 'ole HTML, CSS, and JavaScript; eventually I will move it to <a href="https://htmx.org">HTMX</a> and <a href="https://tailwindcss.com/">Tailwind CSS</a></li> 27 <li><strong>Editor:</strong> <a href="https://prosemirror.net/">ProseMirror</a> with <a href="https://github.com/ProseMirror/prosemirror-collab">prosemirror-collab</a> for real-time collaboration; <a href="https://milkdown.dev/">Milkdown</a> for Markdown parsing and rendering</li> 28 <li><strong>Authentication:</strong> <a href="https://atproto.com/guides/auth">ATProto OAuth</a> (any PDS)</li> 29 <li><strong>Deployment and hosting:</strong> <a href="https://fly.io">Fly.io</a></li> 30 <li><strong>LLM assistance:</strong> <a href="https://opencode.ai">OpenCode</a> with <a href="https://www.anthropic.com/news/claude-sonnet-4-6">Claude Sonnet 4.6</a> and <a href="https://www.minimax.io/">Minimax M2.7</a> models via <a href="https://openrouter.ai/">OpenRouter</a></li> 31 </ul> 32 33 </div> 34 <div class="about-col"> 35 <h2>Status</h2> 36 <p>As I said, I am not an engineer. My goal was to create something simple that worked, and I achieved that. But 95% of Diffdown was written by <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a>. I am not qualified to assess the security or robustness of the code and don't claim that it is production quality. I would <em>like</em> it to be, so <a href="https://tangled.org/diffdown.com/diffdown-app/">contributions from real engineers are welcome</a>!</p> 37 <p>Functionally, the app is alpha quality, at best. Expect bugs, flakiness, breaking changes, and limited features.</p> 38 <p>The good news is that any documents you create will be stored on your AT Proto PDS, so even if Diffdown goes away, you will still have your documents and comments.</p> 39 <p><strong class="warning">Important:</strong> Because AT Proto does not support private records (<a href="https://atproto.wiki/en/working-groups/private-data">yet</a>), any documents you create will be visible to the world (not on diffdown.com, but with a PDS record viewer, <a href="https://atproto.at/viewer?uri=did:plc:za4vlvbizdstoym7lpymc5q5/com.diffdown.document/3mhg62vlznz24">see this example</a>).</p> 40 <p>The app wasn't designed for mobile, so it is likely to be a very bad UX on small screens.</p> 41 <p>Also, it is running on a free <a href="https://fly.io">fly.io</a> instance, so it may be slow or unavailable at times.</p> 42 <h2>Contact</h2> 43 <p>Feedback is welcome! Create an issue, comment on the roadmap, or suggest an improvement in the <a href="https://tangled.org/diffdown.com/diffdown-app/issues">Diffdown repository on Tangled</a>.</p> 44 45 46 </div> 47 </section> 48</div> 49{{end}}