https://github.com/spektrummedia/proliferate
A work in progress serverless email delivery platform built with .NET Core.
https://github.com/spektrummedia/proliferate
aws csharp serverless ses
Last synced: 2 months ago
JSON representation
A work in progress serverless email delivery platform built with .NET Core.
- Host: GitHub
- URL: https://github.com/spektrummedia/proliferate
- Owner: spektrummedia
- License: mit
- Created: 2018-03-27T22:00:18.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2019-01-03T15:48:24.000Z (over 7 years ago)
- Last Synced: 2025-02-03T20:54:53.000Z (over 1 year ago)
- Topics: aws, csharp, serverless, ses
- Language: C#
- Homepage:
- Size: 99.6 KB
- Stars: 1
- Watchers: 7
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# proliferate
## A work in progress serverless email delivery platform

French documentation can be found [here](draft.md).
## Codebase
`proliferate` is based on the microservice principles. Please refer to [this](https://serverless.com/blog/api-gateway-multiple-services/) if you want to understand the serverless setup. Each service is living on his own with his associated infrastructure resources. Those services could be written in any language if needed.
[Write Serverless Functions Using AWS Lambda And C#
](https://gooroo.io/GoorooThink/Article/17421/Write-Serverless-Functions-Using-AWS-Lambda-And-C/29348)
## Services
### send-email
This function is the entry point for sending an email through `proliferate`. This is the only function that is exposed through the API gateway.
Input:
```javascript
{
"api_key": "21e7176c-6051-11e8-9c2d-fa7ae01bbebc",
"from": "from@example.com",
"to": [
"to@example.com"
],
"cc": [
"cc@example.com"
],
"bcc": [
"bcc@example.com"
],
"subject": "Example",
"content": {
"text": "This is an email",
"html": "
This is an email
"
}
}
```
Output:
```javascript
{
"Data": null,
"Errors": [],
"Warnings": [],
"Success": true,
"HasWarnings": false
}
```
#### validate-email
This service is used to validate email. Data normalization is also performed:
* Remove unnecessary whitespaces from email addresses
* Remove invalid characters from email addresses
* Put all the email addresses in lowercase
Ultimately, this function also extracts the domain from email addresses and performs DNS queries to determine if they can be reached.
#### validate-api-key
This service is used to validate API keys. Unallowed API keys will not be able to send email from `proliferate`.
To create a new access key, you must go to the `proliferate-{stage}-api-keys` table and add a name and a key in whatever format you like. This key will then be used throughout the application. We strongly suggest something that cannot be guessed easily. Example:
api_key - `8f0a4306-2e14-420c-bbee-fb2fc1d36777`
client_name - `proliferate-client`
## Documentation
#### Deployment
For `dev` stage:
`sls deploy`
For `prod` stage:
`sls deploy --stage prod`
#### Creating a new service
```bash
sls create --template aws-csharp --name {YOUR_SERVICE_NAME} --path ./src/{YOUR_SERVICE_NAME}
cd src/{YOUR_SERVICE_NAME}
.\build.cmd
sls deploy
sls invoke -f {YOUR_SERVICE_NAME}
```
## Support
Please [open an issue](https://github.com/spektrummedia/proliferate/issues/new) for support.
## Contributing
Please contribute using [Github Flow](https://guides.github.com/introduction/flow/). Create a branch, add commits, and [open a pull request](https://github.com/spektrummedia/proliferate/compare).