A micro-service for sending notifications 😎🔥😎!
Have you tried to implement push notifications, sms, voice or email services in your server/app 😮?
Is it a hassle 😵?
How do handle errors 😰?
What do you do when you need to escalate into sending thousands of notifications 😳?
Which service should you use 🤔?
Take all those boring and painful tasks, planning and decisions and throw them away! We already walked that road and we don't want you to lose your time on this so you can focus on making the good bucks 💰💰, going to the gym 🏋🏼 and get a beer 🍺.
We basically abstracted all those services' APIs into a super simple to use server-to-server API!
And thats it!
The workflow basics (using push notifications as example):
-
Create a notification template, for example the welcome push notification for all users where "username" and some other info will be replace for each different user.
-
When a user logs in or register to your app send it also to the notification server along with the username and id for future usage.
-
Whenever you main server wants it can create notifications to multiple users by id, or by groups also filtering by tags!
-
You can register webhooks so your main app knows when the notifications were sent successfully, if there where errors or some user token doesn't work anymore.
You got it bro, lets curl!
Create an user
curl -v -X POST \
-H "Content-Type: application/json" \
localhost:8080/api/user \
-d '{"external_id":"205","name":"Rubens 205", "email":"ruben@random.com","delivery":["email"],"groups":["group1","group2"]}'
Here we are telling the notification server to create an user with an id 205
, activate email delivery and add it to some groups.
Create a template
curl -v -X POST \
-H "Content-Type: application/json" \ localhost:8080/api/template \
-d '{"name":"test-template-1","email":{"subject":"hello <%= data.username %>","text":"<title>This is html content</title><body>and here is a number <%= data.num %> cheers!</body>"}}'
Here we are creating a template for emails with name test-template-1
in ejs
with placeholder that will be replaced with data from the user or data from the notification itself.
Create notification
curl -v -X POST -H \
"Content-Type: application/json" \
localhost:8080/api/notification \
-d'{"by":["email"],"at":1503599342,"template_id":1,"users":["user-1"],"required_by":["email"],"data":{"num":30}}'
Here we are creating the notification with a sending date, specific user and some data in it.
You just sent a notification to your first user 😎🔥!
- Create a super user called "notificator"
- Run the sh script in src/database/setup.sh, this will create the "notifications" database with the correct schema
- Run
npm install
on this repo's folder - Create a copy of the file
env/.env.example
with the nameenv/.env.production
to setup all your keys.
- ...
...
Error levels of winstons
error, warn, info, verbose, debug, silly
...
JavaScript Library on its way