Show HN: CodeCafé – A real-time collaborative code editor in the browser
github.comHey 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
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".
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.
Great project!
As you mentioned vscode- I don't believe the sharee needs an account unless that's changed. (And you can do it all in browser).
https://learn.microsoft.com/en-us/visualstudio/liveshare/qui...
But executing code is a different story. Replit works better there but it's heavily resource constrained in free tier.
Does the preview work for dynamic server content eg python, nodejs, php etc?
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
Question for you, how come you didn't use CDRT like yjs? It could simplify the codebase
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
Well done on this! I will keep an eye on the project
I would love this for Emacs!
[flagged]
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
[dead]
java 23+ kicks ass. it's come a long way