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.
- Creating 2 tables in DynamoDB
-
Table name: ClientList Primary partition key: Email (Binary) Primary sort key: Email (String) Read Capacity Unit: 5 Write Capacity Unit: 5
-
Table name: SentEmailStatus Primary partition key: MessageId (String) Read Capacity Unit: 5 Write Capacity Unit: 5
- Install aws-cli
- (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.
- Install Serverless
- Run
npm install
- Configure serverless.yml and comment out the
saveEmailStatus
andconfirmEmail
function declaration and their declared properties. We'll readd these later afer we setup the SNS and DynamoDB Stream. - 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. - Configure SES and add your email address to the
from
key in config file in this project. - You should now be able to edit the Client List and send emails from the client!
/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