Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

notifme-template

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

notifme-template

A Node.js library to easily handle all your notification templates

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
528
increased by0.38%
Maintainers
1
Weekly downloads
 
Created
Source

Notif.me

Template plugin for Notif.me SDK.

npm-status js-standard-style flow-typed license

Features

  • All your notifications in one place — Define all your email, sms, push, and webpush templates in one folder :thumbsup:

  • Choose your template enginefacebook/react, pug (formerly jade), mozilla/nunjucks, handlebars.js, mustache.js, lodash, underscore, marko, doT, swig, linkedin/dustjs, twig.js, ejs... and many more. Literally the one you want :dancer:

  • Complete control — No magic: you define all the behaviours you need (layouts, CSS preprocessor...) :rocket:

  • No dependencies — Lightning fast installation :zap:

  • Localization — Easily implement i18n/l10n for all your notifications :globe_with_meridians:

  • CSS inlining — Add Juice to your dependencies and the CSS in your emails will automatically be inlined :ribbon:

  • MIT license — Use it like you want.

Getting Started

$ yarn add notifme-template
// Example with nunjucks template engine ($ yarn add nunjucks)
const nunjucks = require('nunjucks')
const getRenderer = require('notifme-template')

const render = getRenderer(nunjucks.renderString, './templates')

const data = {user: {firstname: 'John', email: 'john@example.com'}}
render('welcome', data, 'en-US').then((notification) => {
  // Send the notification on its channels
})
// ./templates/welcome.js
module.exports = () => ({
  name: 'welcome',
  title: 'Welcome {{user.firstname}}',
  version: 1,
  channels: {
    sms: {
      from: '{{smsFrom}}',
      to: '{{user.phone}}',
      text: "Hi {{user.firstname}}, we're very happy to welcome you on board!"
    },
    email: {
      from: '{{emailFrom}}',
      to: '{{user.email}}',
      subject: 'Welcome {{user.firstname}}',
      html: `{% extends "templates/_layouts/email-transactional.html" %}
        {% block content %}
        Hi {{user.firstname}},<br><br>
        We're very happy to welcome you on board.<br><br>
        See you soon!
        {% endblock %}`
    },
    push: {
      registrationToken: '{{user.pushToken}}',
      title: 'Welcome {{user.firstname}}',
      body: "Hi {{user.firstname}}, we're very happy to welcome you on board"
    }
  },
  sampleData: {
    smsFrom: 'Notifme',
    emailFrom: '"David, Notif.me team" <david@example.com>',
    user: {
      firstname: 'John',
      email: 'john@example.com',
      phone: '+15000000001',
      pushToken: 'xxxxx'
    }
  }
})

See a complete working example for more details.

How to use

Constructor options

const getRenderer = require('notifme-template')

const render = getRenderer(/* renderer, folder, options */)
Argument nameTypeRequiredDescription
rendererFunctiontrueTemplate engine function to use. It must implement (templateName: string, data: Object) => string
folderstringtrueThe path to the folder containing all your templates.
optionsObjectfalseSee options definition.

This returns the render function documented below.

Template declaration

project/
│
└───templates/    <= you can place this folder where you want and choose its name
    │   template1.js
    │
    └───template2/
        │   index.js

With the structure above, you will have two templates template1 and template2. notifme-template makes a dynamic require require(`${path.resolve(folder, templateName)}`) the first time you call them.

Each template must export a function implementing: (lang: string) => TemplateType | Promise<TemplateType>. See TemplateType definition and examples for more details.

render method

render(/* templateName, data, lang */).then((notification) => {
  // Send the notification on its channels
})
Argument nameTypeRequiredDescription
templateNamestringtrueThe template name to use.
dataObjecttrueData to use when rendering the notification.
langstringfalseUser language.

This returns a Promise resolving with the rendered template.

Contributing

js-standard-style flow-typed

Contributions are very welcome!

To get started: fork this repository to your own GitHub account and then clone it to your local device.

$ git clone git@github.com:[YOUR_USERNAME]/notifme-template.git && cd notifme-template
$ yarn install

Need Help? Found a bug?

Submit an issue to the project Github if you need any help. And, of course, feel free to submit pull requests with bug fixes or changes.

FAQs

Package last updated on 28 Aug 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc