diff --git a/backend/readme.md b/backend/readme.md index 3322f93..0a35888 100644 --- a/backend/readme.md +++ b/backend/readme.md @@ -1,6 +1,6 @@ # Backend Challenge -This challenge is part of the iOS hiring process at [Heart +This challenge is part of the backend hiring process at [Heart Hands](https://hearthands.tech/). ## Why this challenge? @@ -12,48 +12,45 @@ our team. This exercise has been designed to give a glimpse of what it is like to build a messaging app, and the kind of technical challenges we face and care about. We -know time is precious, and we are expecting you to spend no more than 48 hours -on this. +are expecting you to spend between 4 and 6 hours on this challenge. ## Instructions -You are tasked with the implementation of the backend for a messaging app that -allows users to send and receive messages in private 1:1 chats. +You are tasked with the server-side implementation of a messaging app that +allows clients to send and receive messages in private 1:1 chats. -You are being given one constraint: you must use Go. For the rest, you are free -to choose your data layer, network protocol, and design your API as you see fit. -You are purposefully being given a lot of freedom here, and you will not be -judged on these decisions alone, but we are expecting you to understand the -trade-offs you make. +We enforce no technical constraints: you are free to choose the language, data +layer, network protocol, and design your API as you see fit. You are +purposefully being given a lot of freedom here, and you will not be judged on +these decisions alone, but we will challenge the understanding of the trade-offs +you make. -## Requirements +Functional requirements: -What are we expecting you to build? - -- [ ] Users should be able to authenticate with their phone numbers -- [ ] Users should be able to list all their ongoing chats -- [ ] Users should be able receive messages from other users -- [ ] Users should be able to send messages to other users +- [ ] Clients should be able to uniquely identify themselves with a unique phone number +- [ ] Clients should be able to send messages to other clients +- [ ] Clients should be able to list all their chats with other clients +- [ ] Clients should be able to list all messages in a chat ## Bonus Some topics to look at to dive deeper: -- [ ] Users should be able to authenticate with their email address -- [ ] Add support for SMS forwarding to relay the messages to the users phone numbers -- [ ] Add support for Email forwarding to relay the messages to the users email addresses -- [ ] Make the backend idempotent in regards to what you receive -- [ ] Add support for a read/unread message status -- [ ] Users should be able to instantly receive messages as they are sent +- [ ] Add support for paginated chats and messages +- [ ] Choose a network protocol that enables soft real-time message delivery to clients +- [ ] Support SMS forwarding to relay the messages to the clients phone numbers +- [ ] Support Email forwarding to relay the messages to the clients email addresses +- [ ] Make the server message ingestion idempotent +- [ ] Add support for sent/delivered/read message status -## What we look at +## Challenge Review -We know it's a short amount of time, and you will have to prioritize what you -spend time on. A few things that are important for us and that will be -considered during the review: +We know you are going to spend a limit time on this challenge, and thus will +have to prioritize what you work on. A few things that are important for us and +that will be considered during the review: - collaboration: is the code easy to read, maintain, and evolve? - features: what did you prioritize to maximize your impact? - testability: is the code tested or easily testable? -- documentation: is the readme clear? are important parts of the code documented? can we follow your thought process with your commits? +- documentation: is the readme clear? are important parts of the code documented? can we follow your thought process by looking at the git history? Good luck, and enjoy! diff --git a/ios/readme.md b/ios/readme.md index df8850a..d69b76d 100644 --- a/ios/readme.md +++ b/ios/readme.md @@ -12,21 +12,18 @@ our team. This exercise has been designed to give a glimpse of what it is like to build a messaging app, and the kind of technical challenges we face and care about. We -know time is precious, and we are expecting you to spend no more than 48 hours -on this. +are expecting you to spend between 4 and 6 hours on this challenge. ## Instructions You are tasked with the implementation of a messaging app that allows to send -and receive messages with several bots, each in their own chat. +and receive messages with several bots, each in their own 1:1 chat. A server is available for you to use. You can read more about it in [`./server`](./server). Its documentation contains informations on how it can be run, and what kinds of API endpoints & entities are available. -## Requirements - -What are we expecting you to build? +Functional requirements: - [ ] The app should start on a screen showing the list of all chats - [ ] The app should allow opening each chat individually @@ -57,12 +54,12 @@ receive the Figma link along with the challenge instructions. ## Challenge Review -We know it's a short amount of time, and you will have to prioritize what you -spend time on. A few things that are important for us and that will be -considered during the review: +We know you are going to spend a limit time on this challenge, and thus will +have to prioritize what you work on. A few things that are important for us and +that will be considered during the review: - collaboration: is the code easy to read, maintain, and evolve? - features: what did you prioritize to maximize your impact? - testability: is the code tested or easily testable? -- documentation: is the readme clear? are important parts of the code documented? can we follow your thought process with your commits? +- documentation: is the readme clear? are important parts of the code documented? can we follow your thought process by looking at the git history? Good luck, and enjoy!