Full Name
Email
Phone number
We are currently in the process of developing a marketplace for individuals to list their domains for sale. The MVP product is almost complete, with seven remaining stories to finalize. Unfortunately, the previous backend developer had to leave abruptly due to an emergency, leaving some tasks unfinished. As the appointed tech lead, you have decided to step in and complete these tasks before the imminent launch.
The anticipated performance figures for the marketplace are as follows:
1. 1,000,000 visits every day.
2. 5,000 active domains every day.
3. 10,000 registrations per day.
You are required to complete the development of a marketplace for listing domains for sale.
The stories can be found the in the following link:
https://puiux.com/job-performance-assessment/
The developed code can be downloaded from the following link:
https://drive.google.com/file/d/1KKl1luG9ptWmqrUIL22WCrTAF64lTvd-/view?usp=sharing
After completing the coding activity, share your Github repo(s) and provide access to the following account on Github: asoltec
Public repos will not be accepted.
What business-related gaps can you identify in the marketplace application that might impact the launch of the MVP?
How do you intend to test scenarios in which multiple users place bids at the same time, taking into account the absence of QA for result validation?
The wallet system can have multiple designs. 1. Propose two or more potential solutions, providing diagrams and schemas where possible 2. Elaborate on the pros and cons of each design 3. Recommend a specific design based on the considerations of anticipated visits and transactions, as outlined in the 'Real World Scenario - Overview' section Note: this is not about monolith and microservices. It is about schema designs
Identify potential system bottlenecks and propose optimization strategies. Implementing these strategies in the code is considered a bonus
You will be implementing Role-Based Access Control (RBAC) for security and access control. You have the option to either use an existing package or design your own solution. 1. Which option do you plan to pursue? 2. If you opt for a package, which one will you choose from the following and why: (a) Laravel Permissions: https://spatie.be/index.php/docs/laravel-permission/v6/introduction (b) Bouncer: https://github.com/JosephSilber/bouncer
Reviewing Stories
Can you spot any issue in the following stories?
Title: Ability for a Customer to login to the portal using registered user credentials
User Story: As a customer user that has access to the portal, I need to be able to login to the portal using my registered credentials, so that I can access my profile.
Acceptance Criteria:
1. Given that a Customer has access to the portal, when they navigate to the login page, then they should see 3 input parameters:
Phone Number
Password (masked String input)
Login (button)
2. Given that a Customer has access to the portal and has navigated to the login page, when they enter Username and Password that match their registered credentials and click on Login, then they should be successfully logged in.
3. Given that a Customer has access to the portal and has navigated to the login page, when they enter Username and Password that do not match their registered credentials and click on Login, then they should receive an error message: "Incorrect credentials".
Title: Ability for a Customer to register
User Story: As a customer user that has access to the portal, I need to be able to create an account
Acceptance Criteria:
The customer can register and will asked for the following information:
1. Email
2. Password
3. Password confirmation
Can you spot any issue in the following story?
Title: Ability to see the grid of transactions with nicer fonts and curved borders
User Story: As a user that is responsible for managing transactions, I need the transaction list to have nicer fonts and the grid outline to be curved at the corners
User Story: As a customer user that has access to the portal, I need to be able to login to the portal using my registered credentials, so that I can access my profile.
Acceptance Criteria:
1. As a user that has access to managing transactions from the Transaction List, when I navigate to the Transaction list, then I should see that the font for the column headers is Helvetica and the data in Comic Sans.
2. As a user that has access to managing transactions from the Transaction List, when I navigate to the Transaction List, then I should see that the corners of the grid are curved borders
Can you spot any issue in the following story?
Title: Transactions Integration between Platform and VendorX
User Story: As a system that is responsible for managing transactions from vendors, I need to build an integration between our platform and their system, so that I can automate our processes
Acceptance Criteria:
1. Given that we have a platform that can preview transactions related to VendorX, when we enable the integration, we should be able to see all the required transaction details in a grid.
2. Given that we have a platform that can track transactions related to VendorX, when there are changes in the data from VendorX, then we should be able to receive a notification by email about the changes.
Can you spot any issue in the following story?
Title: Ability to filter list of transactions based on different parameters
User Story: As a user that is responsible for managing transactions in the system, I need the ability to filter the list of transactions, so that I can easily find transactions that match my requirements
Acceptance Criteria:
1. Given that a user has access to the transactions list, when they navigate to the filter panel and look at the available filters, then they should be able to see 2 calendar Date/Time input parameters with labels of Transaction Date Start and Transaction Date End.
2. Given that a user has access to the transactions list, when they navigate to the filter panel and look at the available filters, then they should be able to see a String input parameter for Customer.
3. Given that a user has access to the transactions list, when they navigate to the filter panel and look at the available filters, then they should be able to see a String input parameter for Vendor.
4. Given that a user has access to the transactions list, when they navigate to the filter panel and look at the available filters, then they should be able to see a Decimal input parameter for Transaction Cost.
5. Given that a user has access to the transactions list, when they navigate to the filter panel and look at the available filters, then they should be able to see a Decimal input parameter for Transaction Price.
6. Given that a user has access to the transactions list, when they navigate to the filter panel and look at the available actions, then they should be able to see a clickable button labelled Filter.
7. Given that a user has access to the transactions list and has navigated to the available filters, when they enter a value for Transaction Date Start but no value for Transaction Date End and click on the Filter button, then they should see all transactions with a Transaction Date greater than or equal to the Transaction Date Start filter value.
8. Given that a user has access to the transactions list and has navigated to the available filters, when they enter a value for Transaction Date End but no value for Transaction Date Start and click on the Filter button, then they should see all transactions with a Transaction Date less than or equal to the Transaction Date End filter value.
9. Given that a user has access to the transactions list and has navigated to the available filters, when they enter a value for Transaction Date Start and a value for Transaction Date End and click on the Filter button, then they should see all transactions with a Transaction Date between Transaction Date Start and Transaction Date End (inclusive).
10. Given that a user has access to the transactions list and has navigated to the available filters, when they enter a value for Transaction Date Start and a value for Transaction Date End that is less than the Transaction Date Start and click on the Filter button, then they should see an error message on the input field with the following: "Transaction Date End needs to be greater than or equal to Transaction Date Start".
11. Given that a user has access to the transactions list and has navigated to the available filters, when they enter a value for Transaction Date End and a value for Transaction Date Start that is greater than the Transaction Date End and click on the Filter button, then they should see an error message on the input field with the following: "Transaction Date Start needs to be less than or equal to Transaction Date End".
12. Given that a user has access to the transactions list and has navigated to the available filters, when they enter a value for Customer and click on the Filter button, then they should see all transactions with a Customer that partially matches the Customer filter value.
13. Given that a user has access to the transactions list and has navigated to the available filters, when they enter a value for Vendor and click on the Filter button, then they should see all transactions with a Vendor that partially matches the Vendor filter value.
14. Given that a user has access to the transactions list and has navigated to the available filters, when they enter a value for Transaction Cost and click on the Filter button, then they should see all transactions with a Transaction Cost that equals Transaction Cost filter value.
14. Given that a user has access to the transactions list and has navigated to the available filters, when they enter a value for Transaction Cost and click on the Filter button, then they should see all transactions with a Transaction Cost that equals Transaction Cost filter value.
15. Given that a user has access to the transactions list and has navigated to the available filters, when they enter a value for Transaction Price and click on the Filter button, then they should see all transactions with a Transaction Price that equals Transaction Price filter value.
16. Given that a user has access to the transactions list and has navigated to the available filters, when they leave all input parameters blank, then the Filter button should not be actionable.
Next