Skip to content
Martim de Carvalho e Sousa Pinto da Silva edited this page Jun 12, 2020 · 1 revision

A9: Product

The project consists in developing a global marketplace which specializes in the sale of gaming related digital products using redemption keys.

By the end of this artefact, we present a functional product of our platform

Keyshare is an online shop with two greater sections:

  • The user side - Where we can sell and buy games, with the help of a shopping cart. After buying there is a possbility to review/report the seller. We can browse and search for the products we want.
  • The admin side - Where we can edit/add/delete all the information that the user deal with it. Games, user banning, FAQ edition, report reply

1. Installation

The project was developed using docker technology. In order to run our docker image you must run the following command:

docker run -it -p 8000:80 -e DB_DATABASE="lbaw2043" -e DB_USERNAME="lbaw2043" -e DB_PASSWORD="AS810664" lbaw2043/lbaw2043

2. Usage

URL to the product: http://lbaw2043.lbaw-prod.fe.up.pt

2.1. Administration Credentials

Administration URL: http://lbaw2043.lbaw-prod.fe.up.pt/admin

Username Password
ssn SergioNunes123

2.2. User Credentials

Type Username Password
basic account ssn SergioNunes123
banned user trustlessuser123 123456789

2.3. Paypal Sandbox Account

Email Password
sb-qy3q31718490@personal.example.com mobilenumber

2.4 Source Code

The source code can be found on the group repository in gitlab on the following link:

https://git.fe.up.pt/lbaw/lbaw1920/lbaw2043

3. Application Help

Keyshare was developed keeping simplicity and acessibility topics in mind, for that reason, there was no reason to implement help menus pretty elaborated. Nevertheless, we implement a FAQ simple menu acessible via footer in every user page.

In this menu we can access the main information the user needs to know about Keyshare. Furthermore, with those topics in mind, we take advantage of the placeholder feature of HTML5 to ensure our user don't get lost in our website.

4. Input Validation

The majority of the user side pages that include input have been validated. Those with sensitive information are always being checked in both sides user side and server side.

The validation user side is being made using Javascript Regex. One exemple, between many, it's the user side where we define
/^(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.[@$!%?&])[A-Za-z\d@$!%?&]{8,}$/

Regex for password change.

Server side validation is made using laravel request validator, sometimes when needed, per example with passwords, we define Regex to enforce laravel standard constraints.

One example of using of this validations are used to enforce the request of offer adding as following.

On admin side all requets are validated using Laravel validator, no user side validation is made.

In addition we use Laravel Policies to ensure login and not banning restrictions in the access to some elements. Admin checking is also made admin side

5. Check Accessibility and Usability

6. HTML & CSS Validation

All HTML pages from the user side have been validated. They present some errors and many warnings. Some changes have been made, but there details that would change with bootstrap features, like modals that are incompatible with the W3C standards. The files of validation are uploaded in a PDF joining all elements

The CSS validation was done to the files that contain major information, since other are files used to constantes or some lines that are specific to an hotfix like Paypal layout or progress bar. The results return a great number of error, but all of the same time, W3C validator can't recognize constant CSS 3 values. This constants refer to color tones used in the platform, ignoring this limitation, any CSS file have errors. The results can be found in the folder dedicated to CSS validation.

7. Revisions to the Project

From the previous iterations util the final product the following change have been made and for the following reasons:

  • Image table name on SQL was changed to Picture - Avoid conflits with the library image of laravel intervention.
  • Was added the password_resets table to the SQL script - Required table by the password reset mechanism.
  • By the time of the A3 around 90% of the HTML code was according with the bootstrap generic examples, based in < div > tags. We decrease this percentage to 15%.
  • Password recovery features were added to the initial project.
  • A new trigger to remove offers canceled by the owner from the clients cart was created - Help the consistence of data.
  • A new feature of displaying a gif spinning while images are loading have been added to the project.

8. Implementation Details

8.1. Libraries Used

The libraries used in the project were the following:

  • Bootstrap - A graphical design library for fast mobile first development
  • Intervention Image - Laravel library to create, resize and convert images - This library it's used in places we deal with image uploading
  • Fonts Awesome - HTML icons library
  • Paypal Sandbox(braintree) - Library used to proceed with Paypal Payments
  • Socialite - Google Login library

8.2 User Stories

US Identifier Name Priority Team members State
US01 Search Product High Martim Silva e Luís Ramos 100%
US02 Search Filters High Martim Silva e Luís Ramos 100%
US03 View Product High José Guerra e Rúben Almeida 100%
US04 View Shopping Cart High José Guerra e Rúben Almeida 100%
US05 Browse High Martim Silva e Luís Ramos 100%
US06 Sort Search Results Medium Martim Silva e Luís Ramos 100%
US07 View Seller Reviews Medium Martim Silva 100%
US08 View Shopping Cart High José Guerra e Rúben Almeida 100%
US09 Manage Shooping Cart Items Medium Rúben Almeida e José Guerra 100%
US10 View Seller Profile Medium José Guerra, Martim Silva, Luís Ramos 100%
US11 Save Shooping Cart Items Low Rúben Almeida 100%
US12 FAQ Low Martim Silva 100%
US13 View Discounts Low José Guerra 100%
US14 Sign Up High Luís Ramos 100%
US15 Login High Luís Ramos 100%
US16 Reset Password Medium Rúben Almeida 100%
US17 Sign Up Using External API Low Martim Silva 0%
US18 Login Using External API Low Martim Silva 100%
US19 Logout High Luís Ramos 100%
US20 Account Deletion High José Guerra 100%
US21 Edit Profile High José Guerra, Martim Silva, Rúben Almeida 100%
US22 Purchases History Medium José Guerra, Martim Silva 100%
US23 Sales History Medium José Guerra 100%
US24 Shopping Cart Preservation Medium Rúben Almeida 100%
US25 Sell Product High Luís Ramos 100%
US26 Active Offers Medium José Guerra 100%
US27 Update Offer Medium Luís Ramos 100%
US28 Exclude Offer Medium Luís Ramos 100%
US29 Checkout Cart Medium José Guerra 100%
US30 Reply to Reports Low 0%
US31 Batch Sell Low Luís Ramos 100%
US32 Product Discount Low José Guerra 100%
US33 Transactions using Paypal Low José Guerra 100%
US34 Transaction Feedback High Martim Silva, Ruben Almeida 100%
US35 Report Transaction Problem Medium Martim Silva 100%
US36 Unban appeal Low Luis Ramos 100%
US37 Add Products High Rúben Almeida, 100%
US38 Admin Login High Rúben Almeida 100%
US39 Admin Sign Out High Rúben Almeida 100%
US40 Product Search Medium Rúben Almeida, Luís Ramos 100%
US41 User Search Medium Luís Ramos 100%
US42 User Ban Medium Luís Ramos 100%
US43 Product Edit Medium Rúben Almeida 100%
US44 Product Delete Medium Rúben Almeida 100%
US45 Access to Users' Reports Medium Luís Ramos 100%
US46 Review Delete Medium Luís Ramos 100%
US47 Manage Game Categories Low Rúben Almeida 100%
US48 Manage Gaming Platforms Low Rúben Almeida 100%
US49 Manage Game Genres Low Rúben Almeida 100%
US50 Manage FAQ Low Luís Ramos 100%
US51 Check Transactions Low Luís Ramos 100%
US52 Remove User Ban Low Luís Ramos 100%
US53 Manage ban lift appeals Low Luís Ramos 100%

Revision history

Changes made to the first submission:


GROUP2043, 03/06/2020