Skip to content

User Stories

Jim McGaw edited this page Feb 15, 2023 · 3 revisions

LeapChat - User Stories Document (Draft)

A list of brief user stories for LeapChat. This is a DRAFT document. Please edit as needed. :)

Definitions

A "user" is any end user who is using LeapChat to accomplish a task. An "admin" (alt: "organizer"?) is a user who has special privileges to modify data within the context of a particular chat. The term "user" will be used throughout, and "admin" will only be used in cases where these special privileges, in the context of a single chat, are assumed.

User Stories

As a user, I can create a new chat room. As the creating user, I will be the room admin.

As a user, I can share a link with other users I want to invite to the room.

As an admin, I can share an admin link with other users I want to invite to the room, whom I trust to have the same admin privileges as I do.

As a user, I can maintain a list and switch between multiple leap chat rooms.

As a user, I can set my own user handle that identifies me to other users.

As a user, I can see which other users are present in the chat, by their user handle. I can distinguish between those users who are active versus those who have gone idle.

As an admin, I can purge the chat room of all past messages.

As a user, I can see when a chat I am in has had all of its messages purged, as well as who initiated the purging.

As a user, I can create tasks that need to be done in the context of a chat.

As a user, I can assign tasks to users, by their user handle. Tasks may be assigned to their

As an admin, I can modify or delete tasks.

As a user who has been assigned a task, I will get an italicized message in the chat that the task has been assigned to me. (Maybe the message is from the user "leapchat"? With a robot emoji? Not sure.)

As a user, I can easily browse the list of tasks in the chat and find the one I am looking for. I can easily view the subset of tasks that have been assigned to me.

As a user, I can assign or unassign any task to or from any other user.

REJECTED

As a user, I can request that a chat room is purged of all its messages. This purge will not be executed until enough other non-admins in the room second the request.

  • Considering the case where a purge would be essential, but all admins are indisposed. Require a quorum from non-admins?
    • That would work great most of the time, but a malicious user could perform a Sybil attack and create a "one-man majority" by opening up LeapChat in various browsers, potentially forming a quorum all by themselves. --Steve
  • Let's think about this some more. For now let's assume that at least 1 admin will be around and that they can delete all the messages as needed

Thoughts / Maybes

Potentially true user stories, depending on whether we decide to build the corresponding features or not:

  • Ah, maybe each user can delete all of the messages that they sent! That seems really fair... though then the database would have to know who sent which messages, which is not great. Hmm...

    • Maybe what the database stores is a private, unique identifier representing a user (e.g., the hash of a user's private key), and that identifier is attached to each chat message in the DB to represent its sender's identity, but the DB wouldn't have to know which unique identifier represents which user's account... When you want to delete your messages you could send that identifier to the server to prove you authored those messages. Fuck yeah... I should use a technique like this more often to hide metadata.
Clone this wiki locally