Key Information

The challenge is finished.

Challenge Overview

In Signator project we develop a solution for generation and disribution of compensation reports to the client's sales representatives.

In the challenge forum you will find the link to the current codebase, a virtual machine (VM) emulating client's environment and database (DB), and related documentation. In its current state, the code extracts necessary data from the database, and generates a set of reports that are assumed to be emailed to sales representatives. Each report is a self-contained HTML file (build with Angular), that does not require Internet access, nor any other file, to be viewed in browser.

WARNING: The Vagrant / VirtualBox machine, provided for this challenge, is ~9Gb download!

In this challenge you will implement the actual email delivery functionality. Major requirements are:
  • Emails should be send to sales representatives fetched from DB, as described in the docs provided in the challenge forum. Note, however, for testing purposes we do not want to spam emails actually given in DB (all emails there are replaced by email of the project manager), you should provide a way for reviewers to force send all emails to their email addresses.
  • For actual sending of emails we should use nodemailer or some similar package. Be sure to expose all necessary configuration into config, and document it. Also, please update the code to use node-config for configuration rather than simple config.js file; also now the code uses additional dbconfig.js file, please move related config params to the same node-config files.
  • Generated reports will be sent as email attachements, template of email body you will find in the challenge forum. You will include provided email template into the codebase (in plain text form), for documentation purposes, hovewer during the actual email generation the code should pull email body from the URL provided via the config. The intention is that client managers should be possible to put email body, say, on Google.Drive disk, add its URL to the code, and then later, if they edit email body, the code will automatically pull and use updated version in the next email generation cycle.
  • We also want to provide template capabilities in the email body document; i.e. it should be possible to write in the email body doc something like this:
    Hey {{FirstName}} {{LastName}}, here's your report
    With intention that {{FirstName}} and {{LastName}} will be substituted by actual data from the DB for that report. Please check what data in DB can be relevant for such use in email body template, expose them as such template variables, and also document them.

Final Submission Guidelines

Submit Git patch for the codebase. Verification instructions (at least the main information on how to configure, test, and run in prod the email delivery, as well as how to prepare email body templates) should be included into codebase documentation. Also include a brief demo video.


2018 Topcoder(R) Open


Final Review:

Community Review Board


User Sign-Off


ID: 30067273