Exericse: Hitsnag - Shortcuts to your favorite productivity tools


Hitsnag connects your mail client like Gmail with services like Google Docs or Trello. By sending mails to a dediciated @hitsnag.com mail address, you can create e.g. new Google Docs documents or add a new task in a Trello board.

After signing up with your email address, you can connect your email address with one of the provided services (Google Docs, Trello, Notion etc.). For each service you want to connect to, you have to configure the required OAuth credentials (consumer key, consumer secret). Those connections can have additional options, based upon the service type.

To let Hitsnag handle emails coming from your email address, you have to define actions: You have to specify the local part of the email (e.g. trello) which Hitsnag should be listen to. The local part is the part before the @ sign and must not exceed 64 characters. Also note that the local part must be unique for your account but may exist for other accounts: The sender address is used to lookup the configured action. By selecting a previous configured service, you are then provided with the available action types. For Trello this can be Attach a new task in board. Depending upon the selected action type, you can also specify in which board the new task should be created. If you skip that field, you can send an email to trello+trello-test-board and Hitsnag automatically finds the correct board.

Incoming events are logged, so that the owner of an email address can see which mails could be handled and which failed.


The challenge for this exercise is the way, in which additional optional options and settings for the action can be stored. Model a database schema which does not have a a dedicated table for each service as additional services should be integrated in the future.