User Stories - Intro-to-SE-Lab-Fall-21/Group-4 GitHub Wiki
-
User Story 1, Login: (Priority: 5/5 Risk: 3/5)
As a user, I want to be able to login to my email account with my email username and password.
Sub-Stories:
- Successful Login: As a user, if I enter my credentials correctly, I want the system to log me into my email and display my messages.
- Acceptance Criteria: If a user has an account in the application's database, then the user should be able to login to the application if they enter the correct credentials for that account.
- Unsuccessful Login: As a user, if I enter my information incorrectly, I want the system to alert me in a meaningful yet un-alarming way.
- Acceptance Criteria: If a user has an account in the application's database, and tries to login but enters the wrong credentials, then the application should alert the user that the credentials are invalid, and tell the user to try again.
- Login Security: (Priority: 5/5 Risk: 5/5) As a user, I want my email to be secure by only allowing me into my email account if I enter the correct credentials.
- Acceptance Criteria: If a user has an account in the application's database, only that account's specific email address and password should be able to login to that account. Under any other circumstances, the application should alert the user that the credentials are invalid.
Task Breakdown:
- Need a login page for the end user.
- Need a database to store and access user login information for validating a login request.
- Need to create a path with redirects for both a successful login (redirect to home/index page), and a path for unsuccessful login (remain on page, alert user).
User Story 2, Viewing and Accessing Emails: (Priority: 5/5 Risk: 3/5)
As a user, I want to see all of the emails in my inbox in a list.
Sub-Stories:
- View Email Preview (Subject and Sender): As a user, I want to be able to see a preview of all of my emails.
- Acceptance Criteria: A valid user who is logged into their account should be able to view previews (message subject and sender) of all of the emails in their inbox.
- View Email (Subject, Sender, Body): As a user, I want to be able to click on this preview and see the full email.
- Acceptance Criteria: A valid user who is logged into their account should be able to click on a preview of an email (described above) to display the full contents of the email: subject, sender, body, and attachments.
Task Breakdown:
- Need a to create a a function to access the user's emails through imap server.
- Need to store the emails that were fetched in the above function and display the relevant information for a preview to the user on the home page (subject, sender).
- Need to make each of the preview messages a clickable link that navigates the user to a page that displays all of that particular emails contents.
User Story 3, Compose Path: (Priority: 5/5 Risk 1/5)
As a user, I want to have a button clearly labeled "compose" or something similar that takes me to the composition page.
Sub-Stories:
- As a user, I want a button on the home page that I can press to compose emails.
- Acceptance Criteria: A valid user who is logged in should have a compose button available to the to redirect them to a page that allows the user to compose an email.
- As a user, once I press this button I want to have a page where I can compose an email to someone.
- Acceptance Criteria: A valid user who is logged in and has pressed the above mentioned compose button should be able to compose an email, adding varying fonts and other formatting if they desire.
Task Breakdown:
- Need a link embedded in a button on the homepage that takes the user to the compose route.
- Need to create another html page with the relevant entries (to, subject, body) displayed to the user when the user clicks the compose button.
User Story 4, Logout Security: (Priority: 5/5 Risk: 4/5)
As a user, I want to be able to logout from my email account in order to protect my privacy.
- Acceptance Criteria: A valid user who is logged in to the application should be able to logout of their email, removing any of their personal information from the current instance of the system (except for the database).
Task Breakdown:
- Need a logout button embedded in every page that both displays a logout message, and completes the logout functions (as described below)
- Need a function to clear all of the emails from the app when the user logs out (protecting user privacy).
- Need a function that actually logouts the current user and therefore displays the login page and removes access from the user specific pages like home and compose.
- When a user utilizes the logout button as described above, both functions (clear all, and logout) should be invoked by the system.
User Story 5, Sending Emails: (Priority: 5/5 Risk: 2/5)
As a user, I want to be able to send emails directly from my client after I write them.
- Acceptance Criteria: A valid user who is logged in and has utilized the compose path mentioned above to compose an email should be able to send this email to anyone they choose to with a valid email address. The user should also be able to send to multiple email addresses if they desire.
Task Breakdown:
- Need compose page that presents the user with the relevant information prompts (to, subject, body, attachment)
- Need a function that assembles all of the information entered by the user and puts it into an actual email to send.
- Need a function that sends the email when the user presses send (or displays an error message if an error occurred).
User Story 6, Attachments: (Priority: 3/5 Risk 2/5)
As a user, I want to be able to send different types of attachments with my emails.
Sub Stories
- As a user, I want to be able to send a variety of files through email with this email client.
Acceptance Criteria: A valid user who is logged in and is composing an email through the compose path mentioned above should have the ability to attach a file to their email. The file upload in the compose path must also be able to support standard file types (.pdf, .doc, etc).
Task Breakdown:
- Need a button that offers an end user the ability to add an attachment to an email they are composing.
- Need a function that attaches files to an email to send when called.
- Need to ensure the compose path supports adding an attachment to an outgoing email.