Skip to content

Project messaging #1234

@begedin

Description

@begedin

This task should be considered the start off point for specs and discussion about the project messaging feature.

Our aim here is to have a basic system to allow users to message projects.

From the UI point of view, something like this could do the trick:

Model

  • Initially, it can be as simple as user-to-user, where posting a message to a project simply posts to organization owner
    • we need a sender, a recipient and a body field

Reaching the UI

  • We can add a link to the user dropdown, to reach the message inbox
  • We can add a button to the project page to message a project - this opens the message thread UI and allows the current user to send a message to the project owner

Message inbox

  • we get a list of users we had contact with in the sidebar, ordered by most recent on top. clicking any opens the message thread for that user, on the same page, in the main area next to the sidebar

Message thread

This is where we get to when starting a new message, or clicking an item in the message inbox.

This is basically a route which fetches all messages either sent by the recipient to the current user, or sent to the recipient by the current user, from oldest to newest. Potentially, we can list only the last X messages, and fetch more as we try to scroll up.

There's a new message form at the bottom, which can be as simple as a text area. It does not need to support markdown, or anything like that.

At this point, we have something shippable, and also implementable in a couple of days.

Past this point we can

Enhancements

  • support rendering of links in the message thread
  • add buttons to the project membership page next to each member, to allow project owner and potentially admins/collaborators message each other
  • add a similar button to each user's profile page
  • extend the message model to allow for project-to-user, user-to-project. Since ecto prefers flattened relationships instead of polymorphism, this can be easily built upon in iterations like this. That would mean the project message button now targets project
  • give each message a "read" status. Sounds simple, but with user-to-project, we need to decide how to handle "reading" messages targeted at projects. Might want to merge it with notifications, once we have them, since they'll likely end up serving the same purpose in this context.
  • privacy/do-not-disturb settings
  • add organization as a third recipient/sender option, if there's a need for it
  • plug notifications into it, once we have them

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions