Loading...
Chat

Chat

Real-time direct messages and group chats with @mentions, presence, and search.

MangoApps

Category
Productivity & Utility
Version
1.0.0
Published
Apr 2026
Type
App

Overview

Pusher-powered real-time chat with one-to-one DMs, group rooms, @mentions feeding the existing Notification system, per-room presence, and PostgreSQL full-text search. Built on the same business-scoping and authentication patterns as the rest of the platform — every message is searchable, auditable, and tenant-isolated.

See how direct messages, group rooms and channels, one-click video huddles, threaded replies, and full-text or semantic search come together in one real-time workspace.

Highlights

Message teammates in real time across one-to-one DMs, group rooms, and company channels.
Jump from any conversation into a live video huddle with one click (Live Assist).
Share files, images, and video — with auto-generated video subtitles and emoji reactions.
Find any message with PostgreSQL full-text search or admin-gated pgvector semantic search.
Keep the Mac/Windows Messenger desktop client and mobile web in sync over one authenticated transport.
Govern everything per business — toggle DMs, uploads, typing indicators, huddles, and more.

Capabilities

Conversations & Channels
  • One-to-one direct messages Auto-deduped per pair — starting a chat with someone you already DM'd reopens the existing room.
  • Group rooms with admin/member roles Creator becomes room admin; admins add/remove members, members can leave, with a sole-admin guard against orphaned rooms.
  • Named public channels `channel` is a first-class room_type alongside `direct` and `group`, with its own name and topic.
  • Threaded replies Flat one-level threads in an offcanvas panel; replies fan out over the parent room's live channel.
  • Edit & soft-delete your own messages Editable for 15 minutes after send (admin-toggleable); delete is soft so audit trails survive.
Real-time, Presence & Read Receipts
  • Instant message delivery Messages persist to PostgreSQL then fan out sub-second over the room's private channel.
  • Per-room presence (who's here now) A presence channel authorized through the same business + room-membership gate drives the avatar strip.
  • Global online status A cache-based heartbeat tracks who is online business-wide, returned in a single batch.
  • Typing indicators Live "user is typing" inside rooms; admin-toggleable per business.
  • Read receipts ("Seen by") The ✓✓ “Seen by” line appears in one-to-one DMs, so you always know a direct message landed. Group rooms and channels deliberately never show it, keeping busy conversations uncluttered. Always on — nothing to configure.
  • Important messages & read-receipt requests Senders can flag a message important or request an explicit per-message acknowledgement, with a 'Read by X/Y' report.
Rich Messaging & Media
  • File attachments Drag-and-drop or paperclip upload, up to 10 files per message, uploaded browser-direct to S3.
  • Inline images & GIFs Rendered inline with async-generated thumbnails and captured dimensions.
  • Video attachments Transcoded via AWS MediaConvert with a raw-MP4 fallback when no transcoder is configured.
  • Auto-generated video subtitles Optional per-business subtitle pipeline that runs alongside the transcode; off by default.
  • Emoji reactions Toggle from the 10-emoji platform default set; reactions broadcast live to everyone in the room.
  • @mentions Mention teammates to pull them in; mentions feed the platform Notification system.
Search & Discovery
  • PostgreSQL full-text search A `search_vector` (tsvector + GIN index) is kept fresh on create and edit; matches highlight with `<mark>` tags.
  • Semantic search via pgvector Admin-gated 'search by meaning' mode; embeddings refresh on create/edit and a one-time backfill seeds history.
  • Filter search by sender Narrow message-content search to specific people.
  • Find conversations by name Look up a room by group name or DM partner name, separate from message-content search.
  • Dedicated Mentions inbox Reverse-chronological feed of every chat mention with cursor pagination and jump-to-message.
Analytics & Insights
  • Admin analytics dashboard Adoption %, DAU/MAU stickiness, cross-department communication, and mention response rate.
  • CSV export of analytics One file with summary metrics, 30-day DAU, 12-week adoption trend, and top department-pair volumes.
  • Cross-department & mention-response metrics Percentage of messages crossing departments (with top dept pairs) plus 1h/4h/24h mention response rate and median.
  • Personal activity dashboard Every user sees active conversations, their mention response time vs. team, a messaging-hours heatmap, and top conversations.
Clients & API
  • Desktop client (Mac & Windows) The Messenger desktop app reuses the same Pusher transport and JSON API; download surfaced from the chat dashboard.
  • Mobile web (iOS & Android browsers) Dedicated mobile controllers/views for the room list, room view, mentions inbox, and sending.
  • REST API for chat Bearer-token or session-authed endpoints for rooms, members, messages, threads, reactions, search, mentions, presence, and settings.
  • Pin conversations Per-user pin state to keep priority rooms at the top — web, mobile web, desktop client and API.
  • Mute conversations Per-user mute to silence a room's bells, emails and push — web and mobile web toggle it on/off; the desktop client and API can also set a timed expiry.
Admin Controls
  • Toggle direct messages
  • Toggle group chats & channels
  • Toggle file uploads Hides the paperclip when off; server-side validation refuses uploads either way.
  • Toggle typing indicators
  • Toggle semantic search On by default — turning it on after being off kicks off a one-time embeddings backfill.
  • Toggle video huddles (Live Assist) Adds a “Start Huddle (Live Assist)” item to the conversation’s ⋯ actions menu; requires the Live Assist app + a configured LiveKit provider.
  • Configurable attachment size caps Separate per-file caps for files/images (1–500 MB) and for video.
  • Built-in AI assistant (Ask AI agent) @Ask AI inside any conversation (grounded answers, summaries, smart replies, composer assist), plus read-only and confirmation-gated action agents in the Ask AI sidebar.
Limits & Specs
  • Real-time transport: Pusher Channels
  • Message storage: PostgreSQL (single non-partitioned table — partitioned at ~100M rows)
  • Default max attachment size: 25 MB per file (admin-configurable, 1–500 MB)
  • Default max video attachment size: 500 MB per file (admin-configurable)
  • Max attachments per message: 10
  • Reaction emoji set: 10 platform-default emojis
  • Message edit window: 15 minutes after send
  • Mobile support: iOS & Android via mobile web
  • Pricing: Licensed add-on — standalone or in the Work Coordination Pack

Use cases

Quick coordination
Send a direct message to a teammate without leaving the workforce platform.
Project group chat
Spin up a group room scoped to a project with persistent, searchable history and file sharing.
Company channel
Create a named channel for a team, location, or topic and broadcast to everyone who joins.
Live video huddle
Jump from a DM or room into a one-click Live Assist video huddle when chat needs to become a conversation.
Mention-driven follow-up
@mention a teammate to pull them in; the platform Notification system carries the alert through email and mobile.
Compliance recordkeeping
Every message lives in PostgreSQL alongside the rest of the platform, so exports, deletion, and audit trails reuse existing infrastructure.

FAQ

They're two deliberately separate apps. Chat is the synchronous, real-time messenger: named rooms and channels, 1:1 and group DMs, live presence, typing indicators, read receipts, and one-click video huddles — built for conversations that happen while people are online together. Messages is the asynchronous, inbox-resident channel — like email — for private notes that don't need the recipient present. The Private chat toggle in Chat settings governs Chat's real-time 1:1 rooms; the Messages app is governed independently. Most organizations run both.

Chat is a licensed app (it requires a license and is disabled until an admin enables it). It's available standalone or as part of the Work Coordination Pack, which bundles Chat with Calendar, Tasks, Workspaces, and more. Talk to your MangoApps contact for current per-user pricing and packaging.

Yes — any room or DM can start a live video huddle from its ⋯ actions menu. Huddles are powered by the Live Assist app, so the “Start Huddle (Live Assist)” item appears once an admin enables the huddle toggle in Chat settings AND the Live Assist app is set up with a LiveKit provider. Without those two pieces in place, Chat stays a text/media messenger.

Up to 10 files per message. Non-video files default to 25 MB per file (configurable 1–500 MB); video defaults to 500 MB (configurable 1–2,000 MB). See the Chat FAQ for the full limits table.

Yes. Full-text keyword search is always on. Semantic search (meaning-based, powered by embeddings) is also on by default. See the Chat FAQ for setup details and the embedding backfill process.

Both. A Messenger desktop client for Mac and Windows reuses the same Pusher transport and JSON API and is downloadable from the chat dashboard. Mobile web gives iOS and Android browsers the room list, room view, mentions inbox, and sending. Every surface authenticates against the same business + room-membership rules, so tenant isolation holds everywhere.

Yes. Admins get a company-wide dashboard — adoption, DAU/MAU stickiness, cross-department communication (including top department pairs), and mention response rate — all exportable as a single CSV. Separately, every user gets a personal activity dashboard: active conversations, their mention response time versus the team, a messaging-hours heatmap, and their top conversations.

Messages always persist to PostgreSQL over the standard HTTP request/response, so sending never depends on the real-time layer — if Pusher is unavailable, real-time delivery, presence, typing, and receipts degrade gracefully and a refresh shows what was missed. Every channel subscription is authorized inside Rails against the caller's business and room membership before it's signed, and all data is scoped per business, so tenants never see each other's conversations.