Skip to content

Harry-027/go-notify

Repository files navigation

go-notify


An email automation solution written in Golang. It facilitate users to register, send & schedule custom HTML mails for their clients.

Built using rich tech-stack:


Architecture diagram:


Arch_Diagram

DB Schema:


DB_Schema

Features Included:


  • Authentication & authorization using JWT.
  • Swagger included, built using Swago
  • Full proof auth features - signup, login, update password, forgot password, logout.
  • Cors, Helmet, Api-rate limiter included as middleware from security perspective.
  • Users can register their clients & custom HTML templates.
  • Mail scheduling (daily, weekly, monthly) using cron jobs.
  • Subscription & Payment (payment has been stubbed for now and can be replaced with any suitable payment gateway).
  • Api-server can be consumed by any client-side API, however for easy interaction - CLI (built using Cobra) has been included.

Installation & setup :-


  • Go,Docker,Docker compose & Make should be pre-installed.
  • Clone the repository: git clone https://github.com/Harry-027/go-notify.git.
  • Run the command make download (this will install go modules).
  • Create a new file .env under root directory & copy the env variables from .sample-env. (Note that mailgun env variables should be replaced with original credentials. Rest may remain untouched)
  • Run the command make setup (this will start the required docker containers - postgres, redis, apache kafka & zoo-keeper).
  • Run the command docker ps to ensure all the four containers are up & running.
  • Open a new terminal & run the command make server to spin up the api server.
  • Open a new terminal & run the command make consumer to spin up the kafka consumer.
  • Open a new terminal & run the command make cronjob to start the cron processes.
  • Open a new terminal & run the command cli-go. This will install the go-notify cli on your machine.
  • Cli is now ready to operate. Run the command go-notify --help to explore various commands.

CLI

Swagger :-


Swagger

Monitoring (using Prometheus & Grafana):-


  • Before spinning up Prometheus & Grafana for monitoring, replace the HOST_IP variable (under monitoring/prometheus/config.yml) with your machine IP.
  • Run the command make monitor to start Api-server monitoring.
  • Once the containers - Prometheus & Grafana are up, visit http://localhost:3000 on browser for Grafana dashboard.
  • Default credentials for Grafana: username - 'admin' , password - 'admin'
  • Once logged into Grafana, visit settings to select prometheus data source as target to view the dashboard.

Grafana

Load Testing :-


  • Before running load tests, replace the hostip variable value with your machine ip, under loadtesting/tests/loadtests.js
  • Run the command make load-testing to run the load tests.

LoadTesting_results

Sample for a custom HTML received mail :-


Mail

Contributing 🍻


  • Performance improvements, bug fixes, better design approaches are welcome. Please discuss any changes by raising an issue, beforehand.

Maintainer 😎


Harish Bhawnani Linkedin Email

License


MIT © Harish Bhawnani

Releases

No releases published

Packages

No packages published

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy