Challenge Overview

Challenge Objectives
  • Build part 2 of the prototype for the Digital Asset Platform using Angular 10.
  • NOTE: please register to download the full spec from the forum which contains links to the screens.
 
Project Background
  • Blockchain or Distributed Ledger Technology (DLT) is one of the most talked-about topics in the financial services industry today.
  • Blockchain is a combination of technologies that allow digital assets to be created and passed from party to party with guarantees that the assets are authentic and have not been copied or counterfeited, without needing a trusted third party to open and maintain accounts for customers.
  • If fully adopted, it will enable banks to process payments more quickly and more accurately while reducing transaction processing costs and the requirement for exceptions.
  • In order to help central banks, banks and non-banking financial corporations leverage this technology, we aim to build a digital banking product on a distributed ledger.
 
Technology Stack
  • Angular 10
  • HTML5
  • Typescript
  • CSS
 
User Roles
In this prototype please support the following new roles in addition to the previous two roles:
  • Central Bank User
  • Customer
  • Bank Operations User
 
API Integration
Although the API is not ready yet, you need to implement local controllers/services to fetch the data showing in the app from local JSON files. We should be able to replace the JSON files with actual API calls to integrate the app with the backend without much effort so hard coded data is not acceptable. This is evaluated as a major requirement.
 
Reusable Components
Please create reusable components as much as you can since as you can see many dashboard pages use the same chart / table components. This is evaluated as a major requirement.
 
General UI Requirements
  • You are expected to build the prototype following the provided design unless otherwise specified.
  • Angular 10 must be used, and browser compatibility requirements must be covered.
  • This app should be built using ngrx for state management.
  • The UI should be fluid and generally responsive to different screen sizes (desktop only, but need to support smaller size laptop screens). The minimum supported resolution should be 1280 * 720.
  • Make sure you don’t just copy & paste code to create the UI, it’s very important to maintain code reusability so that integration will be easier later. This will be evaluated in the scorecard as a major requirement.
  • Do NOT use global z-indexes.
  • No errors with production build.
  • Must pass standard lint and NPM audit.
  • A loading indicator must be shown when simulating API calls to the backend.
  • The data to be displayed must come from local JSON files and cannot be hardcoded.
  • The pages should clearly indicate invalid input as shown in the design.
  • Must follow Angular best coding practices.
  • These will be considered as major requirements.
 
Screen Requirements
Below is the list of screens that are supposed to be implemented in the challenge. Please cross-compare this with the design, and if you see any inconsistencies or have any questions, raise them in the forum for clarification/confirmation.
 
Central Bank User
After login, central bank users will see their corresponding dashboard page:
  • 65989771: On this dashboard page, all the data needs to be coming from json files and no data should be hardcoded, the charts need to be built on the fly using data from the json files as well.
  • 65989773: We need to implement the Edit, Suspend, Remove popup menu items
  • 65989774: Adding new bank needs to be implemented, and new bank should be shown in the list
 
Customer
After login, customers will see the customer dashboard:
  • 65296107
    • On this dashboard page, all the data needs to be coming from json files and no data should be hardcoded, the charts need to be built on the fly using data from the json files as well.
    • Please note the cards in the My Cards section on the right need to be scrollable.
  • 65296108
    • The user can switch to a different card to see the details
 
Customers can also navigate to the beneficiaries screen:
  • 65296111
    • Searching and clicking on the letter to jump to the names starting with that letter should work
  • 65296113
    • Adding new beneficiary should work and new beneficiary should be added to the table
    • If user clicks on the menu icon on a beneficiary, he can send payment by clicking Transfer:
  • 65296112
    • One the user fills out all the fields on 65296115 he can submit the request
 
Central Bank Operations User
After login, bank operation users will their dashboard page:
  • 65296129
    • On this dashboard page, all the data needs to be coming from json files and no data should be hardcoded, the charts need to be built on the fly using data from the json files and pagination needs to work as well
  • 65296130
 
Operation users can see the payment requests list:
  • 65296131
 
They can also navigate to the Queues Monitoring page:
  • 65296132
    • Search and filtering by All / Incoming / Outgoing must work
  • 65296138
    • When clicking on the menu icon, the operation user can change the priority of payment
 
HTML Requirements
  • HTML should be valid HTML5 compliant.
  • Provide comments on the page elements to give a clear explanation of the code usage. The goal is to help future developers understand the code.
  • Please use clean INDENTATION for all HTML code so future developers can follow the code.
  • All HTML code naming should not have any conflicts or errors.
  • Element and Attribute names should be in lowercase and use a "-" or camel naming to separate multiple-word classes (i.e.. "main-content", or "mainContent)
  • Use semantically correct tags- use H tags for headers, etc. Use strong and em tags instead of bold and italic tags.
  • No inline CSS styles- all styles must be placed in an external stylesheet.
  • Validate your code- reviewers may accept minor validation errors, but please comment your reason for any validation errors. Use the validators listed in the scorecard.
 
Code Requirements
  • Provide comments on the CSS code. We need CSS comments to give a clear explanation of the code usage. The goal is to help future developers understand the code.
  • Please use clean INDENTATION for all CSS so developers can follow the code.
  • Do not create a single .css/.scss file for the whole app. Each component should have its own stylesheet file.
  • Ensure that there are no lint errors.
  • All CSS naming should not have any conflicts.
  • You’re free to choose between CSS & SCSS but you need to use flex instead of float.
  • Follow a clean folder structure.
  • Use CSS3 Media Queries to load different styles for each page and don't build different pages for different devices / layout.
  • Use CSS to space out objects, not clear/transparent images (GIFs or PNGs) and use proper structural CSS to lay out your page.
  • Make sure npm run build works without any errors.
 
Javascript Requirements
  • All JavaScript must not have a copyright by a third party. You are encouraged to use your own scripts, or scripts that are free, publicly available and do not have copyright statements or author recognition requirements anywhere in the code.
  • Use typescript and linter for code quality
 
Licenses & Attribution
  • Third-party assets used to build your item must be properly licensed or free for commercial use. MIT, some modified BSD, Apache 2 licenses are ok, but if a library is not commercial friendly you need to get our approval first.
  • Sufficient information regarding third-party assets must be present in your documentation. This includes the author, license info and a direct link to the asset online.
 
Browser Requirements
  • Windows: IE 11+, Chrome (latest), Edge (Chromium based)
  • Mac: Safari (latest), Chrome (latest)


Final Submission Guidelines

  • Code that covers all the requirements.
  • A detailed README file including information on how to set up, run and verify your application.

ELIGIBLE EVENTS:

2021 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30135501