Show HN: CodeCafé – A real-time collaborative code editor in the browser

github.com

73 points by mrktsm__ 21 hours ago

Hey guys!

I’ve been working on a web app called CodeCafé—a collaborative, browser-based code editor inspired by VS Code and Replit, but with no downloads, no sign-up, and zero setup. You just open the link and start coding—together.

The frontend is built with React and TypeScript, and the backend runs on Java with Spring Boot, which handles real-time editing via WebSockets. For syncing changes, I’m using Redis along with a custom Operational Transformation system (no third-party libraries!!!).

The idea came after I found out a local summer school was teaching coding using Google Docs (yes, really). Google Docs is simple and free, but I wanted something that could actually be used for writing and running real code—without the need for any sign-ups or complex setups. That’s how CodeCafé came to life.

Right now, the app doesn’t store files anywhere, and you can’t export your work. That’s one of the key features I’m working on currently.

If you like what you see, feel free to star the repo to support the project!!

Check it out and let me know what you think!

GitHub: github.com/mrktsm/codecafe

Web App: codecafe.app

omneity 16 hours ago

Great job, congrats for the release! A little feedback, it could be nice to auto-generate a unique url on page load (the one you generate after clicking on "share"). Bonus is that it gives the user a certain confidence to reload the page for example.

Side note, I am wondering if this could be used as a better way to collaborate with coding agents. "Pair with me" instead of the typical "Code for me".

  • mrktsm__ 16 hours ago

    Thanks for the feedback! I clear the session URL after joining because I thought it looked cleaner, but I might start leaving it in if it helps with reload confidence.

indigodaddy 2 hours ago

Does the preview work for dynamic server content eg python, nodejs, php etc?

  • mrktsm__ 9 minutes ago

    Currently, the JS, HTML, and CSS are rendered client-side, which was relatively straightforward to implement. However, I’m in the process of moving these files to the server and serving them from there, which will enable me to execute languages that aren’t natively supported by the browser

tpae 15 hours ago

Question for you, how come you didn't use CDRT like yjs? It could simplify the codebase

  • mrktsm__ 15 hours ago

    Good question — before diving into the project, I did have the chance to choose. I looked into both OT and CRDTs and found that OT is widely used in collaborative editors like Google Docs, so I leaned that way. I wouldn’t say it was a deeply informed decision — I just had more reference points for OT at the time. I think with more hands-on experience with CRDTs, I’d be better equipped to weigh the trade-offs more clearly

    • ggap 14 hours ago

      Well done on this! I will keep an eye on the project

nanna 13 hours ago

I would love this for Emacs!

n3storm 16 hours ago

[flagged]

  • mrktsm__ 15 hours ago

    Yeah, you're very correct actually. I chose Java because I'm most comfortable with it, but in retrospect, Node might have been a better choice. There’s some shared logic for the collaboration part, and it was a bit of a hassle to ensure the client and backend had the same logic. Having both in JavaScript would have made things smoother

  • spruce_tips 15 hours ago

    java 23+ kicks ass. it's come a long way