comm
comm copied to clipboard
Comm is the working name of this open source messaging project.
Comm
Comm is an E2E-encrypted messaging app. You can think of it as Signal with a federated Discord bolted on.
- DMs and group chats are E2EE between devices using pairwise Double Ratchet sessions initiated via X3DH.
- Communities, which consist of a tree structure of channels, are hosted on federated user-run backends that we call keyservers. Communication is encrypted via TLS.
Learn more at comm.app!
Repo structure
The client apps and keyserver layer are mostly written in Flow-typed Javascript. These projects are organized in a monorepo structure using Yarn Workspaces.
nativecontains the code for the React Native app, which supports both iOS and Android.keyservercontains the code for the Node/Express server.webcontains the code for the React desktop website.landingcontains the code for the Comm landing page.libcontains code that is shared across multiple other workspaces, including most of the Redux stack that is shared across native/web.
Comm's backend services are centralized and never touch plaintext data. They are written in Rust and deployed with Terraform to AWS. These projects are organized in a monorepo structure using Cargo Workspaces.
servicescontains the various different backend services.sharedcontains gRPC and protobuf definitions, and shared Rust libraries.
Dev environment
Note that it’s currently it’s only possible to contribute to this project from macOS. This is primarily due to iOS native development only being supported in macOS.
Check out our doc on how to set up our dev environment.