Create a mini version of the Moneybox app that will allow existing users to login, check their account and add money to their moneybox.
The project currently contains a LoginActivity.kt with 3 EditTexts, a Button and a lovely animation of an owl that plays on the press of the button. We want you to implement two additional screens.
We want to give some useful functionality to our users. To allow them to log into the app, view and edit their account using our sandbox API (See API usage).
This screen should be shown after the user has successfully logged in and should show have the following functionality:
- Display "Hello {name} only if they provided it on the previous screen"
- Show the 'TotalPlanValue' of a user.
- Show the accounts the user holds, e.g. ISA, GIA, LISA, Pension.
- Show all of those account's 'PlanValue'.
- Show all of those account's 'Moneybox' total.
If a user selects one of those accounts, they should then be taken to this screen. This screen should have the following functionality:
- Show the 'Name' of the account.
- Show the account's 'PlanValue'.
- Show the accounts 'Moneybox' total.
- Allow a user to add to a fixed value (e.g. £10) to their moneybox total.
A prototype wireframe of all 3 screens is provided as a guideline. You are free to change any elements of the screen and provide additional information if you wish.
- An android application written in either Java or Kotlin.
- Demonstration of coding style and design patterns.
- Knowledge of common android libraries and any others that you find useful.
- Storage of data between screens.
- Consistency of data between screens.
- Error handling.
- Any form of unit or integration testing you see fit.
- The application must run on Android 5.0 and above.
- The application must compile and run in Android Studio.
Please feel free to modify/refactor the LoginActivity and use any libraries/helper methods to make your life easier.
- Zip up your solution, excluding any build artifacts to reduce the size, and email it back to our recruitment team.
- Provide a readme in markdown with a brief summary of your application.
This is a brief summary of the api endpoints in the moneybox sandbox environment. There are a lot of other additional properties from the json responses that are not relevant, but you must use these endpoints to retrieve the information needed for this application.
The base URL for the moneybox sandbox environment is https://api-test01.moneyboxapp.com/
.
You can log into test your app using the following user:
Username | Password |
---|---|
jaeren+androidtest@moneyboxapp.com | P455word12 |
In order to make requests https must be used and the following headers must be included in each request.
Key | Value |
---|---|
AppId | 3a97b932a9d449c981b595 |
Content-Type | application/json |
appVersion | 7.15.0 |
apiVersion | 3.0.0 |
To login with this user and retrieve a bearer token you need to call POST /users/login
.
POST /users/login
{
"Email": "jaeren+androidtest@moneyboxapp.com",
"Password": "P455word12",
"Idfa": "ANYTHING"
}
Sample json response
"Session": {
"BearerToken": "TsMWRkbrcu3NGrpf84gi2+pg0iOMVymyKklmkY0oI84=",
"ExternalSessionId": "4ff0eab7-7d3f-40c5-b87b-68d4a4961983", -- not used
"SessionExternalId": "4ff0eab7-7d3f-40c5-b87b-68d4a4961983", -- not used
"ExpiryInSeconds": 0 -- not used
}
After obtaining a bearer token an Authorization header must be provided for all other endpoints along with the headers listed above (Note: The BearerToken has a sliding expiration of 5 mins).
Key | Value |
---|---|
Authorization | Bearer TsMWRkbrcu3NGrpf84gi2+pg0iOMVymyKklmkY0oI84= |
Provides product and account information for a user that will be needed for the two additional screens.
GET /investorproducts
Adds a one off amount to the users moneybox.
POST /oneoffpayments
{
"Amount": 20,
"InvestorProductId": 3230 ------> The InvestorProductId from /investorproducts endpoint
}
Good luck!