GoWeBaKnowledge Center

THE UNIFIED PLATFORM BIBLE — ADDENDUM 09

WebaCom · WebaCall — Media Saving and Video Calls — July 2026

Version: 1.0
Date: July 7, 2026
Author: Alain Bessette, CFO/Product Owner, ABI Conglomerate
Domain: GoWeBa.com
Status: Official strategic addendum — Binding specification
Constraints: ZERO data loss · ZERO force-reset · ZERO service interruption


⚠️ CRITICAL NOTICE
This addendum has the SAME authority as Part 1, Part 2, and all previous addendums.
All features described are deployed in production and saved as checkpoints.
No incompatible schema modifications were made.

📋 TABLE OF CONTENTS

  1. Overview
  2. Phase I-5g — Save Media to WebaDrive
  3. Phase J — WebaCall with Jitsi Meet
  4. Technical Architecture
  5. Key Modified Files
  6. Roadmap — Evolution to Twilio

<a id="overview"></a>

SECTION 1: OVERVIEW

This addendum documents two major new features delivered on July 7, 2026, strengthening the WebaCom module (team messaging):

FeaturePhaseDescription
Media Saving → WebaDriveI-5gAny content shared in WebaCom (photos, videos, audio, files) can be saved to WebaDrive with one click
WebaCall (Jitsi Meet)JAudio and video calls integrated into conversations (DM + channels) via Jitsi Meet

Design Principles

  • Zero download: Saving to WebaDrive uses intra-bucket S3 copy (no download/re-upload)
  • Determinism: Jitsi rooms are generated from a SHA-256 hash of the conversation ID — same conversation = same room
  • Trilingual: All interfaces support French, English, and Spanish
  • No schema changes: Both features use existing fields (contentType, metadata Json)

<a id="save-to-drive"></a>

SECTION 2: PHASE I-5g — SAVE MEDIA TO WEBADRIVE

2.1 Problem Solved

Users regularly share photos, videos, voice messages, and files in WebaCom. Before this phase, these media remained confined to the conversation without the ability to organize them in WebaDrive for later access or filing.

2.2 Solution Implemented

A "Save" button appears on every type of media shared in WebaCom conversations. With one click, the file is copied to an automatically created "WebaCom" system folder in the user's WebaDrive.

2.3 Detailed Features

2.3.1 Backend API

Route: POST /api/webacom/media/save-to-drive

ParameterTypeDescription
cloudStoragePathstringS3 path of the source file
fileNamestringName of the file to save
mimeTypestringFile MIME type
fileSizenumber?Size in bytes (optional, retrieved via HeadObject if absent)

Behavior:

  • Authentication required (requireAuth() + getOrgScope())
  • Auto-creates the "WebaCom" system folder (type SYSTEM_DEFAULT, cyan color, MessageCircle icon)
  • Intra-bucket S3 copy via CopyObjectCommand — no network download
  • Duplicate detection (checks description contains 'webacom-source:{path}' before creating)
  • Creates a FileAsset record with source tracking
  • Serialized BigInt handling for sizeBytes

2.3.2 Storage Utilities Added

Two new functions in lib/storage.ts:

FunctionDescription
copyObjectInS3(sourceKey, destKey)Intra-bucket S3 copy — no network transfer
headObject(key)Retrieves size + MIME type without downloading content

2.3.3 User Interface

The save button appears on four content types in WebaCom message bubbles:

Content TypeButton PositionNote
ImagesPill button below filenameNext to download button
Files (PDF, DOC, etc.)Pill button below filenameNext to download button
VideosPill button in action rowNext to "Transcribe"
AudioPill button in action rowNext to "Transcribe"

3 visual states:

StateIconTextStyle
ReadyHardDriveDownloadSave to DriveNormal
SavingSpinnerSaving...Animated
DoneCheckSavedGreen ✓

<a id="webacall"></a>

SECTION 3: PHASE J — WEBACALL WITH JITSI MEET

3.1 Problem Solved

Organization members communicate via WebaCom (text, audio, video, files), but had no integrated way to launch a voice or video call directly from a conversation.

3.2 Solution Implemented

WebaCall integrates Jitsi Meet (open-source video conferencing platform) directly into WebaCom. Two call buttons (audio + video) appear in the header of every conversation, and a rich call card is displayed in the message thread.

3.3 Detailed Features

3.3.1 Call Buttons in Chat Header

ButtonIconActionPosition
Audio callPhone (blue)Launches a Jitsi audio callHeader, before SSE indicator
Video callVideo (green)Launches a Jitsi video callHeader, before SSE indicator

Behavior:

  • Available on all conversation types: DM (1-to-1) and Channels (group)
  • Cross-organization support (isCrossOrg conversations)
  • Loading spinner during initialization
  • Opens Jitsi Meet in a new browser tab

3.3.2 Backend API

Route: POST /api/webacom/conversations/[id]/call

ParameterTypeDescription
callType'audio' | 'video'Type of call to start

Algorithm:

  1. Authentication (requireAuth() + getOrgScope())
  2. Membership verification (supports cross-org)
  3. Deterministic room name generation:
    SHA-256(conversationId) → first 12 characters → "GoWeBa-{hash12}"
    
  4. Creates a WebaComMessage with:
    • contentType = 'call'
    • metadata = { jitsiUrl, roomName, callType, startedBy, startedByName, startedAt }
  5. Updates conversation preview + unread counts
  6. Returns created message + Jitsi URL

Room URL: https://meet.jit.si/GoWeBa-{hash12}

Key property: Room names are deterministic — the same conversation always generates the same room. Participants can leave and rejoin at any time.

3.3.3 Call Card in Messages

When a call is started, a rich card appears in the message thread:

ElementAudioVideo
IconPhoneCall in blue circleVideo in green circle
TitleAudio callVideo call
SubtitleStarted by [name]Started by [name]
Action"Join" button with ExternalLink icon"Join" button with ExternalLink icon

3.3.4 Jitsi Meet Capabilities

FeatureSupportedNotes
1-to-1 callsVia DM
Group callsVia channels — up to 75+ participants
Audio onlyCamera can be disabled in Jitsi
HD videoAdaptive resolution based on bandwidth
Screen sharingNative Jitsi feature
EncryptionTLS + SRTP (optional end-to-end)
RecordingNot available on public Jitsi servers
TranscriptionNot available on public Jitsi servers

<a id="architecture"></a>

SECTION 4: TECHNICAL ARCHITECTURE

4.1 No Schema Changes

Both features were implemented without any Prisma schema modifications. They leverage existing fields on the WebaComMessage model:

FieldTypeUsage
contentTypeString @default("text")New value: 'call' (WebaCall)
metadataJson?Structured metadata: Jitsi URL, call type, etc.

4.2 Security

  • All APIs require authentication (requireAuth())
  • Conversation membership verification before any action
  • Cross-organization conversation support (isCrossOrg)
  • Duplicate detection for WebaDrive saving
  • Intra-bucket S3 copy (no data exposure in transit)

<a id="files"></a>

SECTION 5: KEY MODIFIED FILES

5.1 Phase I-5g — Media Saving

FileActionDescription
lib/storage.tsModifiedAdded copyObjectInS3(), headObject()
app/api/webacom/media/save-to-drive/route.tsNewSave to WebaDrive API
app/(app)/webacom/webacom-client.tsxModified"Save" buttons on all media types

5.2 Phase J — WebaCall

FileActionDescription
app/api/webacom/conversations/[id]/call/route.tsNewJitsi call initiation API
app/(app)/webacom/webacom-client.tsxModifiedCall buttons in header, rich call card

<a id="roadmap"></a>

SECTION 6: ROADMAP — EVOLUTION TO TWILIO

WebaCall currently uses Jitsi Meet (free public servers) for video conferencing. The architecture is designed to evolve to Twilio when advanced features are needed.

6.1 Current Phase J (Jitsi Meet)

AspectStatus
Audio/video calls (1-to-1 and group)✅ Deployed
Screen sharing✅ Via Jitsi
Call card in WebaCom✅ Deployed
CostFree

6.2 Planned Phase J-v2 (Twilio)

FeatureDescription
Call recordingAuto-save to WebaDrive
Auto-transcriptionReuses existing I-5a pipeline: /api/webacom/media/transcribe
TranslationReuses existing I-5a pipeline: /api/webacom/media/translate
Full historyDetailed call log with duration, participants, status
Phone numbersPSTN calls via existing Twilio lines

Note: GoWeBa already uses Twilio for telephony and SMS, and SendGrid for emails. Migration to Twilio for video conferencing is part of the unified Twilio/SendGrid platform consolidation strategy.


📝 VERSION HISTORY

VersionDateChanges
1.0July 7, 2026Initial version — Phase I-5g + Phase J

End of Addendum 09 — WebaCom · WebaCall — July 2026

© 2024–2026 GOWEBA INC. — Make it Simple, Make it Possible, Make it Real.