Setup • Features • Keywords • Node Structure • Server Structure • Authentication
## Setup ### Requirements - Node.Js with npm - Supabase ```python NEXT_PUBLIC_SUPABASE_URL="" SUPABASE_SERVICE_ROLE_KEY="" ``` ## Features - Private: Messages can be handled by the server / node, axiom can't access them. - Customizable: Customize your server with plugins, a replacement for bots. ## Keywords - Axiom Client: The user-side app which communicates with all below. - Axiom Cloud: The authentication and user management handler. - Axiom Server: The self-host-able community/friends communication service. - Axiom Node: The self-host-able Private Message communication service, also used for sending notifications. ## Node Structure The Direct-Message structure works like Email, but real-time and the node uses a temporary auth, a node is what stores messages that are sent by a user. This diagram shows that in order to send a message to a user, you must connect to their chosen node, which can be accessed via the Axiom Cloud and connected to directly. A node message can be a DM (Direct Message between two parties), or a SM (Server Message from a community). ```mermaid sequenceDiagram participant AliceClient as Alice's Client participant Axiom as Axiom Cloud participant BobNode as Bob's Selected Node (Node2) participant BobClient as Bob's Client AliceClient->>Axiom: Lookup Bob's node Axiom-->>AliceClient: Respond with Bob → Node2 AliceClient->>BobNode: Authenticate and Send DM to bob BobNode-->>AliceClient: Acknowledge message stored BobNode->>BobClient: Notify new message BobClient-->>BobNode: Acknowledge received BobNode-->>AliceClient: Acknowledge received ``` ## Server Structure Let's say Alice sends a message in `general`, this is how the server handles it ```mermaid flowchart TD A[...] A --> B{Is Bob connected