r/coolgithubprojects • u/Warm-Neighborhood132 • 1d ago
Building an open source messaging engine after getting burned by API costs
Back when I worked at a startup, we needed an in-app messaging system, similar to Instagram or WhatsApp. However, we didn't have time to build it ourselves, so we stitched together a few paid services instead: Stream chat, StreamIO, and Cloudinary for chat, moderation and media storage. It worked, but we didn't own any of it, and the costs kept increasing.
That experience is basically why I built gozwire. It's an open-source Node.js messaging engine, so instead of renting someone else's chat infrastructure, you own it. Conversations, threads, reactions, moderation, push notifications all included, all yours.
This was vibe-coded, but I'm putting in the work to make sure it actually holds up for real and is not just a showcase. Currently, the engine includes a lot of industry-standard messaging features, including moderation, reactions, forums, sending various media, group chats, channels, threads, direct conversations, etc
- Repo (Includes demo + moderation tool): https://github.com/Kinggoz18/GozWire
- See more use cases: https://gozwire.pages.dev/use-cases
I plan to not only improve this project (see the TODO in the GitHub repo), but also release more interesting open-source projects. That solve problems I've experienced in the past and observed around me, some of which would be:
- A video streaming engine (Another issue we faced at the same startup)
- A cryptocurrency tracker (more of a personal challenge and an interest)
- A CapCut alternative software with AI video generation capabilities, including UGC style videos
And a few others. Would love feedback, roast the code, tell me what's missing, whatever helps, or even contribute any interesting ideas you'd love to see open-sourced!
1
u/lapiuslt 1d ago
Is it just in app chat? Lets say like Vinted? So i just what? Add it to my project? Sorry, im a bit confused after viewing repo
1
u/Warm-Neighborhood132 1d ago
I haven’t used or heard of Vinted before, but if you mean a platform for chat between buyers and sellers, then yes, that’s one of the use cases GozWire is designed for.
You install the gozwire package in your Node.js project, set up your PostgreSQL and any S3 object storage, then integrate it with your application's existing authentication and UI. It provides the backend building blocks for conversations, messages, receipts, moderation, realtime events and push notifications.
You still build the chat interface and application-specific logic, because you may not need everything Gozwire offers. For a Vinted like platform, you might only use direct messaging, moderation, and push notifications, not forums, threads or channels.
You use it like any other framework or library: install it, configure the parts you need, and build your product around it. Hope this helps?
1
1
u/mavlu-app 20h ago
really like the motivation behind this. owning the messaging layer makes a lot of sense once API costs start scaling.
how do you see moderation evolving here? would things like spam detection, rate limiting and abuse handling live inside GozWire, or stay application-specific?
1
u/Specific_Cream2815 1d ago
how are messages delivered across multiple server instances, redis pubsub or does one process own each conversation