Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
f881251
Add files via upload
vishaldasari1 May 4, 2023
404c078
Update SRS.md
vishaldasari1 May 4, 2023
7ade0d5
Update SRS.md
vishaldasari1 May 5, 2023
d4e6b47
Add files via upload
vishaldasari1 May 5, 2023
8cf585e
Update requirements.txt
vishaldasari1 May 5, 2023
7f80af4
Create packages_initial.puml
vishaldasari1 May 10, 2023
d9dc150
adding plantuml files
vishaldasari1 May 10, 2023
c01f9fd
adding plantuml files
vishaldasari1 May 10, 2023
7934f54
adding plantuml files
vishaldasari1 May 10, 2023
3a27d21
adding plantuml files
vishaldasari1 May 10, 2023
5690a64
adding plantuml files
vishaldasari1 May 10, 2023
ccd16ba
adding plantuml files
vishaldasari1 May 10, 2023
098bd08
adding plantuml files
vishaldasari1 May 10, 2023
decae25
Create classes_intial.puml
vishaldasari1 May 10, 2023
66b5f28
Create classes.puml
vishaldasari1 May 10, 2023
97c601f
adding plantuml files
vishaldasari1 May 10, 2023
459cd04
adding plantuml files
vishaldasari1 May 10, 2023
4a5c990
adding plantuml files
vishaldasari1 May 10, 2023
9d04490
adding plantuml files
vishaldasari1 May 10, 2023
3b42d02
adding plantuml files
vishaldasari1 May 10, 2023
ff91577
Create classes.puml
vishaldasari1 May 10, 2023
0fd87f3
umls made
vishaldasari1 May 10, 2023
c0adc69
adding plantuml files
vishaldasari1 May 10, 2023
e5969e6
adding plantuml files
vishaldasari1 May 10, 2023
245816c
adding plantuml files
vishaldasari1 May 10, 2023
91c5361
adding plantuml files
vishaldasari1 May 10, 2023
6daeff3
addin
vishaldasari1 May 10, 2023
d73ef94
adding diagrams for use cases
vishaldasari1 May 10, 2023
9089da3
adding diagrams for use cases
vishaldasari1 May 10, 2023
97a7121
adding diagrams for use cases
vishaldasari1 May 10, 2023
f8a3822
adding diagrams for use cases
vishaldasari1 May 10, 2023
d1697b8
Create cases
vishaldasari1 May 10, 2023
e90afce
adding diagrams for use cases
vishaldasari1 May 10, 2023
c28deea
adding diagrams for use cases
vishaldasari1 May 10, 2023
94a24b6
adding diagrams for use cases
vishaldasari1 May 10, 2023
72ef09f
Update management.puml
vishaldasari1 May 10, 2023
c077cd7
adding core use-case sequence diagrams
vishaldasari1 May 10, 2023
aa145b9
adding core use-case sequence diagrams
vishaldasari1 May 10, 2023
d6dc5de
adding core-use case sequence diagrams
vishaldasari1 May 10, 2023
f99ca5b
adding core use-case sequence diagrams
vishaldasari1 May 10, 2023
6d795cd
adding core-use case sequence diagrams
vishaldasari1 May 10, 2023
2adff17
adding core use-case sequence diagrams
vishaldasari1 May 10, 2023
cde97db
adding core-use case sequence diagrams
vishaldasari1 May 10, 2023
c46250c
adding core use-case sequence diagrams
vishaldasari1 May 10, 2023
7f6e196
added filter use-case diagram
vishaldasari1 May 10, 2023
dc567f1
adding filter use-case diagram
vishaldasari1 May 10, 2023
fb04280
adding implementation.md
vishaldasari1 May 10, 2023
bc23d0d
final update
vishaldasari13 May 10, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
204 changes: 204 additions & 0 deletions SRS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
# Software Requirements Specification Document

This serves as a template for each projects' Software Requirements Specification (SRS) document. When filling this out, you will be required to create user stories, use cases, requirements, and a glossary of terms relevant to your project. Each group member must contribute to every section, so it is crucial that your group's GitHub repository shows a commit history that reflects the work of each group member. It is highly recommended that you create separate branches for each member, but since this is one single document, you will need to manually merge the branches together. It is also advisable to have multiple working versions of this document (named separately) so that one person can compile the final SRS document from the multiple working versions. Ultimately, how you go about managing this is up to you, but consistent formatting, clear commit messages, and a thorough commit history with contributions from each group member are required.

Fill the document out following the guidelines listed in each section. Maintain [proper Markdown syntax](https://www.markdownguide.org/basic-syntax/) and be sure that your group has a `main` branch with this document and the entire [template repository codebase](https://github.com/david-gary/onlineStoreTemplate) either forked or downloaded and copied into your group's repository. If you have arranged to use a different codebase as a template, you do not need to have the original template included, but a `main` branch is still required.

## Group Members

* [Vishal Dasari](mailto:vdasari1@uncc.edu)

## Revisions

When a change is made to the document, a new revision should be created. The revision should be added to the table below with all information filled out.

| 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 | 04/23/23 | Added Name | [Vishal Dasari](mailto:vdasari1@uncc.edu) | [Vishal Dasari](mailto:vdasari1@uncc.edu) |
| 1.2 | 05/2/23 | Worked on Table of Contents (1-3) | [Vishal Dasari](mailto:vdasari1@uncc.edu) | [Vishal Dasari](mailto:vdasari1@uncc.edu) |
| 1.3 | 05/5/23 | Worked on Table of Contents (4-6) | [Vishal Dasari](mailto:vdasari1@uncc.edu) | [Vishal Dasari](mailto:vdasari1@uncc.edu) |

## Table of Contents

1. [Introduction](#introduction)
2. [Requirements](#requirements)
3. [Constraints](#constraints)
4. [Use Cases](#use-cases)
5. [User Stories](#user-stories)
6. [Glossary](#glossary)

## 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.

The software system that I will be building is an online gaming store. The program would display an image of the games a user could buy or rent. Stakeholders would be the users who would like to buy/rent the video games out. The stakeholder's needs would be the item that they would like to acquire.

## Requirements

Each group member must supply at least three functional requirements for the project. Each requirement should be written in the following format:

**REQ-1:** Allow users to create an account and login.
* **Description:** To access an existing user information.
* **Type:** Functional
* **Priority:** 1
* **Rationale:** Users need an account to purchase/rent games and access their saved games.
* **Testing:** Ensure the username and the password matches with our server
* **REQ-2:** Creating New Account
* **Description:** To have access to the respected user's page.
* **Type:** Functional
* **Priority:** 1
* **Rationale:** Needed to access user's account
* **Testing:** Create an account and verify that login works as expected.
* **REQ-3: Display a list of available games for purchase/rental**
* **Description: User will be able to look at the latest updates games available**
* **Type:** Functional
* **Priority:** 1
* **Rationale:** This is the core functionality of the system.
* **Testing:** Ensure that the list of games displayed is accurate and up-to-date.
* **REQ-4: Allow users to add game(s) to the shopping cart**
* **Description: To have access to adding games to your shopping cart.
* **Type:** Functional.
* **Priority:** 1
* **Rationale:** Users may want to save games for later or purchase multiple games at once.
* **Testing:** Add a game to the cart/wish list and verify that it is displayed in the appropriate section.
* **REQ-5**: Allow users to filter games based on genre.
* **Description:** User will be able to filter thorugh different genres.
* **Type:** Functional
* **Priority:** 2
* **Rationale:** Users may want to browse games within a specific genre.
* **Testing:** Check if the filter displays only games that match the selected genre.
* **REQ-6**: Allow users to search for games by title or keyword.
* **Description**: Displays current book info
* **Type:** Functional
* **Priority:** 2
* **Rationale:** Users may want to search for specific games they have in mind.
* **Testing:** Search for a known game title and verify that it is displayed in the search results.
* **REQ-7** Display game details such as title, description, release date, and rating.
* **Description:** Allows users to learn more about the game, ratings, and price etc.
* **Type:** Functional
* **Priority:** 2
* **Rationale:** Users need to know more about a game before deciding to purchase/rent it.
* **Testing:** Verify that game details displayed are accurate and match the selected game.
* **REQ-8** Allow users to view their order history.
* **Description:** Displays user's order history.
* **Type:** Fuctional
* **Priority:** 2
* **Rationale:** Users may want to view past purchases or rentals.
* **Testing:** Verify that the order history displays accurate information about past purchases/rentals.
* **REQ-9** Rate/Review games.
* **Description:** Allow users to rate and review games.
* **Type:** Functional
* **Priority:** 3
* **Rationale:** User reviews and ratings can help other users make informed decisions.
* **Testing:** Verify that users can rate and review games, and that the ratings and reviews are displayed correctly.
* **REQ-10** Provide customer support and contact information
* **Description:** Provides customer support and contact information to the user
* **Type:** Functional
* **Priority:** 4
* **Rationale:** Users may need help with purchasing or rental issues.
* **Testing:** Verify that the customer support and contact information is accurate and up-to-date.
* **REQ-11** Shipping Information
* **Description:** Asks user to enter your shipping information.
* **Type:** Functional
* **Priority:** 4
* **Rationale:** Users will get this option at the time of the payment.
* **Testing:** Enter the shiping information and see that it shows in the system.
* **REQ-12** Payment Method/Information
* **Description:** Asks the user for their payment information.
* **Type:** `Functional`
* **Priority:** 4
* **Rationale:** It is one of the last steps for buying a game.
* **Testing:** Verify the payment information in the system.

## 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.

* **Constraint 1:**
I am able to use either python, html, javascript, or flask only.
* **Constraint 2:**
I am working alone in this project
* **Constraint 3:**
No discussion or guidance from my groupmates for any cross-reference.
* **Constraint 4:**
The website should not crash
* **Constraint 5:**
The entire project should be finished within last day of final project submission.

## 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:

* **UC-1:** User Account Creation
* **Description:** A new user creates an account to access the system.
* **Actors:** User
* **Preconditions:** None
* **Postconditions:** The user has successfully created an account and can log in to the system.
* **UC-2:** User Login
* **Description:** An existing user logs into their account to access the system.
* **Actors:** User
* **Preconditions:** The user must have already created an account.
* **Postconditions:** The user has successfully logged in and can access their account page.
* **UC-3:** Browse Games
* **Description:** A user browses through the available games on the system.
* **Actors:** User
* **Preconditions:** The user must be logged in.
* **Postconditions:** The user has browsed through the available games and can view more details about a specific game.
* **UC-4:** Purchase/Rent Game
* **Description:** A user purchases or rents a game.
* **Actors:** User
* **Preconditions:** The user must be logged in and have selected a game to purchase or rent.
* **Postconditions:** The user has successfully purchased or rented a game and can access it in their account.
* **UC-5:** View Order History
* **Description:** A user views their order history.
* **Actors:** User
* **Preconditions:** The user must be logged in and have made previous purchases/rentals.
* **Postconditions:** The user has successfully viewed their order history.
* **UC-6:** Provide Customer Support
* **Description:** A user contacts customer support for assistance.
* **Actors:** User, Customer Support Representative
* **Preconditions:** The user must be logged in and have an issue that requires assistance.
* **Postconditions:** The user's issue is resolved or a solution is provided to the user.
* **UC-7:** Enter Shipping Information
* **Description:** User enters shipping information during the checkout process.
* **Actors:** User
* **Preconditions:** User has selected the game they wish to purchase and has proceeded to the checkout process.
* **Postconditions:** User's shipping information is saved in the system and is displayed on the order confirmation page.
* **UC-8:** Enter Payment Information
* **Description:** User enters payment information during the checkout process.
* **Actors:** User
* **Preconditions:** User has selected the game they wish to purchase, has entered their shipping information, and has proceeded to the payment section of the checkout process.
* **Postconditions:** User's payment information is saved in the system, the payment is processed, and the user is redirected to the order confirmation page.

## 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:

* **US-1:**
* **Type of User:** Customer
* **Description:** As a customer, I want to be able to filter games by genre so that I can find games that fit my interests easily. I expect to see a list of games that match my chosen genre.
* **US-2:**
* **Type of User:** Customer
* **Description:** As a customer, I want to be able to search for games by title so that I can find a specific game I'm interested in. I expect to be able to see the game's details once I've found it.
* **US-3:**
* **Type of User:** Customer
* **Description:** As a customer, I want to be able to see the system requirements for a game so that I can determine if my computer can run it. I expect to see a clear list of minimum and recommended requirements.
* **US-4:**
* **Type of User:** Customer
* **Description:** As a customer, I want to be able to read reviews and ratings from other users before deciding to purchase or rent a game. I expect to see an overall rating and a selection of reviews.
* **US-5:**
* **Type of User:** Customer
* **Description:** As a customer, I want to be able to see my cart's contents at all times and the total cost so that I can keep track of my purchases. I expect to be able to easily remove items from my cart if needed.

## 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:

* **Term:** User
* **Definition:** A person who interacts with the system to browse and purchase games.
* **Term:** Account
* **Definition:** A user's personal profile in the system that contains their personal information and order history.
* **Term:** Checkout Process
* **Definition:** The series of steps that a user must follow to complete a purchase or rental of a game, including entering shipping and payment information.
* **Term:** Customer Support Representative
* **Definition:** An individual who assists users in resolving issues and answering questions related to the system
2 changes: 1 addition & 1 deletion app.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from authentication.authTools import login_pipeline, update_passwords, hash_password
from database.db import Database
from flask import Flask, render_template, request
from flask import Flask, flash, render_template, request
from core.session import Sessions

app = Flask(__name__)
Expand Down
1 change: 1 addition & 0 deletions authentication/authTools.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ def login_pipeline(username: str, password: str) -> bool:
if line.split(":")[0] == username:
salt = line.split(":")[1]
key = line.split(":")[2]

return check_password(password, salt, key)
return False

Expand Down
Binary file added authentication/packages.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions authentication/packages.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@startuml packages
set namespaceSeparator none
package "authentication" as authentication #aliceblue {
}
package "authentication.authTools" as authentication.authTools #aliceblue {
}
@enduml
Binary file added authentication/packages_initial.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions authentication/packages_initial.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@startuml packages
set namespaceSeparator none
package "authentication" as authentication #aliceblue {
}
package "authentication.authTools" as authentication.authTools #aliceblue {
}
@enduml
Binary file added core/classes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
45 changes: 45 additions & 0 deletions core/classes.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
@startuml classes
set namespaceSeparator none
class "Sessions" as core.session.Sessions #aliceblue {
sessions : dict
add_new_session(username: str, db: Database) -> None
get_all_sessions() -> dict
get_session(username: str) -> UserSession
remove_session(username: str) -> None
}
class "UserSession" as core.session.UserSession #aliceblue {
cart : dict
date : datetime, NoneType
db : Database
total_cost : int
username : str
add_new_item(id: str, name: str, price: int, quantity: int, discount: float, tax_rate: float) -> None
empty_cart() -> dict
is_item_in_cart(id: str) -> bool
remove_item(id: str) -> None
submit_cart() -> None
update_item_quantity(id: str, change_to_quantity: int) -> None
update_total_cost() -> None
delete_cart(id:str) -> None
}
class "UserFilter" as core.session.UserFilter #aliceblue{
db : Database
result : array
filterByRatingHigh() -> array
filterByRatingLow() -> array
filterByGenre(genre:str) -> array
filterByDate(date:str) -> array
filterByStars(stars:int) ->array
filterByDateOld() -> array
filterByDateNew() -> array
}
class "Game" as core #aliceblue{
title: String
price : float
rating: int
genre: String
cover: String
date: datetime
getters&setters()
}
@enduml
24 changes: 24 additions & 0 deletions core/classes_intial.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
@startuml classes
set namespaceSeparator none
class "Sessions" as core.session.Sessions #aliceblue {
sessions : dict
add_new_session(username: str, db: Database) -> None
get_all_sessions() -> dict
get_session(username: str) -> UserSession
remove_session(username: str) -> None
}
class "UserSession" as core.session.UserSession #aliceblue {
cart : dict
date : datetime, NoneType
db : Database
total_cost : int
username : str
add_new_item(id: str, name: str, price: int, quantity: int, discount: float, tax_rate: float) -> None
empty_cart() -> dict
is_item_in_cart(id: str) -> bool
remove_item(id: str) -> None
submit_cart() -> None
update_item_quantity(id: str, change_to_quantity: int) -> None
update_total_cost() -> None
}
@enduml
Binary file added core/packages.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions core/packages.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
@startuml packages
set namespaceSeparator none
package "core" as core #aliceblue {
}
package "core.session" as core.session #aliceblue {
}
package "core.utils" as core.utils #aliceblue {
}
core.session --> core.utils
@enduml
Binary file added core/packages_initial.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions core/packages_initial.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
@startuml packages
set namespaceSeparator none
package "core" as core #aliceblue {
}
package "core.session" as core.session #aliceblue {
}
package "core.utils" as core.utils #aliceblue {
}
core.session --> core.utils
@enduml
47 changes: 47 additions & 0 deletions database/Contact.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<!DOCTYPE html>
<html>
<head>
<title>Customer Support and Contact Information</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<style>
body {
background-image: url('https://wallpaperaccess.com/full/183853.jpg');
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
}
</style>
<header>
<h1 style="color: white;">Customer Support and Contact Information</h1>
</header>

<main>
<section>
<h2 style="color: white;">Contact Us</h2>
<p style="color: white;">If you need any help with purchasing or rental issues, please feel free to contact us:</p>
<ul style="color: white;">
<li>Email: support@mygamestore.com</li>
<li>Phone: 1-800-MY-GAMES (1-800-694-2637)</li>
<li>Live Chat: Click the chat icon in the bottom right corner</li>
</ul>
</section>

<section>
<h2 style="color: white;">FAQs</h2>
<p style="color: white;">Here are some frequently asked questions:</p>
<ol style="color: white;">
<li><strong style="color: white;">How can I cancel an order?</strong><br>You can cancel an order by logging into your account and going to the order history page. If the order hasn't shipped yet, you can cancel it from there.</li>
<li><strong style="color: white;">How can I return a game?</strong><br>You can return a game within 30 days of purchase. Log into your account, go to the order history page, and click on the "return" button next to the game you want to return.</li>
<li><strong style="color: white;">How can I check the status of my order?</strong><br>You can check the status of your order by logging into your account and going to the order history page. The status of each order will be displayed there.</li>
</ol>
</section>
</main>

<footer>
<p style="color: white">&copy; 2023 MyGameStore. All rights reserved.</p>
</footer>
</body>
</html>
Loading