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

53 mrktsm__ 9 5/5/2025, 8:08:37 AM github.com ↗
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

Comments (9)

jasonjmcghee · 1h ago
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.

omneity · 3h 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__ · 3h 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.
tpae · 2h ago
Question for you, how come you didn't use CDRT like yjs? It could simplify the codebase
mrktsm__ · 2h 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 · 2h ago
Well done on this! I will keep an eye on the project
nanna · 1h ago
I would love this for Emacs!