diff --git a/docs/diagrams/system/authentication_packages.png b/docs/diagrams/system/authentication_packages.png new file mode 100644 index 00000000..4576e7cd Binary files /dev/null and b/docs/diagrams/system/authentication_packages.png differ diff --git a/docs/diagrams/system/authentication_packages.puml b/docs/diagrams/system/authentication_packages.puml new file mode 100644 index 00000000..bc069e70 --- /dev/null +++ b/docs/diagrams/system/authentication_packages.puml @@ -0,0 +1,7 @@ +@startuml packages +set namespaceSeparator none +package "authentication" as authentication #aliceblue { +} +package "authentication.auth_tools" as authentication.auth_tools #aliceblue { +} +@enduml diff --git a/docs/instructions/p0.md b/docs/instructions/p0.md index 8895ba8b..c371ae83 100644 --- a/docs/instructions/p0.md +++ b/docs/instructions/p0.md @@ -12,18 +12,18 @@ One member of your group should fork the [template repository](https://github.co Replace the following information with your team's information. Remember that two people working on the same file at the same time can cause merge conflicts, so be sure to communicate with your team members to avoid this. Before you make any changes, pull the latest changes from the `main` branch to your local machine. After you make your changes, commit and push them to the `main` branch. Alternatively, one person can make all required changes to this document and then push them to the `main` branch. -- **Team Member Name:** Jane Doe - - **Github Username:** jdoe - - **Niner Net ID:** jdoe -- **Team Member Name:** John Doe - - **Github Username:** jdoe1 - - **Niner Net ID:** jdoe1 -- **Team Member Name:** Tim H - - **Github Username:** electric-sun-20 - - **Niner Net ID:** theideck -- **Team Member Name:** Greg T - - **Github Username:** vville-film-archives - - **Niner Net ID:** gturk +- **Team Member Name:** Alberto Olivi + - **Github Username:** olivialba + - **Niner Net ID:** aolivi +- **Team Member Name:** Abdulrahamn Aljabali + - **Github Username:** aaljabali1 + - **Niner Net ID:** aaljabal +- **Team Member Name:** Alima Conde + - **Github Username:** alimacnde + - **Niner Net ID:** aconde4 +- **Team Member Name:** Jacob George + - **Github Username:** jgeorg24 + - **Niner Net ID:** jgeorg24 ## Task 3: Commit and Push Changes diff --git a/docs/instructions/p1.md b/docs/instructions/p1.md index c090556e..46791ce8 100644 --- a/docs/instructions/p1.md +++ b/docs/instructions/p1.md @@ -6,10 +6,10 @@ Fill the document out following the guidelines listed in each section. Maintain ## Group Members -- [Name](mailto:email@uncc.edu) -- [Name](mmailto:email@uncc.edu) -- [Name](mmailto:email@uncc.edu) -- [Name](mmailto:email@uncc.edu) +- [Alberto Olivi](mailto:aolivi@uncc.edu) +- [Jacob George](mailto:jgeorg24@uncc.edu) +- [Abdulrahamn Aljabali](mailto:aaljabal@uncc.edu) +- [Alima Conde](mailto:aconde4@uncc.edu) ## Revisions @@ -18,6 +18,9 @@ When a change is made to the document, a new revision should be created. The rev | Version | Date | Description | Author | Reviewed By | | --- | --- | --- | --- | --- | | 1.0 | 03/22/23 | Initial draft | [David Gary](mailto:dgary9@uncc.edu) | [David Gary](mailto:dgary@uncc.edu) | +| 1.1 | 07/17/23 | AO added: Requirements, Constraints, Use cases, User stories, Glossary | [Alberto Olivi](mailto:aolivi@uncc.edu) | [Alberto Olivi](mailto:aolivi@uncc.edu) | +| 1.2 | 07/17/23 | JG added: Requirements, Constraints, Use cases, User Stories, Glossary | [Jacob George](mailto:jgeorg24@uncc.edu) | [Jacob George](mailto:jgeorg24@uncc.edu) | +| 1.3 | 07/17/23 | AA added: Requirements, Constraints, Use cases, User Stories, Glossary | [Abdulrahamn Aljabali](mailto:aaljabal@uncc.edu) | [Abdulrahamn Aljabali](mailto:aaljabal@uncc.edu) | ## Table of Contents @@ -30,7 +33,7 @@ When a change is made to the document, a new revision should be created. The rev ## Introduction -In this section, you should give a brief overview of what your project will be. Describe the software system you are building and what problems it solves. You should also give a short description of the stakeholders (users of the system) and what their needs are. There is no set formatting requirement, but you should maintain a consistent structure across future sections. Not all members must contribute to this section. +This project's objective is to develop an easy-to-use online store using a combination of Python, CSS, and HTML. Our goal is to provide a superior electronic shopping experience by showcasing a diverse selection of meticulously curated high-quality products, with a particular focus on the tech field. We are hoping to integrate many useful as well as eye catching elements for the store to set us apart from the competition. ## Requirements @@ -49,10 +52,110 @@ Each group member must supply at least three functional requirements for the pro - **Rationale:** A short description of why the requirement is important. This should be a single sentence that describes why the requirement is important. - **Testing:** A short description of how the requirement can be tested. This should be a single sentence that describes how the requirement can be tested. +- **REQ-1:** (AO) + - **Description:** The online store should display a website logo that redirects to the site's homepage. + - **Type:** Functional + - **Priority:** 3 + - **Rationale:** This function allows for easy navigation, and easy access to the homepage for customers. + - **Testing:** Can be tested by clicking on the website logo and that it redirects the user to the homepage everytime. + +- **REQ-2:** (AO) + - **Description:** The store should allow customers to make their personal accounts. + - **Type:** Functional + - **Priority:** 1 + - **Rationale:** Personal accounts allow to save information about a specific customer, like orders, wishlist, or payment methods. + - **Testing:** Test that accounts can be successfully created and they can store the customer's information and orders. + +- **REQ-3:** (AO) + - **Description:** The customers should be able to create a favorite / wishlist to save products they want. + - **Type:** Functional + - **Priority:** 2 + - **Rationale:** Easy way for customers to track items that they want and may buy in the future. + - **Testing:** Test that items can be saved to the wishlist and can be accessed again later. + +- **REQ-4:** (JG) + - **Description:** The customers should be able to add products to a shopping cart and view the contents of the cart. + - **Type:** Functional + - **Priority:** 2 + - **Rationale:** Allows users to select products for purchase and review their selections before proceeding to checkout. + - **Testing:** Test by adding products to the cart and verifying that the products are added to the cart. + +- **REQ-5:** (JG) + - **Description:** The online store should provide a product filtering and sorting feature. + - **Type:** Functional + - **Priority:** 1 + - **Rationale:** Easy way for customers to shop by filtering options, helping customers narrow down their search. + - **Testing:** Test the filtering and sorting functionality by applying different filters and verifying that the displayed products are sorted. + +- **REQ-6:** (JG) + - **Description:** The customers should be able to have a guest checkout option for customers who prefer not to create an account. + - **Type:** Functional + - **Priority:** 1 + - **Rationale:** Easy way for customers who don't want to make an account check out fast. + - **Testing:** Test while checkout to see if customer has to sign in or not with account information. + +- **REQ-7:** (AA) + - **Description:** The store must be able to display thew items neatly showing a picture of the item with it's name and price + - **Type:** Functional & visual + - **Priority:** 1 + - **Rationale:** Having neat and visually appealing items displayed is a bonus for the website as the customers can see the products + directly. + - **Testing:** Create some items, and when checking the items page see how they display. + +- **REQ-8:** (AA) + - **Description:** Create a database system that stores all information of the store including but not limited to: customers, items, carts, orders. + - **Type:** Functional + - **Priority:** 1 + - **Rationale:** the database is a must in order to save all the information and be able to provide updated information of the online store as that information is constantly being modified and viewed. + - **Testing:** load the database with some basic data and interact with every component (functions) of the online store and see if database is updating accordingly or is missing parameters. + +- **REQ-9:** (AA) + - **Description:** The online must keep track of number of items in stock and display an out of stock logo when quantity reaches zero. + - **Priority:** 2 + - **Rationale:** if a product is out of stock it should be made apparent to the customer as soon as possible as not to waste time clicking on the product and seeing it is no longer available. + - **Testing:** set item stock to 0 and see if it updates accordingly when displaying products. + +-**REQ-10:** (AC) + -**Description:** A function that will display the customer's total amount in dollars. + -**Type:** Functional + -**Priority:** 1 + -**Rationale:** Allows payments to be accepted and recieve correct amount + -**Testing:** Can be tested by adding items and checking out + +-**REQ-11:** (AC) + -**Description:** A function that will allow customers to express their feedback or experience + -**Type:** Functional + -**Priority:** 3 + -**Rationale:** Allows customer to share their feelings and experience to improve store quality for the future. + -**Testing:** Can be tested by implementing survey option where all responses will be stored. + +-**REQ-12:** (AC) + -**Description:** A feature that will allow customer to search for a specific item. + -**Type:** Functional + -**Priority:** 2 + -**Rationale:** Allows for easy and quick experience for the customer's desires. + -**Testing:** Can be tested by having multiple search results that are displayed when keywords are written in search bar. + ## Constraints In this section, you should list any constraints that you have for the project. Each group member must supply at least two constraints. These can be constraints on the project itself, the software system, or the stakeholders. Constraints can be anything that limits the scope of the project. For example, that this project's template code is written using Flask and Python constitutes a constraint on the backend of the project. Constraints can also be things like the required timeline of the project. Be creative. +- **1**: Resource Constraint (AO): The project team consists of four members, limiting the amount of work that can to be done to complete the project before the deadline. All communication and coordination is conducted online, which can provide an additional constraint in teamwork. + +- **2**: Programming Knowledge Constraint (AO): The team may not have all the required or needed knowledge to successfully complete the entire project, or fix every problem/bug that we may find; possibly resulting in additional challenges that will take up more of our time. + +- **3**: Language Constraint (JG): Python, CSS, and HTML must be the only programming languages and frameworks used in the development of the online store. + +- **4**: Time Constraint Constraint (JG): The project has a strict deadline, which limits the available time for development, testing. + +- **5**: Uniquness constraint (AA): The project's topic is derived from a set of templates that every group is going to put to use, so having a truly unique project, visuals and functionalities in order to set us apart from other teams is going to take a lot of creativity. + +- **6**: lack of functionalities constraint (AA): due to the team's lack of professional programming expertise, it might be hard to come up with functionalities that you might expect to have in a regular online shop such as automated payments, advanced visuals and other advanced functionalities which makes other functionalities kind of bland and more criticised. + +-**7**:Time Constraint(AC): Unlike Spring and Fall semesters, this summer course is fast-paced and there's not much time to spend doing research and planning out ideas. We just have to kind of start and work with the limited time we all have. + +-**8**:Software/Platform Constraint(AC): Must be available to all users on various devices and web browers. For example, we must adhere to the many screen resolutions that exist. + ## Use Cases In this section, you should list use cases for the project. Use cases are a thorough description of how the system will be used. Each group member must supply at least two use cases. Each use case should be written in the following format: @@ -63,6 +166,67 @@ In this section, you should list use cases for the project. Use cases are a thor - **Preconditions:** A list of the preconditions for the use case. This should be a list of the preconditions for the use case, which are the conditions that must be met before the use case can be executed. Continuing with the restaurant example, the customer must have money in their wallet and the cashier must be logged in to the system before the use case of ordering food can be executed. - **Postconditions:** A list of the postconditions for the use case. This should be a list of the postconditions for the use case, which are the conditions that must be met after the use case has been executed. Continuing with the restaurant example, the customer must have their food and the cashier must have the customer's money after the use case of ordering food has been executed. +- **UC-1:** (AO) + - **Description:** The customer register a new account. + - **Actors:** Customer, Registering System + - **Preconditions:** + - The customer must have access to the store website. + - The customer must have an email. + - **Postconditions:** + - The customer will have a registered a new account. + - The customer can log in the system with that new account. + +- **UC-2:** (AO) + - **Description:** The customer search for a product. + - **Actors:** Customer, Search Database + - **Preconditions:** + - The website must be online and available to the customer. + - **Postconditions:** + - The customer will see results that match their search request. + - The customer can click on a product to open the product's page. + +- **UC-3:** (JG) + - **Description:** The customer adds a product to their shopping cart. + - **Actors:** : Customer, Shopping Cart + - **Preconditions:** + - The website must be online and available to the customer. + - The product must be available in the online store. + - **Postconditions:** + - The product is added to the customer's shopping cart. + - The shopping cart updates with the added product and its quantity. + +- **UC-4:** (JG) + - **Description:** The customer completes a purchase. + - **Actors:** Customer, Checkout Function + - **Preconditions:** + - The website must be online and available to the customer. + - The customer must have items in their shopping cart. + - **Postconditions:** + - The payment is processed and confirmed. + - The purchased items are removed from the customer's shopping cart. + +- **UC-5:** (AA) + - **Description:** The customer login into their account. + - **Actors:** Customer, login System + - **Preconditions:** + - The customer must have access to the store website. + - The customer must have an already registered account. + - the customer must enter the correct username and password. + - **Postconditions:** + - The customer will now have access to their account on the system. + - The customer can view their favorties, wishlist, and order history. + +- **UC-6:** (AA) + - **Description:** The administrator (user still unclear) adds a new product. + - **Actors:** admin, admin page + - **Preconditions:** + - The adminstrator must have an account in the database. + - The user must be logged in as an administrator. + - **Postconditions:** + - A newly added product will be available in the store. + - the new product is registred in the database. + + ## User Stories In this section, you should list user stories for the project. User stories are a short description of how a user will be interacting with the system. Each group member must supply at least two user stories. Each user story should be written in the following format: @@ -71,6 +235,30 @@ In this section, you should list user stories for the project. User stories are - **Type of User:** The type of user that the user story is for. This should be a single word that describes the type of user. For example, a user story for a customer might be `Customer` and a user story for an administrator might be `Admin`. - **Description:** A description of the user story that gives a narrative from that user's perspective. This can be any length, but it must paint the picture of what the user wants to do, how they intend to do it, why they want to, and what they expect to happen. +- **US-1:** (AO) + - **Type of User:** Customer + - **Description:** As a customer, I want to be able to search directly for a product without having to register an account. I want to be able to go the store, look into the category that I want and search for any products that matches my description. + +- **US-2:** (AO) + - **Type of User:** Administrator + - **Description:** As an administrator, I want to be able to go into the site database to see and track the inventory, as well as any product that was sold, while also being able to sort the inventory alphabetically, by price, or date sold. + +- **US-3:** (JG) + - **Type of User:** Customer + - **Description:** As a customer, I want to be able to complete a purchase as a guest without the need to create an account, so that I can make a quick purchase without providing additional personal information. + +- **US-4:** (JG) + - **Type of User:** Administrator + - **Description:** As an administrator, I want to be able to manage customer orders, including checking order data and changing order statuses. + +- **US-5:** (AA) + - **Type of User:** customer + - **Description:** As a customer i want to be able to log into the store system and access my past orders as well as my favorite items. + +- **US-6:** (AA) + - **Type of User:** Administrator + - **Description:** As an administrator, I want to be able to add new products and be able to edit their description, quantity or update their images. + ## Glossary In this section, you should list any terms that are used in the document that may not be immediately obvious to a naive reader. Each group member must supply at least one term. Each term should be written in the following format: @@ -78,6 +266,15 @@ In this section, you should list any terms that are used in the document that ma - **Term:** The term that is being defined. This should be a single word or phrase that is being defined. - **Definition:** A definition of the term. This should be a short description of the term that is being defined. This should be a single sentence that describes the term. +- **Term:** Database (AO) + - **Definition:** A collection of structured information or data that is stored electronically and can be easily accessed and managed. Here, it's used to store products, orders and user's information. + +- **Term:** Function (JG) + - **Definition:** A block of code that performs a specific task when called, taking in inputs and producing outputs. In this example it could be multiple things including the checkout function that allows customers to make a purchase with the input being the items in the shopping cart. + +- **Term:** constraint (AA) + - **Definition:** a constraint is a limitation or restriction to be able to do or achieve something. + Try to only list terms that a naive user would not understand. ## Submission Details