# A2: Actors and User Stories <!-- Brief presentation of the product and artefact goals --> The following documentation refers to an online store that aims to provide a bridge between local farmers and consumers by selling green, sustainable vegetables, fruits and gardening supplies. This artifact contains the specification of the actors and their users stories, serving as agile documentation of project requirements. ## 1. Actors For the online store, the actors are represented in Figure 1 and described in Table 1. <!-- > Diagram identifying actors and their relationships`--> ![Actors UML Diagram](https://i.imgur.com/3OlYmOG.png) *Figure 1: Actors' UML Diagram* <!-- Table identifying actors, including a brief description and examples. --> | Identifier | Description | Example | |------------|-------------|---------| |User |Generic user that has access to public information such has store products|n/a| |Visitor |Unauthenticated user that can view the catalog of the products, add products to cart and register himself in order to make a purchase|n/a| |Authenticated User | Authenticated user that has more available tools than a Visitor | John | |Customer |Authenticated user that can purchase products, manage private informations such as billing address, access its own purchase history and leave product reviews|John | |Supplier |Authenticated user that can add and remove products that he provides to the store|Seeds Inc.| |ReviewOwner |Authenticated user that belongs to the same location as the creator of a review and can change the existing data, having bought a product and not being a supplier|John| |ProductOwner |Authenticated user that belongs to the same location as the creator of an item and can change the existing information and quantity existent or delete it|Seeds Inc.| |Administrator|Authenticated user that can manage every aspect of the system, both products and accounts|admin| *Table 1: Actors' description* ## 2. User Stories For the online shop, consider the user stories that are presented in the following sections. <!-- > User stories organized by actor. > For each actor, a table containing a line for each story, and for each user story: an identifier, a name, a priority, and a description (following the recommended structure). --> ### User | Identifier | Name | Priority | Description | |------------|------|----------|-------------| | US101 |See home |High |As a User, I want to access home page, so that I can see a brief web store presentation | | US102 |See product info |High |As a User, I want to see the product information, so that I can see the price, availability, and reviews| | US103 |Search and filter|High |As a User, I want to search and filter all products, so that I can find products easily| | US104 |Browse products |High |As a User, I want to browse the products, so that I can see and compare several products at the same time| | US105 |Browse suppliers |High |As a User, I want to see all suppliers, so that I can view stores products| | US106 |See about |Low |As a User, I want to access the about, so that I can see a complete web store description, contact informations and frequently asked questions| *Table 2: Users' user stories* ### Visitor | Identifier | Name | Priority | Description | |------------|------|----------|-------------| | US201 |Sign-in | High | As a Visitor, I want to authenticate into the system, so that I can access privileged information| | US202 |Sign-up as a customer | High | As a Visitor, I want to register myself into the system as a client, so that I can authenticate myself into the system | | US203 |Sign-up as a supplier | High | As a Visitor, I want to make a request for a Supplier account to the system, so that I can authenticate myself into the system | | US204 |Add product to cart| Medium | As a Visitor, I want to add products to a temporary cart, so that I can authenticate afterwards and finish up my order | | US205 |Checkout | Medium | As a Visitor, I want to Checkout my cart, so that I can authenticate and finish my order | *Table 3: Visitor's user stories* ### Authenticated User | Identifier | Name | Priority | Description | |------------|------|----------|-------------| | US305 | Log out | High | As a Authenticated User, I want to logout from the system, so that I can access the system as a visitor or with a different account| *Table 4: Authenticated User's user stories* ### Customer | Identifier | Name | Priority | Description| | ---------- | ------------------------- | -------- | ---------- | | US401 | Checkout | High | As a Customer, I want to checkout the products in my cart so that I can purchase them | | US402 | Buy products | High | As a Customer, I want to buy the products I checked out so that I can receive them | | US403 | Add product to cart | High | As a Customer, I want to add products to my cart so that I can purchase them | | US404 | Remove product from cart | High | As a Customer, I want to be able to remove a product from my cart so that I do not buy products that were added by mistake | | | US405 |Edit account information |Medium | As a Customer, I want to be able to edit my account information, so that my details are always up-to date| | US406 | History | Medium | As a Customer, I want to be able to see my previous purchases so that I can remember which products I bought and/or reorder them | | US407 | Favorite list add | Medium | As a Customer, I want to add an item to my wish list, so that I can group my products that I like the most | | US408 | Favorite list delete | Medium | As a Customer, I want to delete an item to my wish list, so that it can reflet my current preferences| | US409 | Delete account | Low | As a Customer, I want to be able to delete my account from the system, so that I know all my data is deleted from the servers | | US410 | Write review | Low | As a Customer, I want to be able to write a review in products that I have previously bought, so that other Customers can be informed by my experience | | US411 | Cancel order | Low | As a Customer, I want to be able to cancel a order respecting the stores' cancelation policy, so that I can be reimbursed for products I no longer need to buy | | US412 | Periodic buys | Low | As a Customer, I want to be able to set a order to be repeated periodically, so that I do not have to repeat the buying process every time | | US413 | Periodic buys cancelation | Low | As a Customer, I want to be able to cancel periodic orders previously made so that I stop buying products I no longer need | | US414 | Reorder purchase | Low | As a Customer, I want to reoder a purchase from history, so that I can buy it again| *Table 5: Customer's user stories* ### Supplier | Identifier | Name | Priority | Description | |------------|------|----------|-------------| | US501 |Add product |High |As a Supplier, I want to add a product (plants, seeds, gardening supplies, etc.), so that it can be consulted and bought by clients| | US502 |Create bundles |Medium| As a Supplier, I want to create bundles, so that I can have multiple products selling as one | | US503 |Create discount coupons|Medium| As a Supplier, I want to create discount coupons, so that I can make a promotion on my products| | US504 |Delete account |Medium| As a Supplier, I want to be able to delete my account from the system, so that I know all my data is deleted from the servers| | US505 |Edit account |Medium| As a Supplier, I want to be able to edit my account in the system, so that my information remains up-to date| *Table 6: Supplier's user stories* ### ProductOwner | Identifier | Name | Priority | Description | |------------|------|----------|-------------| | US601 |Update product |High|As a Product Owner, I want to change the information of a product, so that it is up-to-date| | US602 |Update discount coupons|High|As a Product Owner, I want to edit previously created discount coupons for two hours after it was created, so that I can correct any mistakes made when creating it| | US603 |Delete product |High|As a Product Owner, I want to remove a product from the website, so that it can reflect its unavailability| *Table 7: ProductOwner's user stories* ### ReviewOwner | Identifier | Name | Priority | Description | |------------|------|----------|-------------| | US701 |Change review |Low | As a ReviewOwner, I want to be able to change a review in products that I have previously bought and reviewed, so that my opion on that product is up to date | | US702 |Delete review |Low | As a ReviewOwner, I want to be able to delete my review of a products, so that it no longer appears to other customers| *Table 8: ReviewOwner's user stories* ### Administrator | Identifier | Name | Priority | Description | |------------|------|----------|-------------| | US801 |Accept supplier |High |As an Administrator, I want to accept a supplier, so that they can sell their products in the online shop| | US802 |Remove product |High |As an Administrator, I want to remove a product, so that all products comply to the Terms of service | | US803 |Add product |High |As an Administrator, I want to add a product, so that if a supplier is having problems in adding the product, I can do it myself| | US804 |Change product |High |As an Administrator, I want to change a product, so that if a supplier is having problems in adding the product, I can do it myself | | US805 |Remove review |Medium |As an Administrator, I want to remove a review, so that all review comply to the Terms of service| | US806 |Remove customers/suppliers|Medium |As an Administrator, I want to remove a customer or supplier, so that all customers and suppliers comply to the Terms of service| *Table 9: Administrator's user stories* ## 3. Supplementary Requirements This annex contains business rules, technical requirements and other non-functional requirements on the project. <!--> Annex including business rules, technical requirements, and restrictions. > For each subsection, a table containing identifiers, names, and descriptions for each requirement.--> ### 3.1. Business rules A business rule defines or constrains one aspect of the business, with the intention of asserting business structure or influencing business behaviour. | Identifier | Name | Description | |------------|------|-------------| | BR01 | Acceptance | Only an admin can accept/deny a supplier account request | | BR02 | Order canceling | After a order is made, there's a limited time to cancel it | | BR03 | Writting a review | A Customer can only review previously bought products | | BR04 | Supplier deleted account| When a Supplier account is deleted, their products are kept in the database for Customer history, but are removed from browsing | | BR05 | Customer deleted account| User data is deleted from the system. Previously made reviews are kept but username is changed to "Generic user" | | BR06 | Promotion maintenance | Suppliers can't change or delete a promotion after two hours of its creation | | BR07 | Prohibition of underages| Customers with less then 18 years can't be a Customer | | BR08 | Out of stock products | Out of stock products can't be bought by the consumers | | BR09 | Date Coherence | The estimated date of arrival of the product should be latter than the date of purchase | | BR10 | Self Upvote | Review owners can not upvote their own reviews | ### 3.2. Technical requirements | Identifier | Name | Description | |------------|------|-------------| | **TR01** | Usability | The system should be simple and easy to use | | TR02 | Performance | The system should have response times shorter than 2s to ensure the user's attention | | TR03 | Web application | The system should be implemented as a Web application with dynamic pages (HTML5, JavaScript, CSS3 and PHP) | | TR04 | Portability | The server-side system should work across multiple platforms (Linux, Mac OS, etc.) | | TR05 | Database | The PostgreSQL 13.0 database management system must be used | | **TR06** | Security | The system shall protect information from unauthorised access through the use of an authentication and verification system | | **TR07** | Robustness | The system must be prepared to handle and continue operation when runtime errors occur | | TR08 | Scalability | The system must be prepared to deal with the growth in the number of users and their actions |operations | TR09 | Ethics | The system must respect the ethical principles in software development | We will strive to create a platform with a focus on UI/UX for an improved usability. Security will also be important to keep intruders from accessing clients or suppliers accounts as well as a Robustness of our project to handle any errors that my occur ### 3.3. Restrictions | Identifier | Name | Description | |------------|------------|-------------| | C01 | Deadline | The system should be ready to be used near the beginning of June | | C02 | FrameWorks | Usage of certain frameworks require the approval of a teacher |