M07

Messaging

Secure threaded conversations with real-time collaboration.

Conversation, participant, message, reaction, and media APIs backed by SignalR hub events for real-time delivery, read states, presence, and draft handling.

ChatThread.jsxtsx
import { useState } from 'react';
import { AvatarRow, Avatar, AiTextarea, MessageBubble } from '@cleen/cleen-components';
import { useConversation } from '@/hooks/useConversation';

export function ChatThread({ conversationId }) {
  const { conversation, messages, send, typing } = useConversation(conversationId);
  const [draft, setDraft] = useState('');

  if (!conversation) return null;

  return (
    <div className="chat-thread">
      <header>
        <h2>{conversation.title}</h2>
        <AvatarRow users={conversation.participants} maxVisible={5} />
      </header>
      <ul className="chat-messages">
        {messages.map((m) => (
          <MessageBubble key={m.id} message={m} avatar={<Avatar user={m.author} />} />
        ))}
        {typing && <li className="chat-typing">{typing.name} is typing…</li>}
      </ul>
      <AiTextarea
        value={draft}
        onChange={setDraft}
        onSubmit={() => { send(draft); setDraft(''); }}
      />
    </div>
  );
}

Capabilities

  • Conversation create/detail/filter/update/delete
  • Participant add/update/remove
  • Message save/detail/filter/delete with attachments
  • Reaction add/remove and read receipts
  • SignalR presence and group broadcasting

Benefits

  • Enables real-time collaboration
  • Supports private threaded communication
  • Improves engagement and response time

Flow of work

  1. 01Create conversation
  2. 02Add participants
  3. 03Send threaded messages and media
  4. 04Broadcast read/reaction presence events
  5. 05Archive or delete per policy

Subfeatures

  • Conversation CRUD
  • Participant management
  • Message CRUD
  • Reaction add/remove
  • Media attach/remove
  • Read receipts
  • Presence online/offline
  • Draft save
Source surfaces (technical reference)

Internal code areas in the licensed Full-Stack codebase that back this module.

  • ApiChat
  • Hubs/MessagingHub
In the stack

Where it lives. What it exposes.

A quick visual of how Messaging participates across the CleenUI stack, alongside the named operations it adds to the API surface.

M07 · architecture
Frontend
React · TailwindCSS · 60+ components
Conversation listThread viewComposerReactions UIPresence indicator
API
C# Web API · production-ready · role-aware
Conversation CRUDParticipantMessage CRUDReactionMedia attach
Database
AzureSQL · 300+ tables · 700+ procedures
ConversationsMessagesParticipantsReactionsMessageMedia
Async Services and Batch Jobs
WebJobs & Functions · queue-backed
SignalR hubPresence trackerNotification dispatcher
All four layers ship together as the Full-Stack license. M07 blocks are highlighted.
API operations

Named operations on this surface

8
Try these in Postman
  • POSTConversation CRUD/chat/conversation/crud
  • POSTParticipant management/chat/conversation/participant-management
  • POSTMessage CRUD/chat/conversation/message-crud
  • POSTReaction add/remove/chat/conversation/reaction-add-remove
  • POSTMedia attach/remove/chat/conversation/media-attach-remove
  • POSTRead receipts/chat/conversation/read-receipts
  • POSTPresence online/offline/chat/conversation/presence-online-offline
  • POSTDraft save/chat/conversation/draft-save

Each operation maps to an endpoint in the licensed C# Web API surface.