Skip to content

Add direct messages between friends after the social MVP #189

Description

@coder13

Goal

Let accepted friends coordinate outside a room after the friendship, blocking, notification, retention, and abuse controls have proven stable.

Required contract before implementation

  • Only accepted friends may start or continue a conversation.
  • Blocking immediately prevents new delivery and hides actionable contact paths.
  • Define retention, deletion, export, and account-removal behavior before storing messages.
  • Add reporting/moderation and rate limits before broad enablement.
  • Treat message content as sensitive: do not put it in analytics, routine logs, notification previews, or PostgreSQL metrics.
  • Reconnect and multi-device delivery must reconcile from durable paginated history; Socket.IO is delivery, not the source of truth.

Acceptance criteria

  • Complete a threat/privacy review covering minors, harassment, impersonation, spam, and moderation access.
  • Define conversation/message schemas, cursor pagination, delivery/read semantics, and retention.
  • Add authenticated APIs and realtime delivery with per-message authorization and idempotency.
  • Add block/report/delete flows before enabling message composition.
  • Add limits for message size, frequency, links, and duplicate/replayed sends.
  • Add tests for unfriending/blocking races, ID tampering, reconnect, multiple tabs, retention, deletion, and rate limits.
  • Roll out behind a separate feature flag with privacy-safe reliability metrics.

Dependencies

Non-goals

  • Group chat.
  • File/image uploads.
  • End-to-end encryption claims without a separately reviewed design.
  • Shipping as part of the Friend System MVP.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: socialFriends, presence, invitations, and notificationsenhancementNew feature or requestpriority: P2Important follow-up after current P0/P1 work

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions