E-Mail MicroService (EMS)

Andre Vianna
My Dev Zone
Published in
3 min readDec 25, 2021

An Alternative Open Source to AWS SES

Open Source Technologies

  • TypeScript
  • MongDB
  • NodeJS

EMS Objectives

  • Import CSV Users List
  • Relationship CSV User List with TAG
  • Send automatic message for one or many TAGs

Business Rules

  • for TAGs
  • for users
  • Na importação, se a tag não existir ela deve ser criada
  • Na importação, se o usuário já existir, só vamos veicular com a tag
  • Multiples Tags per users

Integration

  • AWS SES

Infrastructure

  • MongoDB
  • Express
  • Kafka

Requisitos Funcionais — RF

  • Importar uma lista em CSV e relacionar ela com uma tag
  • Enviar mensagem para uma ou mais tags
  • Listar inscritos em uma ou mais tag
  • Visualização do Progresso de Envio (Concluido/ não concluido)

Requisitos Não Funcionais — RNF

  • Utilizar o Amazon SES ($1 => 10.000 emails sents)
  • Utilizar MongoDB
  • Utilizar Express
  • Serviço de Mensageria (REDIS, KAFKA)

Regras de Negócios — RN

  • Na importação, se a TAG não existir ela deve ser criada
  • Na importação, se o usuário já existir, só vamos veicula-lo com a tag
  • A importação deve permitir múltiplas tags

Minimum Value Product — MVP

  • 1 semana

Project Structure

  • yarn init -y
  • yarn add nodemon sucrase -D
  • yarn add express
  • Install TypeScript
  • yarn add typescript ts-node-dev @types/express -D
  • yarn add @typescript-eslint/eslint-plugin -D
  • yarn add @typescript-eslint/parser -D
  • yarn add eslint -D
  • yarn add eslint-config-airbnb-base -D
  • yarn add eslint-config-prettier -D
  • yarn add eslint-import-resolver-typescript -D
  • yarn add eslint-plugin-import -D
  • yarn add eslint-plugin-prettier -D
  • yarn add prettier -D
  • yarn add tsconfig-paths -D

Coding

Production Dependencies

  • yarn add mongoose
  • yarn add @types/mongoose -D

Install MongoDB with Docker

  • docker pull mongo
  • docker run -d -p 27017:27017 -p 28017:28017 -e MONGODB_PASS=”admin” mongodb
  • docker run -d -p 27017:27017 -e MONGODB_PASS=”admin” -e MONGODB_USER=”admin” mongo

Test Driven Development — TDD

  • yarn add jest -D
  • yarn add @types/jest -D
  • yarn jest — init
  • yarn add ts-jest -D
  • yarn test
  • yarn test — watchAll

--

--

Andre Vianna
My Dev Zone

Software Engineer & Data Scientist #ESG #Vision2030 #Blockchain #DataScience #iot #bigdata #analytics #machinelearning #deeplearning #dataviz