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, read receipts, 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") Shows last-read per user in DMs and groups; intentionally suppressed in channels; admin-toggleable.
  • Anonymized read receipts option Admins can keep the read state but hide reader names/avatars in both the live broadcast and the rendered attribution.
  • 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 (desktop client / API).
  • Mute conversations Per-user mute with an expiry to silence noisy rooms (desktop client / API).
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 & read receipts
  • Toggle semantic search Off by default — flipping it on kicks off a one-time embeddings backfill.
  • Toggle video huddles (Live Assist) Adds a one-click Huddle button; 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.
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. Chat's `direct_messages_enabled` toggle 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 with one click. Huddles are powered by the Live Assist app, so the button 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. Files and images default to a 25 MB per-file cap (admins can tune it from 1 to 500 MB), and video gets its own larger cap because transcoded video is routinely bigger. Executable and scriptable file types are blocked server-side by both extension and MIME as defense-in-depth. Videos are transcoded via AWS MediaConvert, with optional auto-generated subtitles and a raw-MP4 fallback.

Keyword (PostgreSQL full-text) search is on by default and covers most needs, with sender filters and a separate 'find a conversation by name' lookup. Semantic search adds a 'find a message about…' mode powered by pgvector embeddings — search by meaning rather than exact words. It's admin-gated and off by default because turning it on requires a one-time embedding backfill of your history; after that, new messages and edits keep their embeddings fresh automatically.

Yes, with two levels of control. One toggle governs whether the 'Seen by' indicator appears at all (it's shown in DMs and groups and intentionally excluded from channels). A second toggle anonymizes receipts — keeping the read state but hiding reader names and avatars — in both the live broadcast and the rendered attribution. Typing indicators, message editing, and semantic search each have their own toggle too.

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.