-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ios & backend challenges update (#3)
- Loading branch information
1 parent
d5e2314
commit c4164de
Showing
8 changed files
with
132 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# Backend Challenge | ||
|
||
This challenge is part of the backend hiring process at [Heart | ||
Hands](https://hearthands.tech/). | ||
|
||
## Why this challenge? | ||
|
||
Heart Hands is operating with a small team of dedicated & talented people. We | ||
are looking for seasoned engineers with a deep technical knowledge, strong | ||
understanding of their technical stack, and excellent product intuitions to join | ||
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 | ||
are expecting you to spend between 4 and 6 hours on this challenge. | ||
|
||
## Instructions | ||
|
||
You are tasked with the server-side implementation of a messaging app that | ||
allows clients to send and receive text messages in private 1:1 chats. | ||
|
||
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. | ||
|
||
Functional requirements: | ||
|
||
- [ ] Clients should be able to uniquely identify themselves with a phone number | ||
(without authentication) | ||
- [ ] Clients should be able to send messages to other clients via their phone | ||
numbers | ||
- [ ] Clients should be able to list their chats | ||
- [ ] Clients should be able to list all messages in a chat | ||
|
||
## Bonus | ||
|
||
Some topics that we find interesting to dig: | ||
|
||
- [ ] Choose a network protocol that enables soft real-time message delivery to the clients | ||
- [ ] Make the server message ingestion idempotent | ||
- [ ] Add support for sent/delivered/read message status | ||
- [ ] Add support for chats and messages pagination | ||
- [ ] Implement SMS phone number verification to authenticate the clients | ||
- [ ] Support SMS forwarding to relay the messages to the clients phone numbers | ||
|
||
## Challenge Review | ||
|
||
We know you only have a limited time alloted to deliver 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: | ||
- **documentation**: is the readme clear? are important parts of the code | ||
documented? | ||
- **impact**: which features did you prioritize? | ||
- **maintainability**: is the code well-structured and easy to read/evolve? | ||
- **robustness**: is the code tested or easily testable? are edge-cases | ||
considered? is static analysis leveraged? | ||
|
||
*** | ||
|
||
Good luck, and enjoy! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,16 @@ | ||
module github.com/hearthands/challenges/ios/server | ||
|
||
go 1.21.3 | ||
go 1.21.4 | ||
|
||
require ( | ||
github.com/go-chi/chi/v5 v5.0.10 | ||
github.com/go-chi/render v1.0.3 | ||
github.com/r3labs/sse/v2 v2.10.0 | ||
golang.org/x/exp v0.0.0-20231006140011-7918f672742d | ||
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa | ||
) | ||
|
||
require ( | ||
github.com/ajg/form v1.5.1 // indirect | ||
golang.org/x/net v0.0.0-20191116160921-f9c825593386 // indirect | ||
golang.org/x/net v0.18.0 // indirect | ||
gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters