Skip to content

Instantly share code, notes, and snippets.

@rapala61
Forked from mshmsh5000/ds-messaging-test.md
Last active April 25, 2018 15:22
Show Gist options
  • Save rapala61/dd06234cf3ac029aee49ea63c6a5bf73 to your computer and use it in GitHub Desktop.
Save rapala61/dd06234cf3ac029aee49ea63c6a5bf73 to your computer and use it in GitHub Desktop.
DoSomething messaging engineer: Code test

Assignment

Create three components that interact:

  1. A web app that serves a form. The form should functionally and visually mimic our user registration form. The submit handler should send an event & the data payload to
  2. A queue that receives the event, where it can be retrieved by
  3. An event consumer, which emails the form data to a preset address that you and we can access (e.g., dscodetest@mailinator.com)

Details

Any language will do. Language-specific RabbitMQ tutorials are here, e.g.,

https://www.rabbitmq.com/tutorials/tutorial-one-javascript.html

You can create a free, hosted RabbitMQ instance with CloudAMQP

Heroku would be a great place to host the web app and event consumer. We host most of our production applications there.

Evaluation criteria

  • Please submit back to us within 4 days of receiving the assignment. Roughly. We're not setting a timer.
  • You should email the repo and web app URLs to codetest@dosomething.org.
  • Avoid over-engineering, but do think about good engineering practices. Services can fail, requests can time out, etc.
  • Any AMQP exchange type is fine. The point of introducing the queue element is to see how you deal with asynchronous event handling, not to get fancy.
  • Don't skimp on comments!
  • Your code must happily pass through a standard linter. We use Airbnb's code style guide.
  • Pay attention to basic security and best practices as you handle the form submission and pass data around.
  • Host your code in a public repo.

Hint

All of our code is open source on GitHub, in case you want to see what our coding styles look like, how we comment and document, and so on.

Accounts

Let us know at codetest@dosomething.org if you have any questions, or need access to a hosting environment for the web app and/or event consumer.

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