To create a 'light' version of the Moneybox app that will allow existing users to login and check their account balance, as well as viewing their Moneybox savings.
- To clone this repository into your private repository and implement the solution.
- A login screen to allow existing users to sign in
- A screen to show the accounts the user holds, e.g. ISA, GIA
- A screen to show some details of the account, including a simple button to add money to its moneybox.
- The button will add a fixed amount of £10. It should use the
POST /oneoffpayments
endpoint provided, and the account's Moneybox amount would be updated.
A prototype wireframe of all 3 screens is provided as a guideline. You are free to provide additional information if you wish.
- Showcase what you can do. It can be a refined UI, or enhanced UX, or use of specific design patterns in the code, or anything that can make the project stand out.
- Demonstration of coding style, conventions and patterns.
- A tidy code organisation.
- Use of autolayout and UIKit.
- Implementation of unit tests.
- Any accessibility feature would be a bonus.
- The application must run on iOS 15 or later.
- Any 3rd party library should be integrated using Swift Package Manager.
The Networking methods and Models for requests and responses are ready-made in the Networking module of the project.
The base URL for the moneybox sandbox environment is https://api-test02.moneyboxapp.com/
.
You can log in using the following user:
Username | Password |
---|---|
[email protected] | P455word12 |
You should obtain a bearer token from the Login response, and attach it as an Authorization header for the endpoints. Helper methods in the API/Base folder should be used for that. (Note: The BearerToken has a sliding expiration of 5 mins).
Key | Value |
---|---|
Authorization | Bearer TsMWRkbrcu3NGrpf84gi2+pg0iOMVymyKklmkY0oI84= |
let dataProvider = DataProvider()
dataProvider.login(request: request, completion: completion)
request: Initialize your request model
Completion: Handle your API success and failure cases
The MoneyBoxTests folder includes stubbed data to easily mock the responses needed for unit testing
You can create a DataProviderMock class via inject DataProviderLogic protocol
You can mock response in Login.json file like this:
StubData.read(file: "Login", callback: completion)
If you encounter any account limit errors when depositing, please try depositing into a different account.
For "ISA" accounts, you may encounter a yearly allowance limit error. Please try depositing into one of the Savings accounts open, such as "Simple Saver".
If you're still encountering issues after trying the above, please reach out and we can refresh the test user.
It's possible while working on the project that you may encounter an error from the API:
{
"Name":"Moneybox version expired",
"Message":"This version of our app is no longer supported. Please update to the latest version in the App Store.",
"ValidationErrors":[]
}
To resolve please update the app version of your project to match the version of the latest Moneybox app in the app store.
- To share your Github repository with the user ashleyhenderson / [email protected].
- Ensure your repository can be cloned / downloaded.
- (Optional) Provide a readme in markdown which outlines your solution.