Short description
Implement the messaging/communication subsystem shown in the red box: real-time one-to-one and simple multi-party chat, message inbox REST APIs, persistent message store (MongoDB), read receipts/typing/presence over WebSockets (Django Channels + Redis channel layer), integration with existing Notifications + Projects/Profiles (notify on interest/response), audit logging and admin moderation. System must work with existing auth (JWT/session), respect permissions and privacy, and scale reasonably.
Epic acceptance criteria
- Users can open a websocket connection and receive real-time messages for conversations they participate in.
- Users can send messages via WebSocket (preferred) and fallback REST API; messages are persisted to MongoDB and reflected in the inbox.
- Inbox REST API returns conversation list and recent messages (paginated).
- Read receipts and presence/typing indicators are supported and emitted via channels.
- Notifications are created for new messages (DB row) and sent to offline users via email/push worker.
- Rate limiting, moderation (block/report), and retention policies are in place.
- Unit & integration tests, openapi docs and a short dev runbook included.
Short description
Implement the messaging/communication subsystem shown in the red box: real-time one-to-one and simple multi-party chat, message inbox REST APIs, persistent message store (MongoDB), read receipts/typing/presence over WebSockets (Django Channels + Redis channel layer), integration with existing Notifications + Projects/Profiles (notify on interest/response), audit logging and admin moderation. System must work with existing auth (JWT/session), respect permissions and privacy, and scale reasonably.
Epic acceptance criteria