Thank you for applying! This assessment will help us understand how you reason, how you communicate and your ability to translate requirements into working code.
- This assessment should take no longer than 3 hours. We'd like to respect your time, so submit whatever you can accomplish within this timeframe.
- Submissions will only be accepted as zipped source code, or a github repository. Please include everything in a single zip file, and email it to [email protected] when you are done the assessment.
- Incomplete submissions are fine. Though the assessment is designed to be completable within the timeframe, it is also intended to be challenging.
- Where there is ambiguity in the requirements, make a decision that focuses on speedy delivery of working software.
- Be prepared to justify your decisions. If we decide to bring you in for a technical interview, we will expect you to explain aspects of your implementation and thought process.
Summary: You are developing the first iteration of two major feature for Wellspent - Reflection and the Feed screen. You will need to create a new React-Native project and implement basic functionality, such as:
- Navigation with React-Nativagion
- State management with Redux
- Centralized request handling, including network quality detection
Evaluation: Please include gifs of your solution in case we experience issues building your application. We have provided a basic web server in this repo that will provide basic GET and PUT endpoints for the feature.
-
Story: As a Wellspent user with unreflected transactions,
- I should be able to quickly reflect on my unreflected transactions as positive, negative or neutral, either by swiping or pressing a button
- I should see a summary of my reflections after reflecting on all pending transactions
- Implementation notes: This component should be on a "Reflection" screen accessible through nav bar
-
Story: As a Wellspent user with reflected transactions,
- I should be able to see a visualization of my reflected spending, positive, negative and neutral
- Implementation notes: This component should be on a "Feed" screen accessible through nav bar
-
Bonus story: As a Wellspent user who has reflected on transactions from multiple categories,
- I should be able to see a visualization of my spending across all categories, filterable by positive, negative or neutral
- Implementation notes: This component should be a part of the Feed screen
- Nodejs v12 LTS
Note that this server performs no validation, and does not persist data to disk. To reset corrupted data, stop the server and start it again.
- NPM install
- NPM start
GET /reflections - returns reflections (generated in memory)
PUT /reflections/:reflectionId - updates a reflection with the passed information and returns the reflection. Payload should be in JSON format, with any values provided overwriting what is on the server.
e.g.
GET /reflections
Response: {
transactions: [
{
"id": 0,
"merchant_name": "Tim Hortons",
"merchant_id": 0,
"category_name": "Restaurants",
"category_id": 0,
"amount": 2.99,
"reflected_as": null,
"date_of_transaction": "2020-01-14T03:13:31.788Z"
}
]
}
PUT /reflections/0
Payload: { reflected_as: 'NEUTRAL' }
Response: {
"id": 0,
"merchant_name": "Tim Hortons",
"merchant_id": 0,
"category_name": "Restaurants",
"category_id": 0,
"amount": 2.99,
"reflected_as": 'NEUTRAL',
"date_of_transaction": "2020-01-14T03:13:31.788Z"
}
For mockups, see the mockups
directory of the repo. It contains:
- Reflection Screen (ignore any functionality not specified in the story).
- Focus on quality of architecture over precise styling.