Skip to Content
Living documentation — last reviewed 2026-05-28
FeaturesMessages CommentsMessages + Comments — Code Map

Messages + Comments — Code Map

API

FileRole
apps/api/src/messages/messages.module.tsDI wiring; brings in R2, Redis, Users, Uploads, Push
apps/api/src/messages/messages.controller.tsREST endpoints — DMs + workout-anchored comments + program summaries
apps/api/src/messages/messages.service.tsCore service: createMessage, listConversations, getConversationMessages, markRead, markConversationRead, deleteMessage, createWorkoutComment, workout-comment readers, verifyCanMessage, attachment helpers
apps/api/src/messages/messages.gateway.tsSocket.io gateway at /ws. Clerk-auth handshake; presence; typing; broadcast message:new and announcement:new
apps/api/src/messages/messages.service.driver.ts + .unit.spec.tsTests
apps/api/src/messages/dto/messages.dto.tsAll DTOs

DB

FileRole
libs/db/src/lib/schema/messaging.tsmessages, message_attachments, enums sender_role, attachment_type
libs/db/src/lib/schema/comments.tsexercise_comments — pinned to workout_movement

Web

FileRole
apps/web/src/components/messages/chat-window.tsxDM chat UI
apps/web/src/components/messages/conversation-list.tsxInbox
apps/web/src/components/messages/message-bubble.tsxSingle message
apps/web/src/components/messages/date-separator.tsxDate dividers
apps/web/src/components/messages/file-upload-area.tsxAttachment picker
apps/web/src/components/messages/new-conversation-dialog.tsxStart a new DM
apps/web/src/components/messages/workout-comments-panel.tsx + sheet variant + .int.spec.tsxWorkout-anchored thread surface
  • Push: apps/api/src/push-notifications/push-notifications.service.ts .notifyUser invoked from messages service.
  • Uploads: apps/api/src/uploads/uploads.service.ts .createPresignedUpload.
  • Event tracking: apps/api/src/event-tracking/event-tracking.service.ts — no direct hook in messages today.