Skip to content

Instantly share code, notes, and snippets.

@zackbloom
Last active April 11, 2016 23:37
Show Gist options
  • Save zackbloom/57124a029f6bd1b8ab0e3ea5aff34d71 to your computer and use it in GitHub Desktop.
Save zackbloom/57124a029f6bd1b8ab0e3ea5aff34d71 to your computer and use it in GitHub Desktop.

Hi!

Please choose the one task you are most interested in completing and/or which aligns most with what you'd like to work on.

Frontend Task

Your task is to build an Eager app! While it will require a bit of learning about how Eager apps work, we have found creating apps to be a great way to show off your frontend chops without the complexity of a full web app. It shouldn't involve more than a couple hours of work, and it will help you to understand what we do a bit better as well :).

The app should allow a website visitor to adjust the font size of the page they are currently on to make it more readable. How you implement this from a UX perspective is up to you. My one suggestion would be to think about how a user might interact with it first and foremost, and feel free to be creative.

You can view our docs and getting started instructions here: Eager Docs

When it's ready, please send me a link to a GitHub repo with the source code.

Backend Task

In the language of your choice (feel free to use Go if you'd like an extra challenge), please build a web service which would support an Instant Message application (one-to-one chat). The API should have the following endpoints:

/ - POST

Create a new chat message, the body is JSON with the following format:

{
	"from": "UserName",
	"to": "OtherUserName",
	"message": "Some message"
}

/UserNameA/UserNameB/FromTimeStamp - GET

List chat messages which were sent between UserNameA and UserNameB which occured after FromTimeStamp. If FromTimeStamp is omitted, list all messages between the users. The endpoint should return JSON (and have the appropriate Content-Type header) of the form:

[
	{"from": "UserName", "to": "OtherUserName", "message": "Some Message", "at": someTimeStamp},
	{"from": "UserName", "to": "OtherUserName", "message": "Some Other Message", "at": someTimeStamp},
	{"from": "OtherUserName", "to": "UserName", "message": "Some Other Other Message", "at": someTimeStamp}
]

The endpoint should return all messages after FromTimeStamp, there is no need to paginate the response. The endpoint should return all messages sent between the two users, irrespective of which one sent and which one retrieved. You may store the messages in memory, there is no need to use a database or worry about scaling it beyond a single machine.

An example request which would post a message:

curl -X POST -H 'Content-Type: application/json' -d '{"from": "zack", "to": "charles", "message": "pizza tonight?"}' http://localhost/

An example request which would retrieve messages sent after 1460410016 (5:27 PM March 11th 2016 ET):

curl http://localhost/zack/charles/1460410016

Conclusion

Whichever option you chose, please send us a link to a GitHub repo with the source code. If it makes sense to, please create reasonable git commits along the way, as you would on a real project.

If you have any questions or notice any issues with these instructions, please reach out to me at [email protected].

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment