Features

Messaging

Direct messages between buyers and producers. Real-time delivery uses Socket.IO when available; on Vercel serverless the app falls back to REST + polling.

Pages & UI

  • /dashboard/messages — conversation list and thread view
  • ConversationView, MessageModal — message UI
  • stores/messages.ts — Pinia store for conversations
  • UiMessagesCount — unread badge in header

Real-time vs polling

  • useSocket + plugins/socket.client.ts — Socket.IO client
  • NUXT_PUBLIC_ENABLE_SOCKET=true — only when API runs on a persistent host
  • On Vercel: disabled by default; messages page polls every ~10s

Notifications

  • /dashboard/notifications — notification center
  • GET /api/messages/notifications — fetch notifications
  • PUT /api/messages/notifications/read-all — mark all read

Relevant API

  • GET /api/messages/conversations — list threads
  • GET /api/messages/conversations/:userId — messages with user
  • POST /api/messages/send — send message
  • PUT /api/messages/:messageId/read — mark read