User-First Design

  • As a new user, I should be able to register an account
    • A new user visits the home page. They click "Register" and are brought to a new page with a new account form, where they enter a username, password, and email address. Upon hitting submit the user is created and redirected to the users homepage.
  • As an existing user I can post a message
    • On their personal homepage, a user can enter a message in a text box and click "Post". This will publically post their message to any followers.
  • As an existing user I should be able to log in to my account
    • An existing user visits the home page. On the page they can enter their username and password and click a login button. They will then be redirected to their personal homepage.
  • As an existing user, I should be able to search for and follow other users
    • An existing user visits their homepage. On this page they use a search bar to type in either the name or username of a different user they are searching for. Upon clicking search the user is brought to a list of users matching the search term, if any. The user is able to click on a user to see a detailed description of the user, and choose to follow messages of selected users.
  • As an existing user I should be able to log out of my account
    • An existing user can click the "Log Out" button on the top of any page. This will redirect the user to the blog's non-personalized homepage.
  • As an existing user I should be able to see posts from users that I follow
    • An existing user visits their personal homepage. On this page they see a list of most recent messages from users they have previously followed.

Data-First Design

  • Users
    • Data Fields
      • Name
      • Username
      • Email
      • Password
      • List of followed members
    • RESTful Routes
      • Create
        • This route will occur after the New route. It will display the Show page for the new User with a message denoting that the User has been successfully created
      • Show
        • The Show page will be displayed, showing details of the selected user
      • Update
        • This route will occur after the Edit route. It will display the Show page for the update user denoting that the User has been successfully edited
      • Delete
        • This route will redirect to the Index page with a message denoting that the selected user has been deleted
      • Edit
        • This route will redirect to a form page where they can edit the details of their user
      • New
        • This route will redirect to a form page where a new user can be created
      • Index
        • A list of all existing users
  • Messages
    • Data Fields
      • User
      • Message Text
      • Datetime Posted
    • RESTful Routes
      • Create
        • This route will occur after the New route. It will display the Show page for the new User with a message denoting that the new message has been posted
      • Show
        • The Show page will be displayed, showing details of the selected message
      • Update
        • This route will occur after the Edit route. It will display the Show page for the update user denoting that the message has been successfully edited
      • Delete
        • This route will redirect to the Index page with a message denoting that the selected message has been deleted
      • Edit
        • This route will redirect to a form page where they can edit the details of a message
      • New
        • This route will redirect to a form page where a new message can be created
      • Index
        • A list of all messages