I built Mesh because I wanted a self-hosted alternative to Slack that didn't require a complex backend or central database. It runs entirely on the Nostr protocol using the NIP-29 specification (relay-based groups).
The architecture is:
Backend: A custom NIP-29 compliant relay written in Rust.
Frontend: Next.js client that connects via WebSockets.
Auth: No email/password; uses end-to-end cryptographic keys (Nostr identity).
The goal was to prove that you can have "Slack-like" real-time features (channels, admin roles, kick/ban) without giving up data sovereignty. Since it's Nostr, you can swap the relay out anytime and migrate your data easily.
It’s still early days (v1), so I’d love feedback on the Rust relay implementation or the group handling logic.
Happy to answer any questions!
arjunacharya10•1mo ago
Heyy! I am building a streaming client on nostr and I wanted to better understand how you are creating the channel so that I can build for my usecase. Looking forward to hearing from you.
tav1•1mo ago
Hi HN,
I built Mesh because I wanted a self-hosted alternative to Slack that didn't require a complex backend or central database. It runs entirely on the Nostr protocol using the NIP-29 specification (relay-based groups).
The architecture is:
Backend: A custom NIP-29 compliant relay written in Rust.
Frontend: Next.js client that connects via WebSockets.
Auth: No email/password; uses end-to-end cryptographic keys (Nostr identity).
The goal was to prove that you can have "Slack-like" real-time features (channels, admin roles, kick/ban) without giving up data sovereignty. Since it's Nostr, you can swap the relay out anytime and migrate your data easily.
It’s still early days (v1), so I’d love feedback on the Rust relay implementation or the group handling logic.
Happy to answer any questions!
arjunacharya10•1mo ago
My pub key: npub12ecgmc9nw3a864jydxmr67s6v7770m6tudcfdarfkzlhkcv0vxcqpt00qa http://primal.net/p/npub12ecgmc9nw3a864jydxmr67s6v7770m6tudc...
Looking forward to hearing form you