Harry-027 / Go Notify
Licence: mit
An email automation solution, written in Golang.
Stars: ✭ 143
Projects that are alternatives of or similar to Go Notify
Edgerealtimevideoanalytics
An example of using Redis Streams, RedisGears, RedisAI and RedisTimeSeries for Realtime Video Analytics (i.e. counting people)
Stars: ✭ 305 (+113.29%)
Mutual labels: redis, prometheus, grafana
Bricks
A standard library for microservices.
Stars: ✭ 142 (-0.7%)
Mutual labels: redis, postgres, prometheus
Grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
Stars: ✭ 45,930 (+32018.88%)
Mutual labels: postgres, prometheus, grafana
Zenko
Zenko is the open source multi-cloud data controller: own and keep control of your data on any cloud.
Stars: ✭ 353 (+146.85%)
Mutual labels: redis, prometheus, grafana
Elephant Shed
PostgreSQL Management Appliance
Stars: ✭ 146 (+2.1%)
Mutual labels: postgres, prometheus, grafana
Catalyst
Typescript NodeJS Microservices Boilerplate with Generator CLI - Moleculer, GraphQL, REST, OAuth2, Jaeger, Grafana, Prometheus, Ory Hydra, Ory Keto w/ Access Control middleware, Moleculer-DB GraphQL mixin, Pug, Redis, sibling client repo (login, persistance layer, react-native-web, ios, android)
Stars: ✭ 30 (-79.02%)
Mutual labels: redis, prometheus, grafana
Prometheus Course
Course files for Monitoring and Alerting with Prometheus
Stars: ✭ 97 (-32.17%)
Mutual labels: prometheus, grafana
Iotstack
docker stack for getting started on IOT on the Raspberry PI
Stars: ✭ 1,383 (+867.13%)
Mutual labels: postgres, grafana
Redis exporter
Prometheus Exporter for Redis Metrics. Supports Redis 2.x, 3.x, 4.x, 5.x and 6.x
Stars: ✭ 2,092 (+1362.94%)
Mutual labels: redis, prometheus
Cloudprober
An active monitoring software to detect failures before your customers do.
Stars: ✭ 1,269 (+787.41%)
Mutual labels: prometheus, grafana
Haproxy Configs
80+ HAProxy Configs for Hadoop, Big Data, NoSQL, Docker, Elasticsearch, SolrCloud, HBase, MySQL, PostgreSQL, Apache Drill, Hive, Presto, Impala, Hue, ZooKeeper, SSH, RabbitMQ, Redis, Riak, Cloudera, OpenTSDB, InfluxDB, Prometheus, Kibana, Graphite, Rancher etc.
Stars: ✭ 106 (-25.87%)
Mutual labels: redis, prometheus
Slo Generator
Easy setup a service level objective using prometheus
Stars: ✭ 91 (-36.36%)
Mutual labels: prometheus, grafana
Febs Cloud
基于Spring Cloud Hoxton.RELEASE、Spring Cloud OAuth2 & Spring Cloud Alibaba & Element 微服务权限系统,开箱即用。预览地址:https://cloud.mrbird.cn
Stars: ✭ 1,295 (+805.59%)
Mutual labels: prometheus, grafana
Pingprom
Prometheus uptime monitoring quickstart
Stars: ✭ 107 (-25.17%)
Mutual labels: prometheus, grafana
Docker Django Example
A production ready example Django app that's using Docker and Docker Compose.
Stars: ✭ 86 (-39.86%)
Mutual labels: redis, postgres
Ethereum Staking Guide
Ethereum 2.0 Staking Guides
Stars: ✭ 116 (-18.88%)
Mutual labels: prometheus, grafana
Jira Prometheus Exporter
Prometheus Exporter For JIRA
Stars: ✭ 113 (-20.98%)
Mutual labels: prometheus, grafana
Mobc
A generic connection pool for Rust with async/await support
Stars: ✭ 141 (-1.4%)
Mutual labels: redis, postgres
Slimmessagebus
Lightweight message bus interface for .NET (pub/sub and request-response) with transport plugins for popular message brokers.
Stars: ✭ 120 (-16.08%)
Mutual labels: apache-kafka, redis
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:
- Api-server built using Go-fiber.
- Apache Kafka as a message broker.
- Postgres as database.
- Redis as cache.
- Client CLI built using Cobra.
- Mailgun as Email service.
- K6 for load testing.
- Prometheus & Grafana for Api-server monitoring.
Architecture diagram:
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.
Swagger :-
- Once the server starts listening on port 3001, visit http://localhost:3001/swagger/ on browser for swagger definition.
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.
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.
Sample for a custom HTML received 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
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].