{"id":22653848,"url":"https://github.com/spektrummedia/proliferate","last_synced_at":"2026-05-18T04:39:25.645Z","repository":{"id":144052593,"uuid":"127050628","full_name":"spektrummedia/proliferate","owner":"spektrummedia","description":"A work in progress serverless email delivery platform built with .NET Core.","archived":false,"fork":false,"pushed_at":"2019-01-03T15:48:24.000Z","size":102,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-02-03T20:54:53.000Z","etag":null,"topics":["aws","csharp","serverless","ses"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spektrummedia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-27T22:00:18.000Z","updated_at":"2018-11-23T19:40:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"78960072-4b41-47e0-9513-3102757862eb","html_url":"https://github.com/spektrummedia/proliferate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spektrummedia%2Fproliferate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spektrummedia%2Fproliferate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spektrummedia%2Fproliferate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spektrummedia%2Fproliferate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spektrummedia","download_url":"https://codeload.github.com/spektrummedia/proliferate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246154643,"owners_count":20732228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","csharp","serverless","ses"],"created_at":"2024-12-09T09:30:10.807Z","updated_at":"2026-05-18T04:39:20.613Z","avatar_url":"https://github.com/spektrummedia.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# proliferate\n\n## A work in progress serverless email delivery platform\n\n![AWS](_github/proliferate.png \"AWS infra\")\n\nFrench documentation can be found [here](draft.md).\n\n## Codebase\n\n`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.\n\n[Write Serverless Functions Using AWS Lambda And C#\n](https://gooroo.io/GoorooThink/Article/17421/Write-Serverless-Functions-Using-AWS-Lambda-And-C/29348)\n\n## Services\n\n### send-email\n\nThis function is the entry point for sending an email through `proliferate`. This is the only function that is exposed through the API gateway.\n\nInput:\n```javascript\n{\n    \"api_key\": \"21e7176c-6051-11e8-9c2d-fa7ae01bbebc\",\n    \"from\": \"from@example.com\",\n    \"to\": [\n        \"to@example.com\"\n    ],\n    \"cc\": [\n        \"cc@example.com\"\n    ],\n    \"bcc\": [\n        \"bcc@example.com\"\n    ],\n    \"subject\": \"Example\",\n    \"content\": {\n        \"text\": \"This is an email\",\n        \"html\": \"\u003cp\u003eThis is an email\u003c/p\u003e\"\n    }\n}\n```\n\nOutput:\n```javascript\n{\n    \"Data\": null,\n    \"Errors\": [],\n    \"Warnings\": [],\n    \"Success\": true,\n    \"HasWarnings\": false\n}\n```\n\n#### validate-email\n\nThis service is used to validate email. Data normalization is also performed:\n\n* Remove unnecessary whitespaces from email addresses\n* Remove invalid characters from email addresses\n* Put all the email addresses in lowercase\n\nUltimately, this function also extracts the domain from email addresses and performs DNS queries to determine if they can be reached.\n\n#### validate-api-key\n\nThis service is used to validate API keys. Unallowed API keys will not be able to send email from `proliferate`.\n\nTo 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:\n\napi_key - `8f0a4306-2e14-420c-bbee-fb2fc1d36777`\nclient_name - `proliferate-client`\n\n## Documentation\n\n#### Deployment\nFor `dev` stage:\n\n`sls deploy`\n\nFor `prod` stage:\n\n`sls deploy --stage prod`\n\n#### Creating a new service\n\n```bash\nsls create --template aws-csharp --name {YOUR_SERVICE_NAME} --path ./src/{YOUR_SERVICE_NAME}\ncd src/{YOUR_SERVICE_NAME}\n.\\build.cmd\nsls deploy\nsls invoke -f {YOUR_SERVICE_NAME}\n```\n\n## Support\n\nPlease [open an issue](https://github.com/spektrummedia/proliferate/issues/new) for support.\n\n## Contributing\n\nPlease 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).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspektrummedia%2Fproliferate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspektrummedia%2Fproliferate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspektrummedia%2Fproliferate/lists"}