Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
aymericbeaumet committed Nov 19, 2023
1 parent a04a3c9 commit b6583cc
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 38 deletions.
53 changes: 25 additions & 28 deletions backend/readme.md
Original file line number Diff line number Diff line change
@@ -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?
Expand All @@ -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!
17 changes: 7 additions & 10 deletions ios/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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!

0 comments on commit b6583cc

Please sign in to comment.