A bank wants to launch 2 new credit card products, C1 and C2. To receive applications for the products the bank will collect the following detail about the applicant in a web-form or mobile app, which the bank provides:
- Name
- Address
- Email id
The submission of this form will be received by a Tradeledger API and sent over to a Thirdparty service for eligibility decisioning. The Thirdparty provides a RESTful api which responds with one of the following eligibilities:
- C1
- C2
- Both C1 and C2
- Neither C1 nor C2
The Tradeledger APIs should receive the response from the Thirdparty and update the user with the result of their application.
FE
- A React Bootstrap app
- Build Automation Tool - Node Product Manager
BE
- A Microservices with Spring Boot
- Build Automation Tool - Gradle
- Clone the repo locally.
- Complete the exercise.
- Upload your completed project to your GitHub, and then paste a link to the repository below in the form along with any comments you have about your solution.
Open the project with IntelliJ or Eclipse or any other IDE of your choice
FE
-
Go To terminal.
-
cd client/cards -- Browse to Directory i.e. client/cards
-
npm run install -- to install the app
-
npm run test -- to test the app
-
npm run start -- to run the app
-
npm run bootstrap - Installs dependencies of the project and all submodules and links them together
-
npm run clean - Cleans dependencies of the project and all submodules
-
npm run reinstall - Cleans and installs fresh dependencies
BE
-
Go To terminal.
-
cd server/cards --- Browse to Directory i.e. server/cards
-
./gradlew build -- to build the solution
-
./gradlew test -- to unit test the solution
-
./gradlew bootRun -- to build the solution
-
./gradlew clean -- to clean the solution
or alternatively you can use IDE's builtin plugin for Gradle for these Gradle goals
- For BE, in /server, build a synchronous Tradeledger API to orchestrate the journey from the application submission to retrieval of response. The API should call the provided Thirdparty endpoint over HTTP.
- For FE, in /client, implement a call to the API you've just built and display the results using the provided components.
Thirdparty contract:
Request
POST /eligibility/check
{
"name": "String",
"email": "String",
"address": "String"
}
Response
{
"eligibleCards": "Array of C1, C2, BOTH or None"
}
- The bank believes that the products would be extremely popular and around 1 million requests will be received in the first hour, tailing off from there
- The Thirdparty might take up to 10secs to respond to the request
- The processed applications and results need to be stored for up to 7 years for audit purposes