@@ -5,42 +5,41 @@ Hands](https://hearthands.tech/).
55
66## Why this challenge?
77
8- Heart Hands is operating with a small team of dedicated and talented people. We
8+ Heart Hands is operating with a small team of dedicated & talented people. We
99are looking for seasoned engineers with a deep technical knowledge, strong
10- understanding of their technical stack, and good product intuitions to join our
11- team.
10+ understanding of their technical stack, and excellent product intuitions to join
11+ our team.
1212
13- This challenge has been designed to give a glimpse of what it is like to build a
13+ This exercise has been designed to give a glimpse of what it is like to build a
1414messaging app, and the kind of technical challenges we face and care about. We
15- are expecting you to spend no more than 48 hours on this.
15+ are expecting you to spend between 4 and 6 hours on this challenge .
1616
17- ## Summary
17+ ## Instructions
1818
19- You are tasked to develop a messaging app that allows to send and receive
20- messages with several bots, each in their own chat.
19+ You are tasked with the implementation of an iOS messaging app that allows to
20+ communicate (send and receive text messages) with bots, each in their own 1:1
21+ chat.
2122
22- A server is available for you to use, you can read more about it in
23- [ ` ./server ` ] ( ./server ) . The documentation contains informations on how it can be
24- run and what kinds of API endpoints are available.
23+ A server is available for you to use. You can read more about it in
24+ [ ` ./server ` ] ( ./server ) . Its documentation contains informations on how it can be
25+ run, and what kinds of API endpoints & entities are available.
2526
26- ## Requirements
27-
28- What are we expecting you to build?
27+ Functional requirements:
2928
3029- [ ] The app should start on a screen showing the list of all chats
3130- [ ] The app should allow opening each chat individually
3231- [ ] The app should allow sending messages to a chat
3332- [ ] The app should reflect the messages sent to and received from the server
33+ - [ ] The app should be resilient to bad network conditions (drops & timeouts)
3434
3535## Bonus
3636
37- What could be implemented to improve the UX?
37+ Some topics that we find interesting to dig:
3838
3939- [ ] Make the app work offline (both for app state and sending)
40- - [ ] Make the app resilient to bad network conditions (retries & timeouts)
4140- [ ] Make the app idempotent in regards to what you send and receive
4241- [ ] Integrate a splashscreen to hide chats while the app is loading
43- - [ ] Add support for optimisic sending to give instantaneity in the UI
42+ - [ ] Add support for optimistic sending to give instantaneity in the UI
4443- [ ] Add support for a local read/unread indicator
4544- [ ] Avoid block changing states so the app feels fluid & snappy
4645- [ ] Make the app compatible to run on iPad and macOS
@@ -49,8 +48,23 @@ What could be implemented to improve the UX?
4948
5049## Design
5150
52- We have prepared a design to help you during this challenge.
51+ We have prepared a design to help you during this challenge. You will also
52+ receive the Figma link along with the challenge instructions.
5353
5454![ design] ( ./design.png )
5555
56+ ## Challenge Review
57+
58+ We know you only have a limited time alloted to deliver this challenge, and thus
59+ will have to prioritize what you work on. A few things that are important for us
60+ and that will be considered during the review:
61+ - ** documentation** : is the readme clear? are important parts of the code
62+ documented?
63+ - ** impact** : which features did you prioritize?
64+ - ** maintainability** : is the code well-structured and easy to read/evolve?
65+ - ** robustness** : is the code tested or easily testable? are edge-cases
66+ considered? is static analysis leveraged?
67+
68+ ***
69+
5670Good luck, and enjoy!
0 commit comments