Skip to content
This repository has been archived by the owner on Jan 6, 2019. It is now read-only.

Latest commit

 

History

History
55 lines (38 loc) · 3.43 KB

README.md

File metadata and controls

55 lines (38 loc) · 3.43 KB

Welcome to Osmose!

An Email Notification and Marketing Tool that runs in AWS's Permanent Free Tier

You read that right, this application runs for free (well, almost) in AWS's permanent free tier. An email tool that you can run in your existing AWS systems that compares to MailChimp, Exact Target, and Adobe Campaigns.

This project contains the Lambda functions and was built using the Serverless Framework. That and the aws-cli are required for this project.

The other projects:

  • osmose-client - Vuejs application that manages the Receipent list, sends emails, and shows reports.
  • osmose-self-signup - Vuejs components that allow the recipients to signup for emails, and edit their account.
  • osmose-email-engine - A Javascript component that handles sending the S.E.S.

Setup Steps

  1. Creating 2 tables in DynamoDB
  2.  Table name: ClientList
     Primary partition key: Email (Binary)
     Primary sort key: Email (String) 
     Read Capacity Unit: 5
     Write Capacity Unit: 5
    
  3.  Table name: SentEmailStatus
     Primary partition key: MessageId (String)
     Read Capacity Unit: 5
     Write Capacity Unit: 5  
    
  4. Install aws-cli
  5. (Configure)[https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html] aws-cli with the region you created your DynamoDB tables in.
  6. Install Serverless
  7. Run npm install
  8. Configure serverless.yml and comment out the saveEmailStatus and confirmEmail function declaration and their declared properties. We'll readd these later afer we setup the SNS and DynamoDB Stream.
  9. When you're ready to deploy your functions to AWS run serverless deploy. The cli will give you api routes. Add these to the config file in osmose-client.
  10. Configure SES and add your email address to the from key in config file in this project.
  11. You should now be able to edit the Client List and send emails from the client!

Dev Notes

  • /config contains the configuration files
  • /daos is a wrapper around a DynamoDB function (and needs to be renamed as such)
  • /events contains json events to test and develop functions. Some of the events are up to date with the code and some aren't. Sorry, I guess? You can test them out with the npm commands named package.json
  • /handlers contains the Lamda functions

Note saved for more documenation to be written in the future concerning email bounce tracking and recipient confirmation emails. These functions work, they just need to be documented.

Create a Global Secondary Index in the ClientList table by clicking on the Indexes and then click the Create index button. Make the sort key for this index UUID