Giter Club home page Giter Club logo

coding-exercise-lead's Introduction

Caring.com Coding Exercise

This repository contains a Rails application that implements parts of a very simple sales lead delivery system. We define an API where a new lead's email address is stored in our system. We also define a mailer which will be used to send these email addresses to an existing set of lead recipients, however the act of sending these leads has yet to be implemented.

Key files:

Specification

When a new lead is created through the API it should trigger the lead mailer email to be sent to every recipient in our system

  • This email should contain the lead's email address in the subject and the body
  • If this email fails to send to any given recipient, it should still be sent to the rest of the recipients
  • If this email fails to send to any given recipient due to an SMTP error, and an admin changes that recipient's email address, the send should be retried
  • The client creating the lead should receive acknowledgement that the lead has been stored in our system, regardless of the success of delivering the lead to all recipients
  • New recipients should not receive leads created before they were created

You may assume that two leads with the same email address never occur.

Any visitor should be able to visit the root path / and see a list of all the leads in the system

  • This list should enumerate which recipients have received an email, and which have not
  • If a recipient has not received an email due to an SMTP error, that error should be visible
  • If a recipient has not received an email because their account was created after the lead was created, they should not be included in the list
  • The list should be ordered such that the most recently created leads are first
  • The list should be paginated to 50 per page

Please treat this, within reason, like it was a production grade project. Feel free to use any libraries you would use for such a project.

Technical questions

Please answer the following questions in a markdown file called Answers to technical questions.md.

  1. How long did you spend on the exercise? What would you add to your solution if you had more time? If you didn't spend much time on the exercise then use this as an opportunity to explain what you would add.
  2. What was the most useful feature that you used that was added to a recent version of Ruby? Please link to a place where you used it.
  3. How would you track down a performance issue in production? Have you ever had to do this?

Submission

When finished, please upload your solution as a .zip / .tar.gz, complete with git repo, to Dropbox / Google Drive etc, and send a link to [email protected]. Please don't publicly fork the repo, we don't want candidates drawing "inspiration" from each other ๐Ÿ˜‰.

If you have any questions don't hesitate to ask!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.