{"id":19723989,"url":"https://github.com/vs4vijay/elli","last_synced_at":"2025-10-25T03:11:57.321Z","repository":{"id":38107639,"uuid":"221672971","full_name":"vs4vijay/ELLI","owner":"vs4vijay","description":"A Microservice in NodeJS, Express, and Kafka to send out emails using SendGrid","archived":false,"fork":false,"pushed_at":"2025-03-11T10:13:13.000Z","size":1961,"stargazers_count":4,"open_issues_count":73,"forks_count":3,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-04-05T20:04:20.451Z","etag":null,"topics":["api","docker","event-driven","javascript","kafka","kafka-consumer","microservice","nodejs","rest-api","restful","restful-api"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vs4vijay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2019-11-14T10:39:47.000Z","updated_at":"2024-01-26T20:03:55.000Z","dependencies_parsed_at":"2023-02-04T10:01:40.686Z","dependency_job_id":"d86b8957-825a-4b53-a1c5-ec73400eade1","html_url":"https://github.com/vs4vijay/ELLI","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/vs4vijay%2FELLI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs4vijay%2FELLI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs4vijay%2FELLI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs4vijay%2FELLI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vs4vijay","download_url":"https://codeload.github.com/vs4vijay/ELLI/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251593007,"owners_count":21614455,"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":["api","docker","event-driven","javascript","kafka","kafka-consumer","microservice","nodejs","rest-api","restful","restful-api"],"created_at":"2024-11-11T23:24:08.561Z","updated_at":"2025-10-25T03:11:57.202Z","avatar_url":"https://github.com/vs4vijay.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Elli - Email Service\n\nA Microservice to send out emails using SendGrid \n\n---\n\n## Screenshots\n\n### Email Template\n![](./screenshots/EmailTemplate.png)\n\n### Actual Email \n![](./screenshots/Email1.png)\n\n---\n\n### Pre-requisite\n\nCreate a file `.env` with appropriate ENV. VARIABLES Values. Application reads this value while bootstrapping. e.g. Fill the SandGrid API Key and Template Id.\n\n```\nSENDGRID_API_KEY=\"\"\nFROM_EMAIL=\"vs4vijay@gmail.com\"\nTEMPLATE_SALE_SUMMARY=\"d-8ee94062b404488094ee4d1b44fb3d0c\"\nAPP_URL=\"https://www.huddl.ai/features\"\nSENDER_NAME=\"Vijay Soni\"\n```\n\n- Template is provided in `/templates` folder, Please upload it on SandGrid and get the template id\n\n---\n\n## Running\n\n### Run without Docker\n\n- `npm install` OR `yarn`\n- `node src/app.js` OR `npm start` OR `npm start | pino-pretty`\n\n### Run with Docker\n\n- `docker build -t email-service .`\n- `docker run -p 3333:3333 --env-file=\".env\" email-service`\n\n---\n\n## Push image to registry\n\n- `docker build -t vs4vijay/email-service .`\n- `docker login`\n- `docker push vs4vijay/email-service`\n\n---\n\n## API Usage\n\nRequest: `POST /api/v1/email`\nBody:\n```javascript\n{\n  \"email\": \"vs4vijay@gmail.com\",\n  \"metadata\": { \n    \"name\": \"Vijay Soni\", \n    \"sale_id\": \"BigBillionDay101\"\n  }\n}\n```\n\nExample:\n```bash\n\ncurl -X POST -d '{\"email\":\"vs4vijay@gmail.com\",\"metadata\": {\"name\":\"Jay Kumar\",\"sale_id\":123}}'  \"http://0.0.0.0:3333/api/v1/email\" -H \"Content-Type: application/json\"\n\n```\n\n---\n\n## To Do\n\n- [x] Basic Node + Express\n- [x] Dockerize\n- [ ] Run as non-root user\n  - [ ] Multistage Build\n- [ ] Kubernetes (Good to have)\n- [ ] Deploy to Cloud\n- [ ] nginx\n- [ ] Code\n  - [x] Use `yarn` instead of `npm`\n  - [ ] Validation and Error Frameworks\n  - [x] Enhance the code structure and decouple\n\n---\n\n## Development Notes\n\n```\n\nnpm i -D prettier eslint eslint eslint-config-prettier eslint-plugin-prettier\n\nInstall ESLint\nInstall Prettier\n\n\nprintWidth: 80\n\ncurl -X POST -d '{\"metadata\": {}}'  \"0.0.0.0:3333/api/v1/email\" -v -H \"Content-Type: application/json\"\n\ncurl -X POST -d '{\"email\":\"vs4vijay@gmail.com\",\"metadata\": {\"name\":\"Jay Kumar\",\"sale_id\":888}}'  \"0.0.0.0:3333/api/v1/email\" -H \"Content-Type: application/json\"\n\n\nclass based controller\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvs4vijay%2Felli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvs4vijay%2Felli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvs4vijay%2Felli/lists"}