User Stories - cc-y-zhao/Slack-ish GitHub Wiki

Landing Page

This is the page that users see prior to signing in

  • Not signed in users will see the landing page, which contains a log in form, a link to a sign up form, and a demo user button
  • Not signed in users will not be able to access any other features on the site until they sign in
  • Signed in users will have access to all functionalities of the site

Sign In

Signed in users will have access to all app functionalities

  • Landing page will show a sign in form that will have have a link ("Don't have an account?") that will lead to the sign up form
  • The sign in form will ask for a valid email and password
  • Error messages will render if:
    • user inputs blank field
    • inputted credentials are incorrect
  • When users successfully enter valid credentials and click the "Log In" button, they will be redirected to the messaging area
  • Once signed in, users will see:
    • A profile button in the top right corner with an option to sign out
    • A navigation bar on the left that can be used to navigate through different channels and chats, with "Channels" being on the top and "Direct messages" on the bottom

Sign Up

Unregistered users can sign up via a sign up form

  • Once the user navigates to the sign up form, there will be a link ("Already have an account?") that will lead them back to the sign in form
  • Sign up acceptance criteria includes:
    • A valid email address that includes '@' and '.' with no spaces
    • A first name
    • A last name
    • A password that has at least 6 characters
    • The confirm password field must match the first password field
  • If any sign up acceptance criteria is not met, errors will display, and the form is then re-rendered with the user's filled fields to edit.
  • After fulfilling acceptance criteria and clicking the "Sign Up" button, an account is created and the user is signed in with created credentials

Demo User

If users do not have an account and do not want to create an account, they can log in as a demo user to explore the site's functionality

  • A demo user login button is available on both the sign up and sign in pages

Messages

Messages are integrated in channels, direct messages, and team messages

  • There will be a text box available on the bottom of each chat room
  • The text box's send button will be disabled until some text is entered into the box
  • All users in the chat room can view messages sent to that chat room
  • Users can hover over their own messages to view the edit and delete buttons
  • Upon pressing the edit button, a modal will show a text box with the user's message in it, allowing them to edit the message
    • The modal will include a "Save" button that may only be pressed if the message is not empty
    • The modal will include a "Cancel" button that may be pressed at any time
  • (BONUS) Instead of a modal, the edit button will turn the message into an editable text box.
  • (BONUS) Messages are live

Search

Users will be able to search for other users using a search bar

  • Signed in users can access the search bar at the top of the screen to search for users that they can message
  • The search bar will dynamically render on every character that is typed into the search bar to show a list of people whose name matches the search criteria
  • The search bar will be available at all times on the top of the page, as well as on the search users page to add to Channels and Direct Messages "Search Users" page

Channels

Under the "Channels" section in the navigation bar...

  • Signed in users can create named channels by clicking the "Add Channel" button on the left-hand navigation bar
    • A "+" icon will appear upon hovering the "Channels" text on the navigation bar, which will also allow users to create a channel
  • Upon clicking the "Add Channel" button, a modal will render, prompting users to provide a title and optional description for their channel
    • The "Create" button will be grayed out until the title is not empty
    • The "Create" button will turn green when the title is provided
  • Upon creating the channel, channel owners can see an "Edit" button that will show a modal where they can edit the channel name or delete the channel entirely
  • Channel members can view messages posted by other channel members
  • (BONUS) Channel members can add other users to channels through the "Search Users" page, but only channel owners can remove channel members
  • (BONUS) Channel members have the option to leave channels

Direct Messages (Between Two Users)

Under the "Direct messages" section in the navigation bar...

  • Signed in users can click the "Add teammates" button on the left-hand navigation bar to create a direct message
    • A "+" button will appear upon hovering the "Direct messages" text on the navigation bar, which will also allow users to create a direct message
    • Upon clicking either button, a menu will open and prompt users to select either "Direct message" or "Group message"
  • Upon clicking the button, users are directed to the "Search Users" page where they can search through a list of users to message
    • Upon clicking a name, users will be redirected to the chat room with that person
  • Direct messages are exclusive to the two users (users cannot add other users to a direct message exchange)

Teams/Multi-person DM (BONUS)

Under the "Direct messages" section in the navigation bar...

  • Signed in users can click the "Add teammates" button on the left-hand navigation bar to create a team chat (unlike channels, these groups are unnamed and do not have an owner)
    • A "+" button will appear upon hovering the "Direct messages" text on the navigation bar, which will also allow users to create a team chat
    • Upon clicking either button, a menu will open and prompt users to select either "Direct message" or "Team message"
  • Upon clicking the button, users are directed to the "Search Users" page where they can add users to the team chat
    • The list of people will have checkboxes next to their names
      • After checking all the people that the user wants in their team chat, they can click the "Create" button to create chat room
  • (BONUS) Users within a team can add other users