Skip to content
csmer edited this page Dec 3, 2020 · 28 revisions

Wiki Tab

threadRepo - CSCI 150 Fall 2020 Project

1. Introduction

2. Description

3. Requirements

   3.1 UI Requirements

   3.2 Functional Requirements

   3.3 Non-Functional Requirements

4. Prioritization

5. Diagrams


1. INTRODUCTION

1.1 Purpose

threadRepo is a website application that allows users to to purchase and sell clothes online. This wiki is a complete collection of requirements for the development of threadRepo. These requirements help in the development of the application by giving an outline of the priorities to be taken during different stages of development.

1.2 Scope

threadRepo will be an e-commerse web application that is a place for users to buy and sell apparel and shoes. Communication between users will be allowed for inquries, and we want to give a user friendly approach to enable fast transactions. We want our web application to be aesthetically pleasing in order to inhance the experience.

The user will need to have access to an account in order to buy and sell. Requirements will include the First Name, Last Name, personal or professional email. Buyers will be given a prompt to enter payment information using Paypal and sellers will be able to give a price on the product and describe it. Listing will be available to users with no profile but will not be able to purchase anything without an account.

1.3 Overview

threadRepo will be comprised of technologies featured in the MERN Stack. Those technologies being MongoDB, Express.js, React, and Node.js. Using these Four technologies we will fully create our website, with all features listed in Scope. We go into further details in section 2. Description.

2. DESCRIPTION


2.1 Product Components

This is the basic layout of how our clients will access the database.

2.1.1 The Client

The client is our website we created. This will be responsible for allowing users to access features on the website which will only be available after they have logged in. The ability to access these features is done by a user interface which is implemented using React (Javascript library) and Material-Ui (A React UI Framework). These will help our web development process become faster and easier, while creating an aesthetically pleasing web site for our users.

2.1.2 The Server

The server is placed between the client and the database. Here is where we handle user requests. This is done by using routes that send and recieve information from the client to the webserver where our data is then saved in the database. When a user decides to login or register , this is sent to the server side which is connected to the database.The server will also handle any errors that become present and are redirected to the client if it is relevant. Node js and Express js are the server side programming languages we are using.

2.1.3 The Database

MongoDB will be the database that holds our user's information as well as the listings they create. The user needs to authenticate themselves to access the stored user data in the database, and this is done by signing in where we will compare the hashed password in the database with the password they input in the front end(sign in page of website). As the creators of the website we are able to alter the stored data in the user base if needed. This includes altering the specific properties of a listing to deleting an account.

Example Storage of user account & listing in mongoDB :

Example User login:

Example listing:

2.2 Users

This website will have a user and an admin. The user will need functionality that is provided from the client. Some examples include creating an account, logging in, creating a list, changing profile page. The users will also need functionality for communicating with sellers, which the server will need to do in order transfer the messsage between users.

3. Requirements


3.1 UI Requirements Home page, login page, listing page, checkout page, user profile page, etc.

ID: UIR1 Home/splash page (All available listings)

  • Description: Given the user has accessed the website, the home page is display which contains all available listings.

  • Rationale: In order for the user to view the website

  • Dependency: N/A

    ID: UIR2 Specific listing page

    • Description: Given the user is on the home page, they can view a specific listing where they can later checkout. This applies to sold listings too via the sold listings page.

    • Rationale: In order for the user to view a specific listing.

    • Dependency: UIR1, UIR12

      ID: UIR3 Checkout page

      • Description: If the user is logged in and on an available specific listing, they can be taken to a page where they can checkout with PayPal API via a button. The PayPal button opens a new window requiring PayPal login then checking out with user-specified information.
      • Rationale: For the user to able to checkout a listing.
      • Dependency: UIR2

    ID: UIR4 Filter listings

    • Description: If the user is on the home page, they can filter listings with drop down menus of categories from a column sidebar of garment type, size, condition, and color. This applies to the sold listings page too.
    • Rationale: For the user to be able to use the website
    • Dependency: UIR1, UIR12

    ID: UIR10 Wishlist a listing

    • Description: If the user is viewing an available specific listing, they can press a button which adds the item to their wishlist page.
    • Rationale: For the user to be able to add listings to their wishlist.
    • Dependency: UIR2

    ID: UIR5 Register page

    • Description: Given the user is on the website, a user can go to the register page where they can register.
    • Rationale: For the user to be able to register.
    • Dependency: UIR1

    ID: UIR6 Login page

    • Description: Given the user is on the website, a user can go to the login page where they can login if they have registered.
    • Rationale: For the user to able to log in.
    • Dependency: UIR1

    ID: UIR7 Create listing page

    • Description: Given the user is on the website, a user can go to the create listing page where they can create a new listing if they are logged in.
    • Rationale: For the user to be able to create a listing of their own.
    • Dependency: UIR1

    ID: UIR8 User profile page/user live listings

    • Description: Given the user is on the website, a user can view their user profile page if they are logged in. It contains the live listings they have. They can edit and delete their listings individually via buttons with delete being delete on click and edit taking the user to an edit listing page. There is also a drawer on the left which pulls out to view links/buttons to live listings, sold listings, order history, wishlist, messages, and settings. Otherwise a login prompt will appear.

    • Rationale: For the user to able to view their profile, edit and delete their live listings.

    • Dependency: UIR1

      ID: UIR9 Order history page

      • Description: The user can view a page of their order history which contains listings they have bought. Similar to the appearance of all available, sold, and wishlist listings.
      • Rationale: For the user to be able to view their order history.
      • Dependency: UIR8

      ID: UIR13 User settings/update profile page

      • Description: The user can update their first and last name, email address, and password on this page with several forms containing their previous first name, last name, and email - the previous password is not present for security reasons.
      • Rationale: For the user to update their information/profile.
      • Dependency: UIR8

      ID: UIR14 User messages page

      • Description: They can view a page of messages they have sent and received.
      • Rationale: For the user to be able to view their messages.
      • Dependency: UIR8

      ID: UIR15 User sold listings page

      • Description: They can view a page of all the listings they have sold. Similar to the appearnce of all available listings, all sold listings, and the wishlist.
      • Rationale: For the user to be able to view their sold listings.
      • Dependency: UIR8

      ID: UIR16 Edit listing page

      • Description: Similar to create listing, there are forms to edit the picture, name, garment type, size, color, condition, price, and description of their available listing.
      • Rationale: For the user to able to edit their available listing.
      • Dependency: UIR8

      ID: UIR17 Private message page

      • Description: If the user is on their profile page, they can view page where there messages are. It contains a button for a new conversation which then pops up a new dialogue box to choose the contact to have a new conversation wtih. There are columns for conversations and contacts. There is a section displaying the messages and a send button to send messages.
      • Rationale: For the user to be able to contact other users especially in the case of purchasing their listing.
      • Dependency: UIR8

    ID: UIR11 Wishlist page

    • Description: Given the user is on the website, a user can view their wishlist which contains all the listings they have wishlisted. If the user has not wishlisted any listings, a message will be displayed stating the user has no items in their wishlist. If the user is not logged in, a login prompt will appear instead.
    • Rationale: For the user to view their wishlisted items.
    • Dependency: UIR1

    ID: UIR12 Sold listings page

    • Description: Given the user is on the website, a user can view a page of all the sold listings.
    • Rationale: To able to see past listings which have been sold.
    • Dependency: UIR1

3.2 Functional Requirements ID: FR1 Access website

  • Description: A user should be able to access the website through a url via internet browser.

  • Rationale: For the user to able to use the website

  • Dependency: N/A

    ID: FR2 View all available listings

    • Description: The home page or landing page of the website displays all available listings from the database.
    • Rationale: For the user to view all listings.
    • Dependency: FR1

    ID: FR13 View all sold listings

    • Description: If the user is on the website, they can view a page of all the listings that have been purchased or sold on the website.

    • Rationale: To able to see past listings which have been sold.

    • Dependency: FR1

      ID: FR3 Filter listings

      • Description: If the user is viewing all listings, they can filter listings by a combination of category garment type, size, condition, and color. This applies to sold listings page too.
      • Rationale: For the user to be able to filter all available listings.
      • Dependency: FR2, FR13

      ID: FR4 View specific listing

      • Description: If the user is viewing all listings, they can view the page of the specific listing. This applies to the sold listings page too.

      • Rationale: For the user to able to view a specific listing.

      • Dependency: FR2, FR13

        ID: FR11 Wishlist specific listing

        • Description: If the user is a viewing an available specific listing and is logged in, they can press a button on the the page of the specific listing to add it to their wishlist page.
        • Rationale: For the user to be able to add listings to their wishlist.
        • Dependency: FR4, FR6

    ID: FR5 User register

    • Description: A user should be able to register through the client if they are on the website. A first name, last name, email, username, and password are required. It is stored in the database

    • Rationale: For the user to register through the client.

    • Dependency: FR1

      ID: FR6 User login

      • Description: A user can login if they have registered through the client. Only the email and password are required to login. The information is from the database.

      • Rationale: For the user to login through the client

      • Dependency: FR5

        ID: FR7 Create listing

        • Description: Given a user is logged in, a user can create a new listing that requires a name, description, garment type, size, color, condition, price, along with pictures. This information is stored in the database.
        • Rationale: For the user to create new listings.
        • Dependency: FR6

        ID: FR8 Checkout listing

        • Description: Given a user is logged in and is on an available specific listing page, they are able to checkout via PayPal API.
        • Rationale: For the user to purchase created listings from other users.
        • Dependency: FR4, FR6

        ID: FR9 User profile/user live listings

        • Description: If a user is logged in, they can view a page of all the available listings still up for sale (live listings). They can edit and delete their listings individually. There is a drawer to live listings, sold listings, order history, wishlist, messages, and settings. Otherwise a login prompt will appear.

        • Rationale: For the user to view their user profile, edit and delete listings they have available.

        • Dependency: FR6

          ID: FR10 View order history

          • Description: The user can view a page of their order history which contains listings they have bought.
          • Rationale: For the user to see their order history.
          • Dependency: FR9

          ID: FR14 User settings/update profile

          • Description: The user can update their first and last name, email address, and password on this page.
          • Rationale: For the user to update their information.
          • Dependency: FR9

          ID: FR15 User messages

          • Description: They can view a page of messages they have sent and received.
          • Rationale: For the user to be able to view their messages.
          • Dependency: FR9

          ID: FR16 User sold listings

          • Description: They can view a page of all the listings they have sold.
          • Rationale: For the user to be able to view the listings they have sold.
          • Dependency: FR9

          ID: FR17 Edit listing

          • Description: If the user is on their profile page (which contains their available listings) or the user live listings page - the user can edit the picture, name, garment type, size, color, condition, price, and description of their available listing.
          • Rationale: For the user to able to edit their available listing.
          • Dependency: FR9

          ID: FR18 Private message

          • Description: If the user is on their profile page, they can go to a page where there messages are. It contains conversations (messages) with other users and the ability to add them as contacts and start new conversations with other users.
          • Rationale: For the user to be able to contact other users especially in the case of purchasing their listing.
          • Dependency: FR9

        ID: FR12 View wishlist

        • Description: If the user is logged in, they can view the listings they have wishlisted on the wishlist page. The wishlist page does not need listing(s) to be wishlisted in order to view the wishlist page. If the user is not logged in, a login prompt will appear instead.
        • Rationale: For the user to see their wishlist.
        • Dependency: FR6, FR11

3.3 Non-Functional Requirements

3.3.1 Responsive UI:

  • Description: User interaction with the client should take no longer than 5 seconds more or less.
  • Rationale: For the user to have a comfortable and responsive user experience (and so they know the client is not broken, bugged, or slow).

3.3.2 Network/database connectivity:

  • Description: All functions and interactions involving the database should take no lonegr than 5 seconds more or less.
  • Rationale: For the database to not be unresponsive and prevent flooding or slowing down of the database via infinite/slow requests.

3.3.3 Account security

  • Description: Passwords for user accounts are to be hashed
  • Rationale: For account security, accounts should not be breached with this since they are in the database.

4. Prioritization


The order of priority for threadRepo starts with establishing a functional main webpage, this means having a properly layed out design for the site. There will be some examples of listings up for a user to view. Users will also have the ability to create a profile that incorporates login capabilities.

The following item in the list of priorities for threadRepo is the ability for users to create, delete and edit listings that they created. This will include having incorporated a database in which details about different listings will be stored and modified in.

The next item in the list of priorities for threadRepo will be to the ability for users to view their orders and history. Users will also be able to leave comments on live listenings.

Next item in the list of priorites for threadRepo are some administrative features. These features will include those that users are capable of but will include some features that will only be usable by the admin of threadRepo.

The next item in the priority list for threadRepo is a search/filter ability. This will allow users search for specific items through title descriptions or filter items based on a category of listens, price range and a range of other variables. Users will have the ability to bookmark and share listings.
Users will also have a comment section that they will be able to interact with.

The next feature in our prioritized features is a peer to peer messaging system. This will allow users to communicate with each other and help a successful transaction among them. Users will also have the ability to customize their own profile pages.

The final feature for threadRepo will be UI/UX polishing and minor tweaks to some of the functionality of the site.

5. Diagrams


## Use Case Diagram

Class Diagram

Clone this wiki locally