🚀 The ultimate library for managing multi-channel notifications with a single API.

Overview

Notification management simplified.

The ultimate library for managing multi-channel notifications with a single API.


Explore the docs »

Report Bug · Request Feature · Read our blog

⭐️ Why

Building a notification system is hard, at first it seems like just sending an email but in reality it's just the beginning. In today's world users expect multi channel communication experience over email, sms, push, direct and more... An ever growing list of providers are popping up each day, and notifications are spread around the code. Notifire's goal is to simplify notifications and provide developers the tools to create meaningful communication between the system and it's users.

Features

  • 🌈 Single API for all messaging providers (Email, SMS, Push, Direct)
  • 💅 Easily manage notification over multiple channels
  • 🚀 Equipped with a templating engine for advanced layouts and designs
  • 🛡 Built-in protection for missing variables
  • 📦 Easy to set up and integrate
  • 🛡 Written in TypeScript with predictable static types.
  • 👨‍💻 Community driven

📦 Install

npm install @notifire/core
yarn add @notifire/core

🔨 Usage

here. {{#if organization}} {{/if}} ` }, ] }); await notifire.trigger(' ', { $user_id: " ", $email: "[email protected]", firstName: "John", lastName: "Doe", organization: { logo: 'https://evilcorp.com/logo.png' } }); ">
import { Notifire, ChannelTypeEnum } from '@notifire/core';
import { SendgridEmailProvider } from '@notifire/sendgrid';

const notifire = new Notifire();

await notifire.registerProvider(
  new SendgridEmailProvider({
    apiKey: process.env.SENDGRID_API_KEY,
    from: '[email protected]'
  })
);

const passwordResetTemplate = await notifire.registerTemplate({
  id: 'password-reset',
  messages: [
    {
      subject: 'Your password reset request',
      channel: ChannelTypeEnum.EMAIL,
      template: `
          Hi {{firstName}}!
          
          To reset your password click here.
          
          {{#if organization}}
            
          {{/if}}
      `
    },
  ]
});

await notifire.trigger('
     
      '
     , {
  $user_id: "
     
      "
     ,
  $email: "[email protected]",
  firstName: "John",
  lastName: "Doe",
  organization: {
    logo: 'https://evilcorp.com/logo.png'
  }
});

Providers

Notifire provides a single API to manage providers across multiple channels with a single to use interface.

💌 Email

📞 SMS

📱 Push

  • Pushwoosh

🔗 Links

Comments
  • `@novu/node`: complete the notification templates module

    `@novu/node`: complete the notification templates module

    • [x] Get all
    • [x] Get one
    • [x] Create
    • [x] Update
    • [x] Delete
    • [x] Update status
    • [x] https://github.com/novuhq/api-docs/pull/18

    Feel free to tell me if there's more I'm missing and I'll update the list.

    good first issue help wanted Hacktoberfest 
    opened by florian-lefebvre 23
  • [NV-474] - Fit to screen's lentgh/size

    [NV-474] - Fit to screen's lentgh/size

    Why?

    For some screens the bottom third is totally empty today. For larger screen it's very limiting the usable space.

    How?

    Let's take advantage of that space by modifying the UI to fit the screen size. Making the screen fit inside the viewable port 100vh-(the existing header and spacing)

    Where?

    In the apps/web project, to get the latest workflow editor, checkout from the workflow branch.

    See:

    image.png

    --
    Created via Raycast

    Assigned & In-Progress 
    opened by novubot 19
  • Theme preference is not persistent

    Theme preference is not persistent

    Describe the bug Every time someone lands on the web page, that person comes across the light theme UI, even if they have previously changed their preference to a dark theme.

    To Reproduce Steps to reproduce the behavior:

    1. Go to web.novu.co.
    2. Click on the 'Toggle screen theme option' (Moon icon) will result in the page theme changing to dark.
    3. Refresh the page.
    4. The page theme changes to the default light theme.

    Expected behavior The theme preference should be persistent even if the page refreshes.

    Details

    • OS: Windows
    • Node Version: v14.16.1
    Assigned & In-Progress 
    opened by FidalMathew 16
  • [NV-438] - Add payload content to notification object

    [NV-438] - Add payload content to notification object

    Why?

    After triggering an event and passing a payload object to it, the payload object is never saved on the message entity returned by the notifications API specifically for the notification center usecase.

    What?

    Persist the payload object inside the generated Notification Message for the channel including the original payload object sent by the API Users.

    Where?

    The unit responsible for creating the notification message is located inside the trigger-event.usecase.ts file inside the @novu/api package.

    Done definition

    • e2e test for the trigger event asserting the created message to contain the payload object when returned by the API.
    opened by novubot 15
  • Rust server SDK

    Rust server SDK

    What?

    A Rust server SDK

    Why?

    Probably a lot of people will write their APIs in Rust or have already wrote.

    How?

    You could follow doc.rust-lang.org

    Other information

    Add any other context or screenshots about the feature request here.

    enhancement 
    opened by kymppi 14
  • CTA not working - NextJs

    CTA not working - NextJs

    Describe the bug CTA for notification not working

    To Reproduce Steps to reproduce the behavior:

    1. Create In-App Notification template with redirect url
    2. Trigger notification
    3. Clicking on notification does not redirect to desired page

    Expected behavior It should redirect to desired page.

    Details:

    • OS: Mac M1
    • Node Version: v14.18.3
    • NPM Version: 8.10.0
    • @novu/notification-center: 0.4.0
    • react: 17.0.2
    • next: 12.0.2
    documentation 
    opened by singhgulshan 14
  • [NV-383] - Vue component wrapper for the notification-center embed script

    [NV-383] - Vue component wrapper for the notification-center embed script

    Why?

    Currently, we allow to embed the notification center using 2 ways:

    We want to create a 3rd way using a wrapper of an vue component around the embed script. To automatically inject it and pass the relevant option to the novu.init command.

    Open Questions

    API for the vue component

    We need a way to pass the following information:

    • applicationIdentifier
    • subscriberId
    • optional subscriber object (see react component API)

    Questions

    • How can we pass a reference to the Bell button to be triggered (Currently the embed requires: unseenBadgeSelector, and bellSelector both are CSS selector.) We want to be able to pass a ref instead of a CSS selector.
    good first issue help wanted frontend 
    opened by novubot 14
  • Missing docs for provider template command

    Missing docs for provider template command

    • I'm submitting a ... [x] bug report [ ] feature request [ ] question about the decisions made in the repository [ ] question about how to use this project

    • Summary A new provider template command was added in #61. Documentation is missing in how to add a provider

    • Other information (e.g. detailed explanation, stack traces, related issues, suggestions on how to fix, links for us to have context, eg. StackOverflow, personal fork, etc.)

    A new section with a title called initialization, description, and code snippet needs to be added.

    documentation good first issue 
    opened by ComBarnea 14
  • New Provider - Microsoft Outlook365

    New Provider - Microsoft Outlook365

    What change does this PR introduce?

    Creates a new email provider for Microsoft Outlook 360.

    Why was this change needed?

    Microsoft Outlook requires specific settings such as server, port, and TLS settings. To make it easier on new users coming to the platform to connect up to Outlook 365

    Other information (Screenshots)

    image

    documentation @novu/api @novu/web @novu/notification-center @novu/shared providers community 
    opened by whodges2 13
  • fix(notification-center): api calls on first render

    fix(notification-center): api calls on first render

    What kind of change does this PR introduce?

    Bug fix

    Why was this change needed?

    React useEffect can't detect changes in out of scope variables like api (look the Note block in useEffect optimizations docs).

    Here is demo what I mean.

    That's why on first render the initialized prop of NovuContext.Provider will always be false. Which to infinity loading bug. Because of this, the user sees infinity loading instead of the content.

    documentation hacktoberfest-accepted @novu/notification-center community 
    opened by sashasushko 13
  • A new Typo checker repo action!

    A new Typo checker repo action!

    • What kind of change does this PR introduce? (Bug fix, feature, docs update, ...) Feature
    • Why this change was needed? (You can also link to an open issue here) After my previous typo fix PR, I thought that to prevent future typos in PR's we should have this action as well!
    • Other information:
    documentation @novu/api @novu/web accepted @novu/shared 
    opened by Chii-Onan 13
  • 🐛 Bug Report: Main branch setup:project command failing with error

    🐛 Bug Report: Main branch setup:project command failing with error

    📜 Description

    Trying to setup nova project locally with this command npm run setup:project, but failing with error.

    👟 Reproduction steps

    git clone main novu branch(or cloned branch) and run: npm run setup:project

    👍 Expected behavior

    Project setup successful

    👎 Actual Behavior with Screenshots

    Getting below error and setup failing...

    setup:project npx --yes [email protected] i && node scripts/setup-env-files.js && pnpm build

    Scope: all 54 workspace projects Lockfile is up-to-date, resolution step is skipped Packages: +6078 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  WARN  GET https://github.com/LetItRock/floating-vue/raw/main/packages/floating-vue/floating-vue-2.0.0-beta.21.tgz error (EPROTO). Will retry in 10 seconds. 2 retries left. Packages are hard linked from the content-addressable store to the virtual store. Content-addressable store is at: /Users/XX/Library/pnpm/store/v3 Virtual store is at: node_modules/.pnpm  WARN  GET https://github.com/LetItRock/floating-vue/raw/main/packages/floating-vue/floating-vue-2.0.0-beta.21.tgz error (EPROTO). Will retry in 1 minute. 1 retries left. Progress: resolved 6078, reused 5307, downloaded 0, added 6077 TypeError: Cannot set property name of which has only a getter at err (/Users/XX/.npm/_npx/0437c2f26f91c49a/node_modules/pnpm/dist/pnpm.cjs:12462:20) at runPnpm (/Users/XX/.npm/_npx/0437c2f26f91c49a/node_modules/pnpm/dist/pnpm.cjs:192787:5) at runMicrotasks () at processTicksAndRejections (node:internal/process/task_queues:96:5) at async /Users/XX/.npm/_npx/0437c2f26f91c49a/node_modules/pnpm/dist/pnpm.cjs:192777:7

    🤖 Node Version

    No response

    📃 Provide any additional context for the Bug.

    No response

    👀 Have you spent some time to check if this bug has been raised before?

    • [X] I checked and didn't find similar issue

    ?? Have you read the Contributing Guidelines?

    Are you willing to submit PR?

    None

    linear triage 
    opened by tsssdev 0
  • 🐛 Bug Report:

    🐛 Bug Report:

    📜 Description

    novu-web failed to start on Kuberntes:

    👟 Reproduction steps

    Via the guide here

    kustomize build . | kubectl apply -f -

    👍 Expected behavior

    novu-web with built assets, not running wih nx

    You can take a look with nx-container

    👎 Actual Behavior with Screenshots

    > novuhq@ start:static:web /usr/src/app
    > cross-env nx run-many --target=start:static:build --projects=@novu/web
    
    /bin/sh: git: not found
    
     >  NX   Running target start:static:build for 1 project(s):
    
        - @novu/web
    
     
    
    > nx run @novu/web:"start:static:build"
    
    
    > @novu/[email protected] start:static:build /usr/src/app/apps/web
    > pnpm envsetup:docker && http-server build -p 4200 --proxy http://localhost:4200?
    
    
    > @novu/[email protected] envsetup:docker /usr/src/app/apps/web
    > chmod +x ./env.sh && ./env.sh && mv ./env-config.js ./build/env-config.js
    
    sh: ./env.sh: not found
     ELIFECYCLE  Command failed.
     ELIFECYCLE  Command failed with exit code 1.
    
     
    
     >  NX   Running target "start:static:build" failed
    
    

    🤖 Node Version

    No response

    📃 Provide any additional context for the Bug.

    No response

    👀 Have you spent some time to check if this bug has been raised before?

    • [X] I checked and didn't find similar issue

    🏢 Have you read the Contributing Guidelines?

    Are you willing to submit PR?

    None

    linear triage 
    opened by oo00spy00oo 0
  • refactor: remove default attempts

    refactor: remove default attempts

    What change does this PR introduce?

    Why was this change needed?

    In order to remove the default attempts on the queue.

    Other information (Screenshots)

    @novu/api 
    opened by djabarovgeorge 0
  • 🐛 Bug Report: package novu/web:0.10.0 broken

    🐛 Bug Report: package novu/web:0.10.0 broken

    📜 Description

    ghcr.io/novuhq/novu/web:0.10.0 is broken which is probably caused by CLRF line endings instead of LF.

    👟 Reproduction steps

    Follow your quick start guide: https://github.com/novuhq/novu/tree/next/docker#quick-start

    👍 Expected behavior

    A running image.

    👎 Actual Behavior with Screenshots

    Log:

    2023-01-02 19:21:26 
    2023-01-02 19:21:26 > novuhq@ start:static:web /usr/src/app
    2023-01-02 19:21:26 > cross-env nx run-many --target=start:static:build --projects=@novu/web
    2023-01-02 19:21:26 
    2023-01-02 19:21:28 
    2023-01-02 19:21:28  >  NX   Running target start:static:build for 1 project(s):
    2023-01-02 19:21:28 
    2023-01-02 19:21:28     - @novu/web
    2023-01-02 19:21:28 
    2023-01-02 19:21:28  
    2023-01-02 19:21:31 
    2023-01-02 19:21:31 > nx run @novu/web:"start:static:build"
    2023-01-02 19:21:31 
    2023-01-02 19:21:31 
    2023-01-02 19:21:31 > @novu/[email protected] start:static:build /usr/src/app/apps/web
    2023-01-02 19:21:31 > pnpm envsetup:docker && http-server build -p 4200 --proxy http://localhost:4200?
    2023-01-02 19:21:31 
    2023-01-02 19:21:31 
    2023-01-02 19:21:31 > @novu/[email protected] envsetup:docker /usr/src/app/apps/web
    2023-01-02 19:21:31 > chmod +x ./env.sh && ./env.sh && mv ./env-config.js ./build/env-config.js
    2023-01-02 19:21:31 
    2023-01-02 19:21:28 /bin/sh: git: not found
    2023-01-02 19:21:31 /bin/sh: git: not found
    2023-01-02 19:21:31 sh: ./env.sh: not found
    2023-01-02 19:21:31  ELIFECYCLE  Command failed.
    2023-01-02 19:21:31  ELIFECYCLE  Command failed with exit code 1.
    2023-01-02 19:21:31 
    2023-01-02 19:21:31  
    2023-01-02 19:21:31 
    2023-01-02 19:21:31  >  NX   Running target "start:static:build" failed
    2023-01-02 19:21:31 
    2023-01-02 19:21:31    Failed tasks:
    2023-01-02 19:21:31    
    2023-01-02 19:21:31    - @novu/web:start:static:build
    2023-01-02 19:21:31 
    2023-01-02 19:21:31    See Nx Cloud run details at https://cloud.nx.app/runs/EBXRW2RBZv
    2023-01-02 19:21:31 
    2023-01-02 19:21:31  ELIFECYCLE  Command failed with exit code 1.
    

    See sh: ./env.sh: not found which is an indicator that sh is not able to handle CRLF. Was able to reproduce error when setting line endings of env.sh to CRLF while running docker:build.

    🤖 Node Version

    not involved

    📃 Provide any additional context for the Bug.

    Friendly reminder to avoid CRLF where possible.

    👀 Have you spent some time to check if this bug has been raised before?

    • [X] I checked and didn't find similar issue

    🏢 Have you read the Contributing Guidelines?

    Are you willing to submit PR?

    None

    linear triage 
    opened by razorness 1
  • feat: add copy functionality for vars in variable manager

    feat: add copy functionality for vars in variable manager

    What change does this PR introduce?

    I've added a Tooltip wrapper around VarItem component where its present. I didn't want to apply it inside the component for two reasons:

    1. Add more logic inside of it and pass unnecessary props
    2. Make the component dependable on Tooltip

    Why was this change needed?

    [NV-1405] Add copy functionality for vars in variable manager #2378

    Other information (Screenshots)

    Screenshot 2023-01-02 at 17 27 29

    Let me know If I have to change something in the UI or if the logic should be inside the component 😄

    @novu/web community 
    opened by paolapog 0
Releases(v0.10.0)
  • v0.10.0(Dec 29, 2022)

    v0.10.0

    Release Date: December 27, 2022

    We are excited to announce the latest release of Novu, which includes several new and improved features. One of the requested features has been the addition of Topics, which allows users to easily send notifications to groups for subscribers using a single identifier. We have also added avatar support, so notifications in the notification center can now include subscriber avatars. Another significant addition is the new e-mail editor and preview in the web UI. In addition to these new features, we have also made various performance improvements and bug fixes to enhance the overall experience. Let’s dive deeper:

    Topics

    We are excited to announce Topics, which allows you to create custom groups of subscribers and send targeted notifications to those groups. Using our API, you can easily create new topics and assign subscribers to them. Once a topic has been created, it is now possible to send notifications to that topic using the unique topic key.

    Let’s see how it works in action.

    First, we will need to create a topic:

    import { Novu } from '@novu/node';
    
    const novu = new Novu(process.env.NOVU_API_KEY);
    
    const result = await novu.topics.create({
      key: 'posts:comments:123456',
      name: 'Post comments',
    });
    

    Assign subscriber to it:

    import { Novu } from '@novu/node';
    
    const novu = new Novu(process.env.NOVU_API_KEY);
    
    const topicKey = 'posts:comments:123456';
    
    const response = await novu.topics.addSubscribers(topicKey, {
      subscribers: ['subscriber-id-1', 'subscriber-id-2', ...],
    });
    

    And then trigger a notification for this topic:

    const topicKey = 'posts:comments:123456';
    
    await novu.trigger('<REPLACE_WITH_EVENT_NAME_FROM_ADMIN_PANEL>', {
      to: [{ type: TriggerRecipientsTypeEnum.TOPIC, topicKey: topicKey }],
      payload: {},
    });
    

    Read more about Topics on our documentation page.

    New e-mail editor and preview

    We are also excited to announce the release of a new e-mail editor that makes it easier than ever to customize and send e-mails. The editor includes a list of available variables that you can insert into the e-mail templates and a preview feature that allows seeing how the final e-mail will look. We have also added autocomplete support for variables to make it easier to use them in your e-mails. Another helpful feature is the ability to send a test e-mail to your own account, so you can see exactly how the e-mail will look and make any necessary adjustments before sending it out to your subscribers.

    CleanShot_2022-12-27_at_10 04 46

    Notification Center as a Vue, Angular, and Web Component (Beta)

    We have converted our notification center component to be available as a vue, angular, and web component. This will allow to easily integrate the notification center into their projects regardless of their preferred front-end framework. The notification center provides a central location for users to view and manage their notifications, and we believe that making it available in multiple formats will make it even more accessible.

    Let’s explore the usage of the Vue component:

    import { createApp } from 'vue';
    import NotificationCenterPlugin from '@novu/notification-center-vue';
    import '@novu/notification-center-vue/dist/style.css';
    import App from './App.vue';
    
    createApp(App).use(NotificationCenterPlugin).mount('#app');
    

    And then use it as a component:

    <script lang="ts">
      export default {
        data() {
          return {
            applicationIdentifier: import.meta.env.VITE_NOVU_APP_IDENTIFIER,
            subscriberId: import.meta.env.VITE_NOVU_SUBSCRIBER_ID,
          };
        },
        methods: {
          sessionLoaded() {
            console.log('Notification Center Session Loaded!');
          },
        },
      };
    </script>
    
    <template>
      <NotificationCenterComponent
        :subscriberId="subscriberId"
        :applicationIdentifier="applicationIdentifier"
        :sessionLoaded="sessionLoaded"
      />
    </template>
    

    Read more about the component information in our documentation.

    Are you experienced in one of the new components? Help us improve the API and developer experience by submitting an issue on GitHub.

    Actors and Avatars

    Now you can add an actor when triggering a notification and display their avatar on the notification feed. This allows a recipient of the notification better understand the context of a particular notification and who sent it. To use this feature, users simply need to include the actor's avatar URL when creating a notification.

    CleanShot_2022-12-27_at_10 27 39

    import { Novu } from '@novu/node';
    
    export const novu = new Novu('<REPLACE_WITH_API_KEY_FROM_ADMIN_PANEL>');
    
    await novu.trigger('<REPLACE_WITH_EVENT_NAME_FROM_ADMIN_PANEL>',
      {
        to: {
          subscriberId: '<USER_IDENTIFIER>',
          email: '[email protected]'
        },
    		actor: {
          subscriberId: '<ACTION_PERFORMING USER>',
    			avatar: 'http://path-to-avatar.com/profile.png'
        },
        payload: {
          customVariables: 'Hello'
        }
      }
    );
    

    Request caching

    We have also introduced an optional cache layer to cache frequent requests for the notification feed, you can optionally enable cache by specifying the following environment variable when running the novu API

    • REDIS_CACHE_HOST - The path for your Redis instance
    • REDIS_CACHE_PORT - The port of the Redis instance defaults to the default port.

    Webhook support

    You can now connect webhooks from supported delivery providers to get better visibility on bounces, email opens, and more… Click on the integration, if supported a webhook URL will appear, copy it, and paste it on your provider delivery dashboard.

    The webhook information will appear when inspecting and item in the activity feed. Read more about it on our documentation.

    Notable features

    • Activity feed list can now be filtered using transactiondId
    • Upgraded Socket.IO to version 4
    • Security fixes and best practices for the API
    • New Info Bip SMS Provider
    • New Burst SMS Provider
    • New Sparkpost SMS Provider
    • New Outlook365 Provider

    Other changes in this release

    New Contributors

    Full Changelog: https://github.com/novuhq/novu/compare/v0.9.2...v0.10.0

    Source code(tar.gz)
    Source code(zip)
  • v0.9.0(Nov 10, 2022)

    Excited to announce our biggest release so far at Novu. This release is the work of our team and over 100 contributors from all around the world. Welcome to version 0.9.0. Let's explore what's new!

    Notification Observability

    CleanShot 2022-11-10 at 17 58 15@2x

    We have overhauled how we store and display the execution of the notification workflow. This change allows much more visibility on the errors or successful execution happening. Here are some of the highlights of the activity feed:

    • Each step workflow can be inspected
    • Execution details for each step are displayed with information and timestamps
    • Inspect raw provider error response
    • Understand delayed and digested events

    We hope that this release will provide a ground for improvement and iteration to later support webhook information, etc... Looking forward to hearing your thoughts!

    Seen and Read for notification center - Breaking Change

    Since our initial launch, we've been asked countless times to provide a true seen functionality and, on top of that, to allow distinguish read from seen.

    Currently, we've only had a seen property that was behaving like a read, in this release, we have introduced another property named read and the actual seen behavior is only triggered once the user has seen the notification center.

    CleanShot 2022-11-10 at 18 47 36@2x

    BREAKING CHANGE seen behavior has changed to now be modified for when the user sees the notification, and the new read property should be updated on click of the notification.

    Testing workflows from the UI

    Want quickly to test your new notification template? From now you can easily trigger a notification and specify the payload variable without leaving the template editor.

    APNS integration (beta)

    Recently we have introduced the Push channel with support for FCM. From this release, you will be able to send notifications using APNS. This integration is still in beta, and we would love to hear your feedback or suggestions.

    Subscribers List Page

    In this version new subscribers list page was added to inspect your registered subscribers, right now we don't allow creating or editing subscribers. This will be implemented in the upcoming versions.

    Integrated provider credentials check

    Hearing your feedback for onboarding to Novu, we now test the providers during the integration phase by performing a test email to the provider using the credentials provided. Errors will be displayed inline when you try to integrate.

    We hope this will help to identify issues much faster when connecting new providers. CleanShot 2022-11-10 at 18 52 28@2x

    New navigation Spotlight

    CleanShot 2022-11-10 at 18 53 57@2x

    Scheduled delay notifications

    It is now possible to specify a delayed key following the ISO format, and the delay functionality will be delayed until this timestamp. This could be useful to delay the execution of a message until a predefined dynamic date rather than a hardcoded number of minutes or days.

    CleanShot 2022-11-10 at 19 10 56@2x

    Adding steps in the middle of the workflow

    Steps could be now added in the middle between 2 existing nodes in the UI CleanShot 2022-11-10 at 19 15 01@2x

    Other notable changes

    • Regenerating API Keys is now possible by visiting the settings page
    • The novu notification center is available in 45+ new languages! 🌍
    • Novu is now available at the Vercel marketplace, for easier integration with your vercel deployed projects
    • New MS Teams chat provider
    • Various UI and bug fixes resolved (more details in the change list)
    • Documentation improvements
    • Better Kubernetes examples and support
    • Fixed invite link for self-hosted deployments
    • Improved API support in our @novu/node SDK
    • Implemented delivery providers webhook parsing, will be supported fully in next release
    • Higher unit tests coverage for our WEB platform components
    • A lot more!

    Changelist

    • remove last ; by @matigumma in https://github.com/novuhq/novu/pull/1260
    • feat: add subscibers list page by @jainpawan21 in https://github.com/novuhq/novu/pull/1182
    • feat: Add new provider for MS Teams by @dcamarasa in https://github.com/novuhq/novu/pull/1238
    • feat: ability to invite existing user by @venarius in https://github.com/novuhq/novu/pull/1244
    • fix: curl req for notification-groups gets error 500 by @ainouzgali in https://github.com/novuhq/novu/pull/1262
    • Fix embed runtime env variables by @djabarovgeorge in https://github.com/novuhq/novu/pull/1266
    • Fix for BUG #1269 by @JakovGlavac in https://github.com/novuhq/novu/pull/1270
    • test: fix so test are testing so defaults are not overriding trigger payload by @davidsoderberg in https://github.com/novuhq/novu/pull/1272
    • chore: small design improvements for the README file by @andrewgolovanov in https://github.com/novuhq/novu/pull/1273
    • fix bug #1275 by @JakovGlavac in https://github.com/novuhq/novu/pull/1276
    • style: bg-color of step card and zindex of error tooltip by @DanishOnGit in https://github.com/novuhq/novu/pull/1268
    • APNS Integration by @ainouzgali in https://github.com/novuhq/novu/pull/1264
    • Add SendGrid provider doc by @scopsy in https://github.com/novuhq/novu/pull/1281
    • fix(jarvis): run docs script branch by @p-fernandez in https://github.com/novuhq/novu/pull/1284
    • feat: Add Global and Service Specific Context Path Capibility to all Novu Apps by @Cliftonz in https://github.com/novuhq/novu/pull/1285
    • fix: smaller fixes for subscriber table by @venarius in https://github.com/novuhq/novu/pull/1293
    • feat: Add Capability to set Custom Redis Prefix by @Cliftonz in https://github.com/novuhq/novu/pull/1287
    • Add save button for digest by @Wyfy0107 in https://github.com/novuhq/novu/pull/1172
    • feat: added functionality to test providers creds during creation by @BiswaViraj in https://github.com/novuhq/novu/pull/1254
    • fix: add run local doc link in readme by @jainpawan21 in https://github.com/novuhq/novu/pull/1296
    • feat: Add interface to prepare for webhook feature by @davidsoderberg in https://github.com/novuhq/novu/pull/1279
    • feat: add so limit can be provided to endpoint by @davidsoderberg in https://github.com/novuhq/novu/pull/1277
    • refactor: workflow queue service by @davidsoderberg in https://github.com/novuhq/novu/pull/1288
    • feat: add spotlight for navigation and some actions by @davidsoderberg in https://github.com/novuhq/novu/pull/1257
    • feat(wip): scheduled delay feature by @ainouzgali in https://github.com/novuhq/novu/pull/1283
    • feat(api): Inforce API key generation is unique by @p-fernandez in https://github.com/novuhq/novu/pull/1299
    • Regenerate api keys by @florian-lefebvre in https://github.com/novuhq/novu/pull/1292
    • fix: api script for e2e tests in root package.json by @jainpawan21 in https://github.com/novuhq/novu/pull/1298
    • fix: missing error message due object object print by @djabarovgeorge in https://github.com/novuhq/novu/pull/1290
    • feat: add empty workflow file for webhook service by @davidsoderberg in https://github.com/novuhq/novu/pull/1309
    • fix: webhook deploy in main by @davidsoderberg in https://github.com/novuhq/novu/pull/1310
    • Changed the Contribution Guidelines link by @mohanthilak in https://github.com/novuhq/novu/pull/1314
    • Copyedit the Getting Started Page under Notification Center in Novu Docs Website by @Rutam21 in https://github.com/novuhq/novu/pull/1340
    • Added how to get Novu's swag by @iampearceman in https://github.com/novuhq/novu/pull/1332
    • test describe wrong by @LucasLeandroBR in https://github.com/novuhq/novu/pull/1325
    • docs: add gitpod quick open by @krshkun in https://github.com/novuhq/novu/pull/1329
    • [NV-796] - i18n - Sanskrit Support by @Rutam21 in https://github.com/novuhq/novu/pull/1338
    • (docs): fix typos in multiple files by @stanulilic in https://github.com/novuhq/novu/pull/1335
    • [NV-933] - Activity Feed - fix month day by @ozanuslan in https://github.com/novuhq/novu/pull/1351
    • NV-1327 i18n - Odia Support by @Rutam21 in https://github.com/novuhq/novu/pull/1328
    • feat: add webhook endpoint for email providers by @davidsoderberg in https://github.com/novuhq/novu/pull/1265
    • feat: add mark all as read functionality by @jainpawan21 in https://github.com/novuhq/novu/pull/1080
    • fix: so messages endpoints are shown in swagger json by @davidsoderberg in https://github.com/novuhq/novu/pull/1360
    • Fix some typos by @Chii-Onan in https://github.com/novuhq/novu/pull/1354
    • Add Nepali language support for @novu/notification-center by @diwash007 in https://github.com/novuhq/novu/pull/1361
    • feat: add invite link by @djabarovgeorge in https://github.com/novuhq/novu/pull/1308
    • Seen read test by @djabarovgeorge in https://github.com/novuhq/novu/pull/1295
    • Updated the API Key insertion step for SendGrid. by @mohanthilak in https://github.com/novuhq/novu/pull/1364
    • fix: close button acts as submit button by @geisterfurz007 in https://github.com/novuhq/novu/pull/1369
    • Fix typo in architecture.md by @kVarunkk in https://github.com/novuhq/novu/pull/1388
    • Grammatical errors fixed by @VasuDevrani in https://github.com/novuhq/novu/pull/1384
    • i18n - Polish support by @vanyaxk in https://github.com/novuhq/novu/pull/1379
    • docs: Updated FCM integration instructions by @saby22 in https://github.com/novuhq/novu/pull/1381
    • fix: so message identifier is saved from send method by @davidsoderberg in https://github.com/novuhq/novu/pull/1387
    • Updated the header bannners by @iampearceman in https://github.com/novuhq/novu/pull/1395
    • Deleted the 'How to get our swag?' toggle by @iampearceman in https://github.com/novuhq/novu/pull/1398
    • fixed bug in template by @MrKrishnaAgarwal in https://github.com/novuhq/novu/pull/1394
    • Grammar Correction in README.md file by @aguywithnojob in https://github.com/novuhq/novu/pull/1389
    • Update line in introduction.md file by @Susmita-Dey in https://github.com/novuhq/novu/pull/1393
    • fix: so subscriber is used to filter activity feed by @davidsoderberg in https://github.com/novuhq/novu/pull/1399
    • feat: add i18n support for kannada by @Asmit2952 in https://github.com/novuhq/novu/pull/1353
    • i18n - Urdu Support by @ArmanChand in https://github.com/novuhq/novu/pull/1373
    • Added Docs page for Postmark by @mohanthilak in https://github.com/novuhq/novu/pull/1371
    • i18n – Czech support by @tomasbranda in https://github.com/novuhq/novu/pull/1380
    • Update line in introduction.md file by @AshishSharma1203 in https://github.com/novuhq/novu/pull/1403
    • Fix Grammatical errors in templates.md by @kVarunkk in https://github.com/novuhq/novu/pull/1410
    • i18n - Tamil Support by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1406
    • i18n - Punjabi Support by @ArmanChand in https://github.com/novuhq/novu/pull/1402
    • Fix grammatical errors in subscribers.md by @kVarunkk in https://github.com/novuhq/novu/pull/1421
    • feat: i18n support for marathi by @Asmit2952 in https://github.com/novuhq/novu/pull/1416
    • feat: i18n support for Korean language by @omimakhare in https://github.com/novuhq/novu/pull/1420
    • fix(jarvis): fix script for running web tests in cypress cli by @p-fernandez in https://github.com/novuhq/novu/pull/1429
    • Language code correction: punjabi by @fadkeabhi in https://github.com/novuhq/novu/pull/1436
    • docs: Added documentation for AWS SNS by @chavda-bhavik in https://github.com/novuhq/novu/pull/1413
    • feat: i18n support for Hungarian language by @IamsahilPhadtare in https://github.com/novuhq/novu/pull/1440
    • Fix Grammatical errors in environments.md by @kVarunkk in https://github.com/novuhq/novu/pull/1445
    • chore(i18n): add Indonesian language support by @rahmat-st in https://github.com/novuhq/novu/pull/1434
    • i18n - Fix spanish translation by @pmontp19 in https://github.com/novuhq/novu/pull/1428
    • fix: take into account credentials.senderName in sendgrid provider by @sebastiaanviaene in https://github.com/novuhq/novu/pull/1418
    • feat(dal): execution details repository implementation by @p-fernandez in https://github.com/novuhq/novu/pull/1423
    • feat: expo provider by @psteinroe in https://github.com/novuhq/novu/pull/1258
    • docs: Fix broken image link by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1432
    • Added link to the banner of Hacktoberfest by @thomasbnt in https://github.com/novuhq/novu/pull/1337
    • Wrong response status on missing template in trigger-event.usecase.ts by @Rutam21 in https://github.com/novuhq/novu/pull/1326
    • fix: NV-904 Errors in Integration Store by @geisterfurz007 in https://github.com/novuhq/novu/pull/1368
    • Copyedit the Subscribers Page under Platform in Novu Docs Website by @ArmanChand in https://github.com/novuhq/novu/pull/1439
    • feat(jarvis): add options to run api tests by @p-fernandez in https://github.com/novuhq/novu/pull/1441
    • feat: added subject variables to variable manager by @MihirShinde-29 in https://github.com/novuhq/novu/pull/1425
    • fix(github-actions): test providers script was not running by @p-fernandez in https://github.com/novuhq/novu/pull/1442
    • fix(auth): during invitation if active session logout redirect by @p-fernandez in https://github.com/novuhq/novu/pull/1305
    • Add Catalan support and translations by @pmontp19 in https://github.com/novuhq/novu/pull/1427
    • Adding Japanese Language support by @Yash-sudo-web in https://github.com/novuhq/novu/pull/1444
    • Feat/test api keys card component by @yk-jp in https://github.com/novuhq/novu/pull/1412
    • feat: update docs styles to match the api docs by @k8isdead in https://github.com/novuhq/novu/pull/1430
    • Complete events module in @novu/node by @florian-lefebvre in https://github.com/novuhq/novu/pull/1357
    • feat: test connect integration form by @geisterfurz007 in https://github.com/novuhq/novu/pull/1377
    • Complete environment module by @Wyfy0107 in https://github.com/novuhq/novu/pull/1370
    • Updated the monorepo by @olinabin2004 in https://github.com/novuhq/novu/pull/1472
    • Fixed minor grammatical error by @Rounak-28 in https://github.com/novuhq/novu/pull/1474
    • Added Assamese Support by @AranavMahalpure in https://github.com/novuhq/novu/pull/1466
    • Added Sindhi support by @fadkeabhi in https://github.com/novuhq/novu/pull/1414
    • fix: fixes markAllAsRead field to its correct translation by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1493
    • Adding Danish Language support by @Yash-sudo-web in https://github.com/novuhq/novu/pull/1476
    • feat: i18n support for Greek language by @IamsahilPhadtare in https://github.com/novuhq/novu/pull/1438
    • fix: typo in architecture.md by @dmulligan in https://github.com/novuhq/novu/pull/1497
    • feat: add endpoint for execution details by @davidsoderberg in https://github.com/novuhq/novu/pull/1490
    • Allow adding new nodes to middle of workflow by @raikasdev in https://github.com/novuhq/novu/pull/1248
    • fix: fix changeids in web api to fit change of bulk apply endpoint by @ainouzgali in https://github.com/novuhq/novu/pull/1500
    • docs: minor fix in CONTRIBUTING.md file by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1501
    • update: added table of contents in readme by @BoseSj in https://github.com/novuhq/novu/pull/1502
    • feat(spotlight): add navigation to integrations in the command palette by @nidble in https://github.com/novuhq/novu/pull/1482
    • Updated i18-Gujarati Support with appropriate language code by @codingis4noobs2 in https://github.com/novuhq/novu/pull/1451
    • Add navigation to Settings in command palette by @npv12 in https://github.com/novuhq/novu/pull/1486
    • feat: Complete Changes module by @L-390 in https://github.com/novuhq/novu/pull/1477
    • updated the sentence grammatical error in docs by @akshitagupta15june in https://github.com/novuhq/novu/pull/1485
    • Feature: Add i18n - Telugu Support by @Susmita-Dey in https://github.com/novuhq/novu/pull/1489
    • Update "Report bug" link in README by @Susmita-Dey in https://github.com/novuhq/novu/pull/1487
    • Added Kurdish translation files by @fadkeabhi in https://github.com/novuhq/novu/pull/1437
    • Added Bulgarian Support by @AranavMahalpure in https://github.com/novuhq/novu/pull/1455
    • fix: pull request template typo by @nidble in https://github.com/novuhq/novu/pull/1512
    • feat: add turkish language support by @thenishantsapkota in https://github.com/novuhq/novu/pull/1505
    • Fixed delay.md by adding necessary changes in grammars by @akshitagupta15june in https://github.com/novuhq/novu/pull/1517
    • Fixed templates.md by removing comma errors and minor grammatical errors by @akshitagupta15june in https://github.com/novuhq/novu/pull/1516
    • Fixed grammatical errors in architecture.md by @akshitagupta15june in https://github.com/novuhq/novu/pull/1540
    • Updated integrations.md sentences error by @akshitagupta15june in https://github.com/novuhq/novu/pull/1528
    • Updated environments.md by fixing errors by @akshitagupta15june in https://github.com/novuhq/novu/pull/1527
    • Added Portuguese language by @ManishModak in https://github.com/novuhq/novu/pull/1504
    • Add navigation to Activity feed in command palette by @og118 in https://github.com/novuhq/novu/pull/1535
    • Updated react-components.md by fixing minor comma errors by @akshitagupta15june in https://github.com/novuhq/novu/pull/1544
    • Updated slack.md by fixing docs by @akshitagupta15june in https://github.com/novuhq/novu/pull/1545
    • Updated monorepo-structure.md by fixing docs by @akshitagupta15june in https://github.com/novuhq/novu/pull/1546
    • i18n - adding Vietnamese language support. by @Yash-sudo-web in https://github.com/novuhq/novu/pull/1552
    • i18n - Norwegian support by @akshitagupta15june in https://github.com/novuhq/novu/pull/1559
    • Updated Discord Server Invite Link by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1563
    • Fixed typo email in the How to add a provider ? page by @bishal7679 in https://github.com/novuhq/novu/pull/1575
    • i18n: added Romanian language support by @codingis4noobs2 in https://github.com/novuhq/novu/pull/1526
    • feat: implement Postmark provider connection test by @daniel-shuy in https://github.com/novuhq/novu/pull/1542
    • Feature to add i18n - Igbo Language support by @akshitagupta15june in https://github.com/novuhq/novu/pull/1590
    • Improve the translation for hindi by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1530
    • Feature to add i18n - Swedish Language Support by @akshitagupta15june in https://github.com/novuhq/novu/pull/1582
    • Bug fixes: fixed react-components.md by @akshitagupta15june in https://github.com/novuhq/novu/pull/1599
    • Updated subscribers.md with necessary changes by @akshitagupta15june in https://github.com/novuhq/novu/pull/1598
    • Added Word For Hindi Translation by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1600
    • i18n - Thai Language support by @codingis4noobs2 in https://github.com/novuhq/novu/pull/1595
    • Update slack.md and discord.md by fixing documentation by @michizhou in https://github.com/novuhq/novu/pull/1547
    • Fixed the introduction.md by @akshitagupta15june in https://github.com/novuhq/novu/pull/1564
    • fix: Tests failing by @L-390 in https://github.com/novuhq/novu/pull/1572
    • feat: Add webhook parser for twilio provider by @TheLearneer in https://github.com/novuhq/novu/pull/1473
    • feat: add missing ru translation by @lex111 in https://github.com/novuhq/novu/pull/1584
    • i18n - Hebrew support by @ranrib in https://github.com/novuhq/novu/pull/1604
    • corrected mistranslation of notifications in bn.ts translation file by @kaustav202 in https://github.com/novuhq/novu/pull/1554
    • Fix/missing env variables by @chavda-bhavik in https://github.com/novuhq/novu/pull/1484
    • feat: implement Nodemailer provider connection test by @daniel-shuy in https://github.com/novuhq/novu/pull/1541
    • Add Sinhala language support by @Dilshan-H in https://github.com/novuhq/novu/pull/1511
    • refactor: improve sanskrit translation by @thenishantsapkota in https://github.com/novuhq/novu/pull/1532
    • feat: implement Mandrill provider connection test by @daniel-shuy in https://github.com/novuhq/novu/pull/1543
    • update: link in "missing a feature?" by @BoseSj in https://github.com/novuhq/novu/pull/1533
    • update(introduction.md): fix a typo by @BoseSj in https://github.com/novuhq/novu/pull/1534
    • Update postmark.md and sendgrid.md by fixing documentation by @michizhou in https://github.com/novuhq/novu/pull/1548
    • i18n - Lao support by @Susmita-Dey in https://github.com/novuhq/novu/pull/1555
    • docs: updated README.md by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1571
    • Updating the link in the provider section by @bishal7679 in https://github.com/novuhq/novu/pull/1574
    • fix: Changes heading level to be consistent with markdownlint by @nilesh-maurya in https://github.com/novuhq/novu/pull/1605
    • feat(i18n): add km(Khmer) language by @munyoudoum in https://github.com/novuhq/novu/pull/1566
    • Refactor Readme.md by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1583
    • Corrected a typo error by @Akash190104 in https://github.com/novuhq/novu/pull/1608
    • Added word in Persian translation by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1617
    • Updated quick-start.md by fixing necessary changes by @akshitagupta15june in https://github.com/novuhq/novu/pull/1613
    • feat: add missing translation in nepali language by @thenishantsapkota in https://github.com/novuhq/novu/pull/1606
    • Update activity-feed.md and templates.md documentation by @michizhou in https://github.com/novuhq/novu/pull/1549
    • update(activity-feed.md): show activity feed image by @BoseSj in https://github.com/novuhq/novu/pull/1578
    • docs: fix formatting of the requirements section by @ShaneMaglangit in https://github.com/novuhq/novu/pull/1626
    • Update .eslintignore by @Aditya-Kapadiya in https://github.com/novuhq/novu/pull/1616
    • Corrected a Typo by @Akash190104 in https://github.com/novuhq/novu/pull/1612
    • Fixed activity-feed.md by adding changes by @akshitagupta15june in https://github.com/novuhq/novu/pull/1614
    • Add missing Azerbaijaini translation by @Smartmind12 in https://github.com/novuhq/novu/pull/1587
    • grammatical error in readme fixed by @harshagrawal523 in https://github.com/novuhq/novu/pull/1620
    • chore: standardize novu's discord server link throughout the codebase by @washbin in https://github.com/novuhq/novu/pull/1623
    • Update @novu/node readme by @vrabe in https://github.com/novuhq/novu/pull/1611
    • fix: deprecated class-transformer methods by @jainpawan21 in https://github.com/novuhq/novu/pull/1615
    • Add missing Uzbek Language Support by @Smartmind12 in https://github.com/novuhq/novu/pull/1589
    • Corrected some typos and punctuation by @Akash190104 in https://github.com/novuhq/novu/pull/1610
    • fix: add pagination support for subscriber feed endpoint by @jainpawan21 in https://github.com/novuhq/novu/pull/1576
    • Correct grammar and flow by @immattdavison in https://github.com/novuhq/novu/pull/1629
    • Corrected grammatical errors. by @Akash190104 in https://github.com/novuhq/novu/pull/1609
    • feat: i18n-dutch support by @Asmit2952 in https://github.com/novuhq/novu/pull/1569
    • Refactored a punctuation mark by @Srikarmk in https://github.com/novuhq/novu/pull/1628
    • feat: Firetext provider by @nickprinsloo in https://github.com/novuhq/novu/pull/1515
    • added navigation to changes in command palette by @MihirShinde-29 in https://github.com/novuhq/novu/pull/1536
    • Update CONTRIBUTING.md by @saimaheshtaduri in https://github.com/novuhq/novu/pull/1636
    • Complete subscriber module in @novu/node by @nilesh-maurya in https://github.com/novuhq/novu/pull/1538
    • Added Translation Arabic Word by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1635
    • Added Kazakh language support by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1641
    • Fixed some documentation errors by @Akash190104 in https://github.com/novuhq/novu/pull/1639
    • Correct grammar and sentence flow in quick start by @immattdavison in https://github.com/novuhq/novu/pull/1640
    • fix: update stack ordering to put spotlight on front by @ShaneMaglangit in https://github.com/novuhq/novu/pull/1643
    • Made some changes to the doc by @Akash190104 in https://github.com/novuhq/novu/pull/1607
    • style: improve responsiveness of auth container by @ShaneMaglangit in https://github.com/novuhq/novu/pull/1634
    • Documentation error fixed by @Akash190104 in https://github.com/novuhq/novu/pull/1667
    • Added the 'settings' translation by @das-amit in https://github.com/novuhq/novu/pull/1669
    • Added Filipino translate by @maglionaire in https://github.com/novuhq/novu/pull/1602
    • chore(i18n): add Melayu language support by @rahmat-st in https://github.com/novuhq/novu/pull/1672
    • feat: add pagination in changes page and api by @jainpawan21 in https://github.com/novuhq/novu/pull/1579
    • Minor grammatical changes in Readme file by @LunarMarathon in https://github.com/novuhq/novu/pull/1673
    • style: improve responsiveness of the dashboard by @ShaneMaglangit in https://github.com/novuhq/novu/pull/1637
    • chore: minor update for fil/tl language support by @ShaneMaglangit in https://github.com/novuhq/novu/pull/1675
    • Added the missing Ukrainian translation by @das-amit in https://github.com/novuhq/novu/pull/1678
    • Feat: Add webhook parser for Postmark provider by @emhng in https://github.com/novuhq/novu/pull/1506
    • Feature: i18n - Basque Support by @DonnachaHeff in https://github.com/novuhq/novu/pull/1638
    • fix(translations): French Translations file missing settings translation by @DonnachaHeff in https://github.com/novuhq/novu/pull/1677
    • i18n - Zulu support by @codingis4noobs2 in https://github.com/novuhq/novu/pull/1593
    • fix(translations): Gujarati Translations file missing translation for 'settings' by @DonnachaHeff in https://github.com/novuhq/novu/pull/1681
    • feat(lang): add galego language by @p-fernandez in https://github.com/novuhq/novu/pull/1686
    • Update providers list in readmes and docs by @vrabe in https://github.com/novuhq/novu/pull/1680
    • Add i18n - Armenian Language Support by @Smartmind12 in https://github.com/novuhq/novu/pull/1666
    • Update settings.json by @ranodeepbanerjee in https://github.com/novuhq/novu/pull/1691
    • Fix Grammatical errors and sentence flows by @immattdavison in https://github.com/novuhq/novu/pull/1684
    • Fix: issues with the Bengali translation by @furtidev in https://github.com/novuhq/novu/pull/1692
    • feat(docker): add kubernetes files by @L-U-C-K-Y in https://github.com/novuhq/novu/pull/1627
    • Doc edits by @LunarMarathon in https://github.com/novuhq/novu/pull/1695
    • Updated sns.md by @LunarMarathon in https://github.com/novuhq/novu/pull/1694
    • docs: added documentation for telnyx by @BoseSj in https://github.com/novuhq/novu/pull/1698
    • Added Twilio SMS Docs by @CursedRock17 in https://github.com/novuhq/novu/pull/1699
    • Added Irish language translation by @PalashDhabale in https://github.com/novuhq/novu/pull/1632
    • Feat: Bengali Language Merged with English by @hitblast in https://github.com/novuhq/novu/pull/1705
    • SMS77 documentation page by @LunarMarathon in https://github.com/novuhq/novu/pull/1700
    • doc: added telnyx doc link to index.md by @BoseSj in https://github.com/novuhq/novu/pull/1706
    • chore: Added unit test coverage for emailjs provider by @DonnachaHeff in https://github.com/novuhq/novu/pull/1708
    • feat: Add cypress tests for ProviderCard by @shtelzerartem in https://github.com/novuhq/novu/pull/1697
    • docs: added provider documentation link by @BoseSj in https://github.com/novuhq/novu/pull/1709
    • Update README.md by @Sreevidya181 in https://github.com/novuhq/novu/pull/1711
    • Created a Email.js provider documentation page #1665 by @priyanshkulshrestha in https://github.com/novuhq/novu/pull/1714
    • fix: links to request feature and report bug throughout the codebase by @washbin in https://github.com/novuhq/novu/pull/1717
    • update: fix typo in emailjs.md by @BoseSj in https://github.com/novuhq/novu/pull/1720
    • docs: Added Mailjet provider documentation page by @akarsh-jain-790 in https://github.com/novuhq/novu/pull/1712
    • Updated the missing translation of 'Settings' by @das-amit in https://github.com/novuhq/novu/pull/1715
    • feat: Add webhook parser for Sendinblue by @ShaneMaglangit in https://github.com/novuhq/novu/pull/1625
    • feat: Created webhook parser for Mailjet by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1453
    • Fixed the italian translation for the notification center by @TheZal in https://github.com/novuhq/novu/pull/1718
    • feat: Add navigation to team members in command palette by @npv12 in https://github.com/novuhq/novu/pull/1726
    • Grammar fix for sms77 by @TheZal in https://github.com/novuhq/novu/pull/1722
    • Grammar fix for postmark by @TheZal in https://github.com/novuhq/novu/pull/1721
    • Updated Architecture Diagram by @kaustav202 in https://github.com/novuhq/novu/pull/1719
    • feat: i18n support for Afrikaans language by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1728
    • fix: full #1735 fix by @MaximFedarau in https://github.com/novuhq/novu/pull/1738
    • docs: Add Send In Blue provider documentation page by @tanishk-23 in https://github.com/novuhq/novu/pull/1730
    • feat: add nodemailer integration docs by @shtelzerartem in https://github.com/novuhq/novu/pull/1731
    • feat: Created Webhook parser for Mandrill by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1514
    • feat: i18n support for Belarusian language by @MaximFedarau in https://github.com/novuhq/novu/pull/1739
    • Test Mailjet connection by @chavda-bhavik in https://github.com/novuhq/novu/pull/1733
    • feat: Add the notification templates module to node package by @codingmickey in https://github.com/novuhq/novu/pull/1670
    • [NV-924] - Add cypress component test to ActivityStatistics component by @soundarrajan-official in https://github.com/novuhq/novu/pull/1724
    • Updated link to enforcement ladder [ code-conduct.md ] by @kaustav202 in https://github.com/novuhq/novu/pull/1742
    • Added cypress component test to BrandingForm component by @MihirShinde-29 in https://github.com/novuhq/novu/pull/1736
    • fix: fix decision of when should create another digest event by @ainouzgali in https://github.com/novuhq/novu/pull/1707
    • docs: Fix Typos in sendinblue.md by @SarojWasti in https://github.com/novuhq/novu/pull/1748
    • fix: postmark tests by @shtelzerartem in https://github.com/novuhq/novu/pull/1756
    • refactor: updated links to open in a new tab by @BiswaViraj in https://github.com/novuhq/novu/pull/1762
    • docs: Remove link to provider-template by @SarojWasti in https://github.com/novuhq/novu/pull/1764
    • docs(slack): small typo fix by @ranrib in https://github.com/novuhq/novu/pull/1765
    • Add notifications group module in @novu/node by @deepak-sreekumar in https://github.com/novuhq/novu/pull/1741
    • docs: Fix typo in react-components.md by @dmulligan in https://github.com/novuhq/novu/pull/1763
    • Fixed all grammar issues and typos in README.md by @bishal7679 in https://github.com/novuhq/novu/pull/1747
    • Fixed documentation errors by @Akash190104 in https://github.com/novuhq/novu/pull/1773
    • Update docker-deploy.md by @Akash190104 in https://github.com/novuhq/novu/pull/1774
    • feat: mailersend check integration function by @shtelzerartem in https://github.com/novuhq/novu/pull/1749
    • fix: fix subscriber variables in trigger snippet not being updated by @ainouzgali in https://github.com/novuhq/novu/pull/1784
    • Update quick-start.md by @Akash190104 in https://github.com/novuhq/novu/pull/1785
    • Fix large attachment issue by @chavda-bhavik in https://github.com/novuhq/novu/pull/1256
    • feat(): Add auto PR labeler by @scopsy in https://github.com/novuhq/novu/pull/1786
    • fix: full #1780 fix by @MaximFedarau in https://github.com/novuhq/novu/pull/1790
    • style: Fix UI issues in settings page by @TheLearneer in https://github.com/novuhq/novu/pull/1788
    • docs: Change SUBSCRIBER_ID to subscriberId by @ShashankKumarSaxena in https://github.com/novuhq/novu/pull/1793
    • docs: Improve monorepo documentation by @SarojWasti in https://github.com/novuhq/novu/pull/1787
    • Tab Border Color Notification center by @aggmoulik in https://github.com/novuhq/novu/pull/1365
    • feat: implement #1781 by @MaximFedarau in https://github.com/novuhq/novu/pull/1789
    • Fix receiver spelling. by @ShashankKumarSaxena in https://github.com/novuhq/novu/pull/1797
    • feat: assign milestone by @scopsy in https://github.com/novuhq/novu/pull/1802
    • Update introduction.md by @Raunik2 in https://github.com/novuhq/novu/pull/1810
    • Contributors section properly loading in README by @Astrodevil in https://github.com/novuhq/novu/pull/1808
    • add apns provider initaization usage by @ShashankKumarSaxena in https://github.com/novuhq/novu/pull/1800
    • feat: added customizability to empty state in notification center by @TheLearneer in https://github.com/novuhq/novu/pull/1795
    • feat: Added Telnyx webhook parser by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1759
    • Fix "Need Help?" link in the Readme file by @tuanlc in https://github.com/novuhq/novu/pull/1827
    • Update README.md by @Raunik2 in https://github.com/novuhq/novu/pull/1817
    • feat: i18n support for Albanian by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1825
    • fix: update node version in .nvmrc by @devXprite in https://github.com/novuhq/novu/pull/1820
    • fix: fix wrong text in settings tab by @MaximFedarau in https://github.com/novuhq/novu/pull/1826
    • feat: notify about security changes on settings page by @lex111 in https://github.com/novuhq/novu/pull/1819
    • feat: add lithuanian i18n support by @MaximFedarau in https://github.com/novuhq/novu/pull/1840
    • [fix] Fix Tamil translation errors by @Akshu-on-github in https://github.com/novuhq/novu/pull/1836
    • Fix spelling and punctuation by @Raunik2 in https://github.com/novuhq/novu/pull/1832
    • fix: comment typo by @eltociear in https://github.com/novuhq/novu/pull/1849
    • Hyperlinked the novu logo. by @Abubakrce19 in https://github.com/novuhq/novu/pull/1858
    • fix: layout and details for feed by @davidsoderberg in https://github.com/novuhq/novu/pull/1855
    • feat: Latvian language i18n support by @MaximFedarau in https://github.com/novuhq/novu/pull/1851
    • Fix missing integration error not shown for email and sms by @ainouzgali in https://github.com/novuhq/novu/pull/1857
    • [feat] Add section about Jarvis by @Akshu-on-github in https://github.com/novuhq/novu/pull/1852
    • fix: so parent digest is saved on digested notifications by @davidsoderberg in https://github.com/novuhq/novu/pull/1869
    • i18n support for Bihari language by @omimakhare in https://github.com/novuhq/novu/pull/1870
    • removed duplicate entry and corrected alphabetical order by @omimakhare in https://github.com/novuhq/novu/pull/1871
    • feat(web): accordion for execution details modal by @p-fernandez in https://github.com/novuhq/novu/pull/1862
    • [docs] FAQ: How do I customize messages on Novu? by @Akshu-on-github in https://github.com/novuhq/novu/pull/1838
    • fix: add Redis optional configurable password by @ljobse in https://github.com/novuhq/novu/pull/1864
    • very minor typo in fr translation by @cuitlazotlac in https://github.com/novuhq/novu/pull/1877
    • Update integrations.md by @Raunik2 in https://github.com/novuhq/novu/pull/1818
    • Improved subscriber.md by @Abubakrce19 in https://github.com/novuhq/novu/pull/1873
    • refactor: auth pages improvements by @lex111 in https://github.com/novuhq/novu/pull/1865
    • fix: make proper color for box icon in dark mode by @lex111 in https://github.com/novuhq/novu/pull/1841
    • fix: so underscores are replaced with space in step type for step name by @davidsoderberg in https://github.com/novuhq/novu/pull/1883
    • fix: show and hide raw content of detail by @davidsoderberg in https://github.com/novuhq/novu/pull/1885
    • i18n Amharic language support by @rameshwaghmare123 in https://github.com/novuhq/novu/pull/1886
    • fix: make visible code block border on scroll by @lex111 in https://github.com/novuhq/novu/pull/1884
    • chore: Improved quick-start.md by @Abubakrce19 in https://github.com/novuhq/novu/pull/1896
    • docs: Improve deploy using docker pages by @npentrel in https://github.com/novuhq/novu/pull/1913
    • docs: Improve Architecture page by @npentrel in https://github.com/novuhq/novu/pull/1912
    • feat: added a detailed PR Template by @MrKrishnaAgarwal in https://github.com/novuhq/novu/pull/1866
    • docs: fixed typo's 🛠 by @MrKrishnaAgarwal in https://github.com/novuhq/novu/pull/1915
    • Small details changes - debugging by @ainouzgali in https://github.com/novuhq/novu/pull/1920
    • refactor: make trigger cards clickable by @lex111 in https://github.com/novuhq/novu/pull/1889
    • i18n Samoan language support by @MrKrishnaAgarwal in https://github.com/novuhq/novu/pull/1891
    • fix(web): remove back link and fix layout footer of exec-det by @p-fernandez in https://github.com/novuhq/novu/pull/1894
    • fix(web): wrap error icon to notification icon for any device size by @p-fernandez in https://github.com/novuhq/novu/pull/1895
    • feat(web): temporarily hide webhook feedback from ui by @p-fernandez in https://github.com/novuhq/novu/pull/1926
    • fix(doc): fix typos in "Run Novu locally" doc by @vrabe in https://github.com/novuhq/novu/pull/1908
    • Support for handlebars dateFormat by @chavda-bhavik in https://github.com/novuhq/novu/pull/1823
    • docs: Improve quick start by @npentrel in https://github.com/novuhq/novu/pull/1910
    • docs: change issues and discussions in contributing.md to links instead of plain text by @washbin in https://github.com/novuhq/novu/pull/1899
    • docs: Improve Run Novu locally docs by @npentrel in https://github.com/novuhq/novu/pull/1911
    • feat: Add Feeds Module to node package by @viveknshah in https://github.com/novuhq/novu/pull/1903
    • added link for issues and discussion by @Akshay-21 in https://github.com/novuhq/novu/pull/1904
    • Updated readme with code of conduct by @Akshay-21 in https://github.com/novuhq/novu/pull/1905
    • i18n support for Bosnian language by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1875
    • fix: color of digest icon if no explicit color is passed by @ainouzgali in https://github.com/novuhq/novu/pull/1931
    • fix: so email and phone are show on subscriber in trigger example by @davidsoderberg in https://github.com/novuhq/novu/pull/1927
    • fix: remove box shadow from got a question button by @davidsoderberg in https://github.com/novuhq/novu/pull/1939
    • feat: add default width and height for digest icon by @davidsoderberg in https://github.com/novuhq/novu/pull/1940
    • feat: add community usecase projects docs page by @davidsoderberg in https://github.com/novuhq/novu/pull/1937
    • fix: docs about projects and articles by @davidsoderberg in https://github.com/novuhq/novu/pull/1941
    • fix(web): avoid execution details modal to break when no subscriber vars by @p-fernandez in https://github.com/novuhq/novu/pull/1943
    • feat(api): trim the response of get notification endpoint by @p-fernandez in https://github.com/novuhq/novu/pull/1942
    • fix: so success message in execution modal will be last detail message by @davidsoderberg in https://github.com/novuhq/novu/pull/1945
    • Use Java-style array declaration instead of C-style array declaration… by @wanderer163 in https://github.com/novuhq/novu/pull/1932
    • Fix grammar and typos in the READMEs by @wanderer163 in https://github.com/novuhq/novu/pull/1934
    • Show indication for a merged digested execution - debugging by @ainouzgali in https://github.com/novuhq/novu/pull/1929
    • Add environment module by @Wyfy0107 in https://github.com/novuhq/novu/pull/1928
    • feat: add error of invalid json on test workflow params by @ainouzgali in https://github.com/novuhq/novu/pull/1954
    • Refactor webhook provider statuses by @davidsoderberg in https://github.com/novuhq/novu/pull/1953
    • feat: add text about update frequency by @davidsoderberg in https://github.com/novuhq/novu/pull/1955
    • fix(web): make step hover border round by @p-fernandez in https://github.com/novuhq/novu/pull/1948
    • test(navmenu): make sure when click menu item class will change to active state by @chaiwattsw in https://github.com/novuhq/novu/pull/1829
    • Nv 1128 got q modal not opened when clicked by @p-fernandez in https://github.com/novuhq/novu/pull/1961
    • feat(web): add hover styles to activity list items by @p-fernandez in https://github.com/novuhq/novu/pull/1962
    • fix(web): pass the values to trigger snippet by @p-fernandez in https://github.com/novuhq/novu/pull/1952
    • Nv 1136 show only the json object on trigger information window by @ainouzgali in https://github.com/novuhq/novu/pull/1966
    • feat: improve pending messages for digest and delay by @ainouzgali in https://github.com/novuhq/novu/pull/1967
    • Stop refetch when status is not pending by @ainouzgali in https://github.com/novuhq/novu/pull/1968
    • refactor: updated the link for create organization redirect by @BiswaViraj in https://github.com/novuhq/novu/pull/1973
    • refactor: usage of execution details status to job status by @davidsoderberg in https://github.com/novuhq/novu/pull/1974
    • fix: details icon to show failed and success icons by @davidsoderberg in https://github.com/novuhq/novu/pull/1977
    • Fix(notification center) api calls on first render by @djabarovgeorge in https://github.com/novuhq/novu/pull/1976

    New Contributors

    • @matigumma made their first contribution in https://github.com/novuhq/novu/pull/1260
    • @dcamarasa made their first contribution in https://github.com/novuhq/novu/pull/1238
    • @DanishOnGit made their first contribution in https://github.com/novuhq/novu/pull/1268
    • @p-fernandez made their first contribution in https://github.com/novuhq/novu/pull/1284
    • @Cliftonz made their first contribution in https://github.com/novuhq/novu/pull/1285
    • @florian-lefebvre made their first contribution in https://github.com/novuhq/novu/pull/1292
    • @mohanthilak made their first contribution in https://github.com/novuhq/novu/pull/1314
    • @LucasLeandroBR made their first contribution in https://github.com/novuhq/novu/pull/1325
    • @krshkun made their first contribution in https://github.com/novuhq/novu/pull/1329
    • @stanulilic made their first contribution in https://github.com/novuhq/novu/pull/1335
    • @ozanuslan made their first contribution in https://github.com/novuhq/novu/pull/1351
    • @Chii-Onan made their first contribution in https://github.com/novuhq/novu/pull/1354
    • @diwash007 made their first contribution in https://github.com/novuhq/novu/pull/1361
    • @geisterfurz007 made their first contribution in https://github.com/novuhq/novu/pull/1369
    • @kVarunkk made their first contribution in https://github.com/novuhq/novu/pull/1388
    • @VasuDevrani made their first contribution in https://github.com/novuhq/novu/pull/1384
    • @vanyaxk made their first contribution in https://github.com/novuhq/novu/pull/1379
    • @saby22 made their first contribution in https://github.com/novuhq/novu/pull/1381
    • @MrKrishnaAgarwal made their first contribution in https://github.com/novuhq/novu/pull/1394
    • @aguywithnojob made their first contribution in https://github.com/novuhq/novu/pull/1389
    • @Susmita-Dey made their first contribution in https://github.com/novuhq/novu/pull/1393
    • @Asmit2952 made their first contribution in https://github.com/novuhq/novu/pull/1353
    • @ArmanChand made their first contribution in https://github.com/novuhq/novu/pull/1373
    • @tomasbranda made their first contribution in https://github.com/novuhq/novu/pull/1380
    • @AshishSharma1203 made their first contribution in https://github.com/novuhq/novu/pull/1403
    • @abhilipsasahoo03 made their first contribution in https://github.com/novuhq/novu/pull/1406
    • @omimakhare made their first contribution in https://github.com/novuhq/novu/pull/1420
    • @fadkeabhi made their first contribution in https://github.com/novuhq/novu/pull/1436
    • @IamsahilPhadtare made their first contribution in https://github.com/novuhq/novu/pull/1440
    • @rahmat-st made their first contribution in https://github.com/novuhq/novu/pull/1434
    • @pmontp19 made their first contribution in https://github.com/novuhq/novu/pull/1428
    • @sebastiaanviaene made their first contribution in https://github.com/novuhq/novu/pull/1418
    • @psteinroe made their first contribution in https://github.com/novuhq/novu/pull/1258
    • @thomasbnt made their first contribution in https://github.com/novuhq/novu/pull/1337
    • @MihirShinde-29 made their first contribution in https://github.com/novuhq/novu/pull/1425
    • @Yash-sudo-web made their first contribution in https://github.com/novuhq/novu/pull/1444
    • @yk-jp made their first contribution in https://github.com/novuhq/novu/pull/1412
    • @k8isdead made their first contribution in https://github.com/novuhq/novu/pull/1430
    • @olinabin2004 made their first contribution in https://github.com/novuhq/novu/pull/1472
    • @Rounak-28 made their first contribution in https://github.com/novuhq/novu/pull/1474
    • @AranavMahalpure made their first contribution in https://github.com/novuhq/novu/pull/1466
    • @dmulligan made their first contribution in https://github.com/novuhq/novu/pull/1497
    • @BoseSj made their first contribution in https://github.com/novuhq/novu/pull/1502
    • @nidble made their first contribution in https://github.com/novuhq/novu/pull/1482
    • @codingis4noobs2 made their first contribution in https://github.com/novuhq/novu/pull/1451
    • @npv12 made their first contribution in https://github.com/novuhq/novu/pull/1486
    • @L-390 made their first contribution in https://github.com/novuhq/novu/pull/1477
    • @akshitagupta15june made their first contribution in https://github.com/novuhq/novu/pull/1485
    • @thenishantsapkota made their first contribution in https://github.com/novuhq/novu/pull/1505
    • @ManishModak made their first contribution in https://github.com/novuhq/novu/pull/1504
    • @og118 made their first contribution in https://github.com/novuhq/novu/pull/1535
    • @kailashchoudhary11 made their first contribution in https://github.com/novuhq/novu/pull/1563
    • @bishal7679 made their first contribution in https://github.com/novuhq/novu/pull/1575
    • @daniel-shuy made their first contribution in https://github.com/novuhq/novu/pull/1542
    • @michizhou made their first contribution in https://github.com/novuhq/novu/pull/1547
    • @TheLearneer made their first contribution in https://github.com/novuhq/novu/pull/1473
    • @lex111 made their first contribution in https://github.com/novuhq/novu/pull/1584
    • @kaustav202 made their first contribution in https://github.com/novuhq/novu/pull/1554
    • @Dilshan-H made their first contribution in https://github.com/novuhq/novu/pull/1511
    • @nilesh-maurya made their first contribution in https://github.com/novuhq/novu/pull/1605
    • @munyoudoum made their first contribution in https://github.com/novuhq/novu/pull/1566
    • @Akash190104 made their first contribution in https://github.com/novuhq/novu/pull/1608
    • @ShaneMaglangit made their first contribution in https://github.com/novuhq/novu/pull/1626
    • @Aditya-Kapadiya made their first contribution in https://github.com/novuhq/novu/pull/1616
    • @Smartmind12 made their first contribution in https://github.com/novuhq/novu/pull/1587
    • @harshagrawal523 made their first contribution in https://github.com/novuhq/novu/pull/1620
    • @washbin made their first contribution in https://github.com/novuhq/novu/pull/1623
    • @vrabe made their first contribution in https://github.com/novuhq/novu/pull/1611
    • @immattdavison made their first contribution in https://github.com/novuhq/novu/pull/1629
    • @Srikarmk made their first contribution in https://github.com/novuhq/novu/pull/1628
    • @nickprinsloo made their first contribution in https://github.com/novuhq/novu/pull/1515
    • @saimaheshtaduri made their first contribution in https://github.com/novuhq/novu/pull/1636
    • @das-amit made their first contribution in https://github.com/novuhq/novu/pull/1669
    • @maglionaire made their first contribution in https://github.com/novuhq/novu/pull/1602
    • @LunarMarathon made their first contribution in https://github.com/novuhq/novu/pull/1673
    • @emhng made their first contribution in https://github.com/novuhq/novu/pull/1506
    • @DonnachaHeff made their first contribution in https://github.com/novuhq/novu/pull/1638
    • @ranodeepbanerjee made their first contribution in https://github.com/novuhq/novu/pull/1691
    • @furtidev made their first contribution in https://github.com/novuhq/novu/pull/1692
    • @L-U-C-K-Y made their first contribution in https://github.com/novuhq/novu/pull/1627
    • @CursedRock17 made their first contribution in https://github.com/novuhq/novu/pull/1699
    • @PalashDhabale made their first contribution in https://github.com/novuhq/novu/pull/1632
    • @hitblast made their first contribution in https://github.com/novuhq/novu/pull/1705
    • @shtelzerartem made their first contribution in https://github.com/novuhq/novu/pull/1697
    • @Sreevidya181 made their first contribution in https://github.com/novuhq/novu/pull/1711
    • @priyanshkulshrestha made their first contribution in https://github.com/novuhq/novu/pull/1714
    • @akarsh-jain-790 made their first contribution in https://github.com/novuhq/novu/pull/1712
    • @TheZal made their first contribution in https://github.com/novuhq/novu/pull/1718
    • @MaximFedarau made their first contribution in https://github.com/novuhq/novu/pull/1738
    • @tanishk-23 made their first contribution in https://github.com/novuhq/novu/pull/1730
    • @codingmickey made their first contribution in https://github.com/novuhq/novu/pull/1670
    • @soundarrajan-official made their first contribution in https://github.com/novuhq/novu/pull/1724
    • @SarojWasti made their first contribution in https://github.com/novuhq/novu/pull/1748
    • @ShashankKumarSaxena made their first contribution in https://github.com/novuhq/novu/pull/1793
    • @Raunik2 made their first contribution in https://github.com/novuhq/novu/pull/1810
    • @Astrodevil made their first contribution in https://github.com/novuhq/novu/pull/1808
    • @tuanlc made their first contribution in https://github.com/novuhq/novu/pull/1827
    • @devXprite made their first contribution in https://github.com/novuhq/novu/pull/1820
    • @Akshu-on-github made their first contribution in https://github.com/novuhq/novu/pull/1836
    • @eltociear made their first contribution in https://github.com/novuhq/novu/pull/1849
    • @Abubakrce19 made their first contribution in https://github.com/novuhq/novu/pull/1858
    • @ljobse made their first contribution in https://github.com/novuhq/novu/pull/1864
    • @cuitlazotlac made their first contribution in https://github.com/novuhq/novu/pull/1877
    • @rameshwaghmare123 made their first contribution in https://github.com/novuhq/novu/pull/1886
    • @npentrel made their first contribution in https://github.com/novuhq/novu/pull/1913
    • @viveknshah made their first contribution in https://github.com/novuhq/novu/pull/1903
    • @Akshay-21 made their first contribution in https://github.com/novuhq/novu/pull/1904
    • @wanderer163 made their first contribution in https://github.com/novuhq/novu/pull/1932
    • @chaiwattsw made their first contribution in https://github.com/novuhq/novu/pull/1829

    Full Changelog: https://github.com/novuhq/novu/compare/v0.8.0...v0.9.0

    Source code(tar.gz)
    Source code(zip)
  • v0.8.0(Sep 21, 2022)

    Exciting news to share with you all! This cycle was a bit shorter because the team was on our very first company offsite, and it was the first time we met in person 😍

    Nonetheless, we prepared some of the long-awaited features based on your request. So let's dive in!

    Delay Step

    Starting with the v0.8.0 release, you will be able to add a new Delay step type that will delay the sending of the next step by the time you specify it too. This is useful if you wish to wait a day or an hour before sending something to the user.

    In the next feature, we will also allow passing a dynamic delay timestamp on the API request so you can create reminders and snooze for users based on a dynamic field. Exciting times 🤯 And thanks to our fantastic @ainouzgali, that took ownership of this one.

    Step Filters

    You can now filter step execution based on the request criteria from subscriber and payload. This can help customize flows for translation and only send specific steps based on subscriber properties such as paying customers, etc...

    Kudus to @davidsoderberg 🇸🇪 for making this a reality!

    Integration Store Encryption

    From this version, all secret credentials on the integration store will be encrypted on the database and decrypted in real time when needed to send an actual request. @djabarovgeorge made sure this feature is backward compatible, but you must add a new secret environment key when upgrading to v0.8.0.

    Migration guide

    You must pass a STORE_ENCRYPTION_KEY environment variable to your docker-compose .env file. This key should be 32 characters long and stored in a secret store.

    Multiple organizations switch on the web

    Thanks to @venarius you can now switch between multiple organizations you are part of. Look at the new organization switcher at the left bottom part of the navigation menu 😍

    Template variable protection and defaults

    One of the most exciting features of this release was done by the one and only @venarius. On the template level, you can make some variables required or provide polyfill values for each.

    No more Hello null!

    CleanShot 2022-09-20 at 15 55 31@2x

    And much more!

    • feat: add ability for users to switch and create multiple organizations by @venarius in https://github.com/novuhq/novu/pull/1127
    • feat: add on tab click property to notification center by @davidsoderberg in https://github.com/novuhq/novu/pull/1194
    • i18n - Chinese support by @miles170 in https://github.com/novuhq/novu/pull/1195
    • feat: allow disabling of user registration in docker environment by @venarius in https://github.com/novuhq/novu/pull/1142
    • Linked License, Contribution Guidelines and Contributors List in README.md by @AmanNegi in https://github.com/novuhq/novu/pull/1192
    • fix: social image and add keywords by @jainpawan21 in https://github.com/novuhq/novu/pull/1179
    • feat: add the externalUrlRegex param for Algolia by @andrewgolovanov in https://github.com/novuhq/novu/pull/1185
    • i18n - Bengali support by @samaranand in https://github.com/novuhq/novu/pull/1139
    • Fixed broken link to react components page by @SpencerMiller23 in https://github.com/novuhq/novu/pull/1201
    • feat: add pagination support in templates page by @jainpawan21 in https://github.com/novuhq/novu/pull/1131
    • Delete message endpoint by @davidsoderberg in https://github.com/novuhq/novu/pull/1193
    • feat: added handlebar variable checker and defaults by @venarius in https://github.com/novuhq/novu/pull/1145
    • fix: flow editor height by @venarius in https://github.com/novuhq/novu/pull/1210
    • fix: added new languages to docs by @venarius in https://github.com/novuhq/novu/pull/1212
    • feat(readme): change contributors link to community heroes by @nevo-david in https://github.com/novuhq/novu/pull/1216
    • feat: added env variables & explanation to docs by @venarius in https://github.com/novuhq/novu/pull/1213
    • Feat position notification center by @BiswaViraj in https://github.com/novuhq/novu/pull/1184
    • fix: workaround with validation pipe nan casting by @scopsy in https://github.com/novuhq/novu/pull/1217
    • added croatian by @JakovGlavac in https://github.com/novuhq/novu/pull/1214
    • fix: sentry reporting errors by @scopsy in https://github.com/novuhq/novu/pull/1218
    • test: basic e2e tests for delay by @ainouzgali in https://github.com/novuhq/novu/pull/1219
    • Provider api key encryption by @djabarovgeorge in https://github.com/novuhq/novu/pull/1207
    • docs: delay doc by @ainouzgali in https://github.com/novuhq/novu/pull/1221
    • fix: embed <--> widget communication issue on safari by @LetItRock in https://github.com/novuhq/novu/pull/1197
    • remove mongoose import by @ainouzgali in https://github.com/novuhq/novu/pull/1226
    • feat: upgrade widget cypress version by @scopsy in https://github.com/novuhq/novu/pull/1228
    • fix: update api key creator when he is removed by @scopsy in https://github.com/novuhq/novu/pull/1233
    • fix: fcm fallback by @djabarovgeorge in https://github.com/novuhq/novu/pull/1235
    • fix: fix inactive integrations still being used by @venarius in https://github.com/novuhq/novu/pull/1250
    • fix: add red dot in node if content is empty by @jainpawan21 in https://github.com/novuhq/novu/pull/1143
    • feat: iframe callbacks by @venarius in https://github.com/novuhq/novu/pull/1243
    • fix: added base url for mailgun provider by @venarius in https://github.com/novuhq/novu/pull/1253
    • feat: add endpoint to fetch messages by @davidsoderberg in https://github.com/novuhq/novu/pull/1227

    New Contributors

    • @miles170 made their first contribution in https://github.com/novuhq/novu/pull/1195
    • @AmanNegi made their first contribution in https://github.com/novuhq/novu/pull/1192
    • @samaranand made their first contribution in https://github.com/novuhq/novu/pull/1139
    • @JakovGlavac made their first contribution in https://github.com/novuhq/novu/pull/1214

    Full Changelog: https://github.com/novuhq/novu/compare/v0.7.3...v0.8.0

    Source code(tar.gz)
    Source code(zip)
  • v0.7.3(Sep 2, 2022)

    What's Changed

    • docs: Twilio example with numbers by @eddiejaoude in https://github.com/novuhq/novu/pull/1159
    • feat: Allow adding a custom header to the notification center component by @davidsoderberg in https://github.com/novuhq/novu/pull/1163
    • fix: Fix subscriber endpoints for the notifications feed by @davidsoderberg in https://github.com/novuhq/novu/pull/1166
    • fix: Margin issue in settings page by @adarshajit in https://github.com/novuhq/novu/pull/1133
    • feat: Update redirects for API documentation by @andrewgolovanov in https://github.com/novuhq/novu/pull/1170
    • refactor: Introduce a @novu/client package to handle reusable js front-end logic by @wpoynter in https://github.com/novuhq/novu/pull/1113
    • feat: Add a step to deploy API documentation by @andrewgolovanov in https://github.com/novuhq/novu/pull/1154
    • fix: Slug for redirects on API pages by @andrewgolovanov in https://github.com/novuhq/novu/pull/1171
    • refactor: Use date-fns instead of moment by @venarius in https://github.com/novuhq/novu/pull/1122
    • docs: Updated the readme documentation to make email param as array. by @mrajen27 in https://github.com/novuhq/novu/pull/1161
    • fix: Redirects for API documentation by @andrewgolovanov in https://github.com/novuhq/novu/pull/1175
    • fix: Add set credentials info in push by @jainpawan21 in https://github.com/novuhq/novu/pull/1178
    • Added documentation for triggering events when self-hosting by @SpencerMiller23 in https://github.com/novuhq/novu/pull/1168

    New Contributors

    • @eddiejaoude made their first contribution in https://github.com/novuhq/novu/pull/1159
    • @adarshajit made their first contribution in https://github.com/novuhq/novu/pull/1133
    • @wpoynter made their first contribution in https://github.com/novuhq/novu/pull/1113
    • @mrajen27 made their first contribution in https://github.com/novuhq/novu/pull/1161
    • @SpencerMiller23 made their first contribution in https://github.com/novuhq/novu/pull/1168

    Full Changelog: https://github.com/novuhq/novu/compare/v0.7.2...v0.7.3

    Source code(tar.gz)
    Source code(zip)
  • v0.7.2(Aug 30, 2022)

    A small patch release with work created by the community and our core team.

    What's changed

    • Support for notification identifier update by @jainpawan21 in https://github.com/novuhq/novu/pull/1089
    • Support custom language for iframe embed widget by @venarius in https://github.com/novuhq/novu/pull/1115
    • Use react-router link for navbar menu instead of a tag by @venarius in https://github.com/novuhq/novu/pull/1094
    • Add showLastUpdateAuthor and showLastUpdateTime in docs by @jainpawan21 in https://github.com/novuhq/novu/pull/1096
    • Redis installation docs by @KarlGusta in https://github.com/novuhq/novu/pull/1110
    • Update the links and logo in the navbar by @andrewgolovanov in https://github.com/novuhq/novu/pull/1121
    • Add ability for admin to change member roles by @venarius in https://github.com/novuhq/novu/pull/1091
    • Added better errors for signup by @venarius in https://github.com/novuhq/novu/pull/1116
    • Normalize email on password reset by @venarius in https://github.com/novuhq/novu/pull/1117
    • Add seen unseen combined count check by @djabarovgeorge in https://github.com/novuhq/novu/pull/1106
    • Refactor auth provider by @djabarovgeorge in https://github.com/novuhq/novu/pull/1123
    • Refactor web user preference design by @djabarovgeorge in https://github.com/novuhq/novu/pull/1112
    • Add rebuild command by @djabarovgeorge in https://github.com/novuhq/novu/pull/1108
    • Fix minor spelling errors by @asgeirf in https://github.com/novuhq/novu/pull/1126
    • Add in app editor error alert by @djabarovgeorge in https://github.com/novuhq/novu/pull/1119
    • Cleanup email workflow visuals by @venarius in https://github.com/novuhq/novu/pull/1132
    • Remove max width in hmac desc by @jainpawan21 in https://github.com/novuhq/novu/pull/1134
    • Use cursor pointer for switch by @venarius in https://github.com/novuhq/novu/pull/1135
    • Enforce pnpm 7.5.0 by @venarius in https://github.com/novuhq/novu/pull/1125
    • Throttle refetch of notifications by @venarius in https://github.com/novuhq/novu/pull/1109
    • Remove embedded CSS to body done by widget embed by @davidsoderberg in https://github.com/novuhq/novu/pull/1130
    • Fix unhandled SES errors generated by @davidsoderberg in https://github.com/novuhq/novu/pull/1146
    • Add i18n Malayalam support by @varghesejose2020 in https://github.com/novuhq/novu/pull/1136
    • Configure redirect and rewrite rules for Netlify by @andrewgolovanov in https://github.com/novuhq/novu/pull/1150
    • Filter steps can be used for step filters by @davidsoderberg in https://github.com/novuhq/novu/pull/1149
    • Fix failing web e2e test by @venarius in https://github.com/novuhq/novu/pull/1141

    New Contributors

    • @KarlGusta made their first contribution in https://github.com/novuhq/novu/pull/1110
    • @asgeirf made their first contribution in https://github.com/novuhq/novu/pull/1126
    • @varghesejose2020 made their first contribution in https://github.com/novuhq/novu/pull/1136

    Full Changelog: https://github.com/novuhq/novu/compare/v0.7.1...v0.7.2

    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Aug 21, 2022)

    This is our biggest release yet, with over 30 contributors and 130 Pull requests with awaited features such as Push, Chat, Subscriber Preference API, API Reference documentation, and more... Let's dive in!

    Subscriber Preferences API

    From this release, your application notification subscriber will be able to configure their preferences from within the notification center or directly via our API. image

    By default, all existing templates prior to 0.7.0 will be marked as critical and will be excluded from the preference list. To add them, go to the template editor page and un-mark the critical template from the preference defaults.

    New templates created after this release will be added to the preference list, and the user can select from the available channels what to not receive and over which channel.

    To read more about Subscriber Preference visit the documentation.

    Push notifications with FCM

    Excited to share that from now it's possible to send push notifications to mobile devices using FCM. This feature was entirely built by our amazing community members and specifically by @raikasdev 💖. APNS and other providers' support will be landed in the next release. Looking for other push providers? Create a GitHub issue or contribute directly.

    To send over the push channel, deviceTokens should be added to the specified subscribers. To read more about it visit the documentation on subscriber credentials and our FCM guide.

    Chat Apps (Slack and Discord)

    One of our requested features was to send notifications with chat applications such as Slack and Discord. And now you can! Chat apps could be directly configured from the template editor and delivered using the webhook_url mechanism of the chat providers.

    To read more about it, visit our guide.

    API Reference documentation

    With so many requests by the community members, we just had to do something about it ;) With help from @andrewgolovanov and the entire pixel point team, we are honored to present the first version of our API reference.

    Notable changes

    • feat(web): Allow removing a team member for admins #841 by @MaurerKrisztian in https://github.com/novuhq/novu/pull/888
    • feat: Customize notification list item by @davidsoderberg in https://github.com/novuhq/novu/pull/880
    • feat: Support for google cloud storage by @Lian1230 in https://github.com/novuhq/novu/pull/934
    • feat(web): Invite for a team member can be resent by @venarius in https://github.com/novuhq/novu/pull/998
    • feat: Azure blob storage support by @proDOOMman in https://github.com/novuhq/novu/pull/1001
    • feat: Migrate from moment to date-fns by @venarius in https://github.com/novuhq/novu/pull/1032

    New notification center languages

    • Spanish 🇪🇸 🥘 by @csachdeva83
    • Finish 🇫🇮 ☕ by @raikasdev
    • Hindi 🇮🇳🍛 by @jainpawan21
    • Gujarti 🇮🇳🍛 by @thisaakash
    • Russian 🇷🇺🪆 by @proDOOMman
    • French 🇫🇷🥖 by @csachdeva83
    • Arabic 🇸🇦🕌 by @ArshErgon
    • Italian 🇮🇹🍕 by @Zed93
    • Ukrainian 🇺🇦🌻 by @proDOOMman

    Other improvements

    • Fix activity emails filter by @djabarovgeorge in https://github.com/novuhq/novu/pull/576
    • Netcore provider logos for dark and white by @EmiliyaGrossman in https://github.com/novuhq/novu/pull/825
    • Docker tag action for packages by @scopsy in https://github.com/novuhq/novu/pull/905
    • feat: Implement optional credential fields by @WinterCore in https://github.com/novuhq/novu/pull/909
    • fix: breaking page on deleted template by @scopsy in https://github.com/novuhq/novu/pull/913
    • feat: add netcore provider by @davidsoderberg in https://github.com/novuhq/novu/pull/813
    • Docker staged build on API docker file by @scopsy in https://github.com/novuhq/novu/pull/933
    • refactor: api get use case by @djabarovgeorge in https://github.com/novuhq/novu/pull/927
    • feat: add endpoint to get subscriber by subscriber id by @davidsoderberg in https://github.com/novuhq/novu/pull/945
    • Template IDs for invites and password reset can be configured by environment by @proDOOMman in https://github.com/novuhq/novu/pull/797
    • fix: User should be logged out when API sends 401 Unauthorized error by @chavda-bhavik in https://github.com/novuhq/novu/pull/935
    • Cypress tests for user preference by @ainouzgali in https://github.com/novuhq/novu/pull/952
    • fix: add stop-only dev dependency by @jainpawan21 in https://github.com/novuhq/novu/pull/960
    • fix: safari in-app notification template glitches by @LetItRock in https://github.com/novuhq/novu/pull/937
    • fix: move drop zone to add node by @jainpawan21 in https://github.com/novuhq/novu/pull/950
    • Events for user preferences by @ainouzgali in https://github.com/novuhq/novu/pull/976
    • Allow hiding user preferences cog by @ainouzgali in https://github.com/novuhq/novu/pull/981
    • feat: improve the command.create static function to be reused by @LetItRock in https://github.com/novuhq/novu/pull/987
    • refactor: update theme default by @djabarovgeorge in https://github.com/novuhq/novu/pull/990
    • fix: upgrade node-fetch by @Lian1230 in https://github.com/novuhq/novu/pull/988
    • Compound index for (_environmentId, subscriberId) by @proDOOMman in https://github.com/novuhq/novu/pull/980
    • changed invite link to a working one by @crismxiex in https://github.com/novuhq/novu/pull/997
    • fix: upgrade semantic-release by @Lian1230 in https://github.com/novuhq/novu/pull/995
    • Switch deprecated faker.name.title function to jobTitle by @Rutam21 in https://github.com/novuhq/novu/pull/1017
    • fix: added docs and libs folders to lint-staged by @venarius in https://github.com/novuhq/novu/pull/1010
    • feat: add loading overlay to invites page by @venarius in https://github.com/novuhq/novu/pull/1013
    • fix: Fix lint staged for multiple folders and added eslint step by @venarius in https://github.com/novuhq/novu/pull/1025
    • fix: update the logo of documentation by @vannyle in https://github.com/novuhq/novu/pull/1028
    • fix: notification center moment locale change by @venarius in https://github.com/novuhq/novu/pull/1026
    • Added toggleTabIndex attribute in PasswordInput for focus Management … by @sachinsom93 in https://github.com/novuhq/novu/pull/1029
    • Upgrade Novu Issue Templates to use Github Issue Forms by @Rutam21 in https://github.com/novuhq/novu/pull/1035
    • fix: promotion of delete notification template change by @davidsoderberg in https://github.com/novuhq/novu/pull/1042
    • fix: user preference promotion by @djabarovgeorge in https://github.com/novuhq/novu/pull/1043
    • feat: better error for login page by @venarius in https://github.com/novuhq/novu/pull/1038
    • feat: add accept term and privacy query by @djabarovgeorge in https://github.com/novuhq/novu/pull/1020
    • feat: added support and docs bottom links to sidenav by @venarius in https://github.com/novuhq/novu/pull/1045
    • Update arrow functionality on missing provider by @Rutam21 in https://github.com/novuhq/novu/pull/1046
    • Fixed text for email field for provider connection by @oba2311 in https://github.com/novuhq/novu/pull/1036
    • feat: add swagger for feeds controller by @davidsoderberg in https://github.com/novuhq/novu/pull/1051
    • fix: 200 and 201 for same endpoint by @davidsoderberg in https://github.com/novuhq/novu/pull/1053
    • feat: show supported locales for notification-center in docs by @venarius in https://github.com/novuhq/novu/pull/1044
    • fix: external api accessible for endpoints with swagger by @davidsoderberg in https://github.com/novuhq/novu/pull/1059
    • feat: add missing alerts pre action for push chat by @djabarovgeorge in https://github.com/novuhq/novu/pull/1061
    • feat: show save notification on email template button by @venarius in https://github.com/novuhq/novu/pull/1060
    • web accept terms and privacy by @djabarovgeorge in https://github.com/novuhq/novu/pull/1055
    • Fixed Typo [Line 51]✔️ by @CodrShiv in https://github.com/novuhq/novu/pull/1071
    • feat: change email template text direction to text align by @venarius in https://github.com/novuhq/novu/pull/1063
    • feat: add broadcast to node package by @davidsoderberg in https://github.com/novuhq/novu/pull/1069

    New Contributors

    • @EmiliyaGrossman made their first contribution in https://github.com/novuhq/novu/pull/825
    • @dha-stix made their first contribution in https://github.com/novuhq/novu/pull/882
    • @oba2311 made their first contribution in https://github.com/novuhq/novu/pull/946
    • @jainpawan21 made their first contribution in https://github.com/novuhq/novu/pull/963
    • @csachdeva83 made their first contribution in https://github.com/novuhq/novu/pull/967
    • @proDOOMman made their first contribution in https://github.com/novuhq/novu/pull/797
    • @chavda-bhavik made their first contribution in https://github.com/novuhq/novu/pull/935
    • @LetItRock made their first contribution in https://github.com/novuhq/novu/pull/937
    • @thisaakash made their first contribution in https://github.com/novuhq/novu/pull/972
    • @ArshErgon made their first contribution in https://github.com/novuhq/novu/pull/974
    • @crismxiex made their first contribution in https://github.com/novuhq/novu/pull/997
    • @Zed93 made their first contribution in https://github.com/novuhq/novu/pull/996
    • @venarius made their first contribution in https://github.com/novuhq/novu/pull/998
    • @Rutam21 made their first contribution in https://github.com/novuhq/novu/pull/1017
    • @sachinsom93 made their first contribution in https://github.com/novuhq/novu/pull/1029
    • @andrewgolovanov made their first contribution in https://github.com/novuhq/novu/pull/1070
    • @CodrShiv made their first contribution in https://github.com/novuhq/novu/pull/1071

    Full Changelog: https://github.com/novuhq/novu/compare/v0.6.2...v0.7.0

    Source code(tar.gz)
    Source code(zip)
  • v0.6.2(Jul 31, 2022)

    i18n support for notification-center component

    It is now possible to translate the notification center UI elements by passing a translation object or a premade translation. More info can be found on the documentation page.

    Custom object implementation:

    <NovuProvider i18n={{
      // Make sure that the following is a proper 2 letter language code,
      // since this is used by moment.js in order to calculate the relative time for each notification
      lang: "de",
      
      translations: {
        poweredBy: "unterstützt von",
        markAllAsRead: "Alles als gelesen markieren",
        notifications: "Benachrichtigungen",
      },
    }}>
    </NovuProvider>
    

    Premade languages created by the community:

    <NovuProvider i18n={'en'}>
    </NovuProvider>
    

    What else has changed

    • fix: so dkim can be undefined by @davidsoderberg in https://github.com/novuhq/novu/pull/892
    • fix: remove console errors by @ainouzgali in https://github.com/novuhq/novu/pull/889
    • fix: remove un-needed node-fetcher dependency by @scopsy in https://github.com/novuhq/novu/pull/895
    • fix: add button type for unstyled buttons by @scopsy in https://github.com/novuhq/novu/pull/894
    • fix: use notification default storeid by @djabarovgeorge in https://github.com/novuhq/novu/pull/897
    • Cypress component testing seed for WEB project by @scopsy in https://github.com/novuhq/novu/pull/899
    • fix: add subject rendering variables with handlebars by @scopsy in https://github.com/novuhq/novu/pull/903
    • fix: add missing shared exports by @scopsy in https://github.com/novuhq/novu/pull/902

    Full Changelog: https://github.com/novuhq/novu/compare/v0.6.0...v0.6.2

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Jul 24, 2022)

    Version v0.6.0 introduces so many long-awaited features such as: Digest Engine, multi-tab support on notification center, notifications actions and so many other improvements and bug fixes. This release is the hard work of more 16 individual contributors and collaborators that made this version possible.

    Digest Engine

    The digest engine collects multiple trigger events and aggregates them into a single message delivered to the subscriber in form of an email, ,in-app notification or any other supported novu channel.

    This becomes useful when a user needs to be notified on a large number of triggers, and you want to avoid sending too many notifications. Novu will automatically batch the incoming trigger events based on the subscriberId and an optional digestKey that can be added to control the digestion of the events.

    Here is an overview of the digest flow, including both supported strategies: Regular and Backoff.

    image

    To learn more about the digest engine and the additional strategies and usage guide, visit our docs page here.

    Notification Actions

    Now, creating an even richer experience with the novu notification center is possible, and adding action buttons to a dedicated notification template. Subscribers can make interactions such as accepting invites or friend requests from the notification center without navigating to a different URL.

    CleanShot 2022-07-24 at 15 14 57@2x

    Multiple notification feeds

    It is now possible to configure multiple feed configurations for various notification center templates. The feeds created can be used to fetch notifications for each feed separately. This can help to achieve a multi-tab experience for subscribers depending on the actual use-cases.

    CleanShot 2022-07-24 at 15 19 49@2x

    New delivery providers

    • Termii by @samsoft00
    • Gupshup by @davidsoderberg

    System sync for dark and light modes

    Thanks to @FidalMathew you can now choose to sync your theme preference for you system, or select light & dark modes which will be persistent across browser refreshes.

    New Go-lang SDK

    Created by our amazing community member @samsoft00 you can now interact with Novu using the new go-lang SDK. Info can be found here: https://github.com/novuhq/go-novu

    Other notable changes

    • Docs: improve react-component code block by @murtuzaalisurti in https://github.com/novuhq/novu/pull/742
    • Remove unnesessary docker socket mount in docker-compose by @kymppi in https://github.com/novuhq/novu/pull/757
    • Upgrade pnpm to version 7 by @scopsy in https://github.com/novuhq/novu/pull/740
    • feat: add endpoint to get all subscribers by @davidsoderberg in https://github.com/novuhq/novu/pull/766
    • Node v16 support by @scopsy in https://github.com/novuhq/novu/pull/765
    • adding backendurl option for iFrame embed solution by @AlexVCS in https://github.com/novuhq/novu/pull/611
    • Create codeql-analysis.yml by @scopsy in https://github.com/novuhq/novu/pull/773
    • feat: upgrade node version images by @scopsy in https://github.com/novuhq/novu/pull/782
    • Fix docs links by @raikasdev in https://github.com/novuhq/novu/pull/785
    • fix: add pointer cursor to cta by @remirobichet in https://github.com/novuhq/novu/pull/798
    • NV-626: fix: Move focus to "YES" in the delete workflow step confirmation modal by @WinterCore in https://github.com/novuhq/novu/pull/800
    • fix (docs): missing link to guide on how to create a provider by @zakariaelas in https://github.com/novuhq/novu/pull/792
    • fix(apps/web): close menu on click outside in flow editor by @zakariaelas in https://github.com/novuhq/novu/pull/802
    • Update passport by @raikasdev in https://github.com/novuhq/novu/pull/805
    • Fix docs broken /docs/ redirect by @raikasdev in https://github.com/novuhq/novu/pull/806
    • feat: add trigger id to list and settings page by @raikasdev in https://github.com/novuhq/novu/pull/808
    • Add remove notification by @raikasdev in https://github.com/novuhq/novu/pull/809
    • fix: add a return statement on invite accept by @scopsy in https://github.com/novuhq/novu/pull/814
    • Parallel cypress testing by @scopsy in https://github.com/novuhq/novu/pull/815
    • NV-631 - fix(web): Redirect to getting started on first session by @WinterCore in https://github.com/novuhq/novu/pull/812
    • Updated Discord Invite Link by @iampearceman in https://github.com/novuhq/novu/pull/816
    • Fix organization invite issue by @scopsy in https://github.com/novuhq/novu/pull/821
    • feat: upgrade api nestjs to v9 by @scopsy in https://github.com/novuhq/novu/pull/822
    • Upgrade WS typescript version by @scopsy in https://github.com/novuhq/novu/pull/849
    • Update run-locally.md by @josephjosedev in https://github.com/novuhq/novu/pull/856
    • fix: Disable the delete step button on production by @WinterCore in https://github.com/novuhq/novu/pull/857
    • feat: added nest module async provider option by @shahriar-shojib in https://github.com/novuhq/novu/pull/844
    • Fix embed widget position option by @remirobichet in https://github.com/novuhq/novu/pull/864
    • docs: include golang code snippets to dashboard by @samsoft00 in https://github.com/novuhq/novu/pull/853
    • feat: add gupshup provider by @davidsoderberg in https://github.com/novuhq/novu/pull/862
    • feat: add so a text template can be provided for emails text version by @davidsoderberg in https://github.com/novuhq/novu/pull/874
    • fix: Theme is persistent by @FidalMathew in https://github.com/novuhq/novu/pull/852
    • fix: ses provider with attatchments by @davidsoderberg in https://github.com/novuhq/novu/pull/876
    • feat: add dkim config option for nodemailer by @davidsoderberg in https://github.com/novuhq/novu/pull/875
    • Use a docker image with both nodejs and python by @Lian1230 in https://github.com/novuhq/novu/pull/886
    • fix(logo): update mailjet logo in dark theme #878 by @MaurerKrisztian in https://github.com/novuhq/novu/pull/887

    New Contributors

    • @remirobichet made their first contribution in https://github.com/novuhq/novu/pull/798
    • @WinterCore made their first contribution in https://github.com/novuhq/novu/pull/800
    • @zakariaelas made their first contribution in https://github.com/novuhq/novu/pull/792
    • @josephjosedev made their first contribution in https://github.com/novuhq/novu/pull/856
    • @shahriar-shojib made their first contribution in https://github.com/novuhq/novu/pull/844
    • @Lian1230 made their first contribution in https://github.com/novuhq/novu/pull/886
    • @MaurerKrisztian made their first contribution in https://github.com/novuhq/novu/pull/887

    Full Changelog: https://github.com/novuhq/novu/compare/v0.5.1...v0.6.0

    Source code(tar.gz)
    Source code(zip)
  • v0.5.1(Jun 28, 2022)

    This minor release brings some UI and UX improvements to the notification workflow editor and some bug fixes.

    Upsert subscriber on event trigger

    Previously when a subscriber was created using the trigger.event method, we wouldn't update it's details with new information brought from the to object when another triggered was performed. This caused multiple users not to receive an email or SMS due to invalid email saved originally on the subscriber.

    Now the subscriber entity will be updated upon delivery.

    Bug Fixes

    When importing the @novu/notification-center using the method suggested in docs an error was received:

    Uncaught TypeError: Cannot read properties of undefined (reading 'unseenBadge')
    

    This is now fixed.

    What else Changed

    • test: refactor notifications editor spec by @davidsoderberg in https://github.com/novuhq/novu/pull/718
    • fix: not set as dirty when clicking on trigger by @ainouzgali in https://github.com/novuhq/novu/pull/719
    • fix: updated web/public/index.html and removed unused default-react logos by @devblin in https://github.com/novuhq/novu/pull/716
    • feat: add delete step modal by @davidsoderberg in https://github.com/novuhq/novu/pull/720
    • edit message not shown after delete, deleted node not shown again by @ainouzgali in https://github.com/novuhq/novu/pull/721
    • fix: add redirect / to /docs by @vannyle in https://github.com/novuhq/novu/pull/717
    • fix: reintroduce attachments support by @djabarovgeorge in https://github.com/novuhq/novu/pull/723
    • Notication center docs default values by @ainouzgali in https://github.com/novuhq/novu/pull/724
    • Nv 447 plus button, add a step close to the next node by @ainouzgali in https://github.com/novuhq/novu/pull/727
    • Remove unimplemented property border radius by @ainouzgali in https://github.com/novuhq/novu/pull/728
    • fix: so job is removed on complete by @davidsoderberg in https://github.com/novuhq/novu/pull/731
    • fix: use only one unsaved changes error by @ainouzgali in https://github.com/novuhq/novu/pull/730
    • NV 546 fix: clipped blocked html by @djabarovgeorge in https://github.com/novuhq/novu/pull/722
    • feat: subscriber id validation by @djabarovgeorge in https://github.com/novuhq/novu/pull/726
    • feat: save event trigger payload in the message instance by @djabarovgeorge in https://github.com/novuhq/novu/pull/725
    • fix: change redirect match to slug by @vannyle in https://github.com/novuhq/novu/pull/732
    • feat: update subscriber via trigger by @djabarovgeorge in https://github.com/novuhq/novu/pull/729
    • Fix a typo in quick-start.md & react-components.md file by @murtuzaalisurti in https://github.com/novuhq/novu/pull/736
    • fix notification center bell props by @djabarovgeorge in https://github.com/novuhq/novu/pull/733

    New Contributors

    • @murtuzaalisurti made their first contribution in https://github.com/novuhq/novu/pull/736

    Full Changelog: https://github.com/novuhq/novu/compare/v0.5.0...v0.5.1

    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Jun 26, 2022)

    Extremly excited to anounce our latest release which includes an entire redesign of our trigger engine, a brand new and shining workflow editor on the web management platform, notification center theme customization, and a lot more goodies! Let's check it out:

    Redesigned backend trigger engine

    To support a more complex Novu usecase with custom flows and events we had to reimagine how our trigger engine works, instead of processing just the hardcoded configuration of delivery a user can now specify a tree-like flow with a custom order of nodes. This infra change will help us to support the upcoming: Digest, Delay, Decision trees, and more.

    Job Workflow

    In this change, we also introduced BullMQ to manage or step execution Queue to support better persistency and scalability as it will allow us to scale trigger processing across multiple machines in the next upcoming releases.

    Redesigned Notification Template Editor

    One of the biggest steps to support our future plans is the redesigned Workflow Editor when editing a notification template. Previously, you could only decide on a channel but couldn't control more than one message of this particular channel, and couldn't control the order of execution.

    Introducing the new workflow editor powered by React-Flow: CleanShot 2022-06-24 at 09 31 06@2x

    This new workflow will be the basis of more exciting features we are about to release in the upcoming weeks!

    Attachment support on email providers

    Thank to our amazing contributor @devblin, it is possible to send attachments with your emails. You can easily add attachments using the following API:

    import { Novu } from '@novu/node';
    
    const novu = new Novu(process.env.NOVU_API_KEY);
    
    novu.trigger('event-name', {
      to: {
        subscriberId: '...'
      },
      payload: {
        attachments: [{
          file: fs.readFileSync(__dirname + '/data/test.jpeg'),
          name: 'test.jpeg',
          mime: 'image/jpg'
        }]
      }
    })
    

    Notification center theme customization

    Based on a lot of your requests, it is possible now to customize the notification center component visuals for in our React component. Here is how you can do that:

    const theme = {
       dark: {
          // Dark Theme Props
       },
       light: {
           // Light Theme Props
       },
       common: {
          // Common
       }
    };
    
    return (
       <PopoverNotificationCenter theme={theme}>
       </PopoverNotificationCenter>
    );
    

    For more information about the different parts of the theme configuration:

    export interface INovuTheme {
      layout?: IThemeLayout;
      header?: IThemeHeader;
      popover?: IThemePopover;
      notificationItem?: IThemeNotificationListItem;
      footer?: IThemeFooter;
      loaderColor?: string;
      unseenBadge?: IThemeUnseenBadge;
    }
    
    export interface IThemeLayout {
      background?: string;
      boxShadow?: string;
      borderRadius?: string;
      wrapper?: {
        secondaryFontColor?: string;
      };
    }
    
    export interface IThemeHeader {
      badgeColor?: string;
      badgeTextColor?: string;
      fontColor?: string;
    }
    
    export interface IThemePopover {
      arrowColor?: string;
    }
    
    export interface IThemeNotificationListItem {
      seen?: {
        fontColor?: string;
        background?: string;
        timeMarkFontColor?: string;
      };
      unseen?: {
        fontColor?: string;
        background?: string;
        boxShadow?: string;
        notificationItemBeforeBrandColor?: string;
        timeMarkFontColor?: string;
      };
    }
    
    export interface IThemeFooter {
      logoTextColor?: string;
      logoPrefixFontColor?: string;
    }
    
    export interface IThemeUnseenBadge {
      color?: {
        fillColor?: string | ISvgStopColor;
        borderColor?: string;
      };
    }
    

    More changes and improvements

    • fixed grammatical error in notification form by @tusharsrivastav in https://github.com/novuhq/novu/pull/613
    • Made changes in the CONTIBUTING.md file for ports information by @AakashRaj20 in https://github.com/novuhq/novu/pull/637
    • update readme by @souravjain540 in https://github.com/novuhq/novu/pull/638
    • fix: added support for attachments passing within Novu API by @devblin in https://github.com/novuhq/novu/pull/608
    • Proper Error Message when used without NovuProvider by @BiswaViraj in https://github.com/novuhq/novu/pull/639
    • Added env flag for github oauth option by @BiswaViraj in https://github.com/novuhq/novu/pull/644
    • Upgrade Widget cypress to v10 by @kymppi in https://github.com/novuhq/novu/pull/658
    • Docker-compose for local development by @kymppi in https://github.com/novuhq/novu/pull/659
    • style changed integration to integrations by @AlexVCS in https://github.com/novuhq/novu/pull/669
    • changed api to API by @Tosin-webdev in https://github.com/novuhq/novu/pull/670
    • Fixed typo on line 36 by @AlexVCS in https://github.com/novuhq/novu/pull/673
    • fix: updated the docker env to string by @BiswaViraj in https://github.com/novuhq/novu/pull/688
    • fix: updated scripts to use cross-env by @BiswaViraj in https://github.com/novuhq/novu/pull/685
    • fix: team invite not working when already logged in by @samsoft00 in https://github.com/novuhq/novu/pull/678
    • feat: #686 add termii sms provider by @samsoft00 in https://github.com/novuhq/novu/pull/690
    • import IMessage + Dark mode (colorScheme update) Documentation by @Lorakus in https://github.com/novuhq/novu/pull/698
    • Added unseenCount in popover notification component by @Lorakus in https://github.com/novuhq/novu/pull/699
    • Update Types to support nested payload properties by @dcbartlett-fadv in https://github.com/novuhq/novu/pull/701
    • Upgraded apps/web cypress to v10 by @devblin in https://github.com/novuhq/novu/pull/689
    • Fix/update provider hygen template by @samsoft00 in https://github.com/novuhq/novu/pull/710

    New Contributors

    • @tusharsrivastav made their first contribution in https://github.com/novuhq/novu/pull/613
    • @AakashRaj20 made their first contribution in https://github.com/novuhq/novu/pull/637
    • @souravjain540 made their first contribution in https://github.com/novuhq/novu/pull/638
    • @kymppi made their first contribution in https://github.com/novuhq/novu/pull/658
    • @Tosin-webdev made their first contribution in https://github.com/novuhq/novu/pull/670
    • @samsoft00 made their first contribution in https://github.com/novuhq/novu/pull/678
    • @Lorakus made their first contribution in https://github.com/novuhq/novu/pull/698
    • @vannyle made their first contribution in https://github.com/novuhq/novu/pull/558
    • @dcbartlett-fadv made their first contribution in https://github.com/novuhq/novu/pull/701

    Full Changelog: https://github.com/novuhq/novu/compare/v0.4.2...v0.5.0

    Source code(tar.gz)
    Source code(zip)
  • v0.5.0-alpha.0(Jun 21, 2022)

  • v0.4.2(May 31, 2022)

    What's Changed

    • Fix gradient picker cross browser by @djabarovgeorge in https://github.com/novuhq/novu/pull/610

    This addresses the issue discussed in #607 that fixes safari browsers fail to render the notification center due to not supported regex expression.

    Thank for singhgulshan, @BiswaViraj, and @djabarovgeorge for collaborating on bringing this fix

    Source code(tar.gz)
    Source code(zip)
  • v0.4.1(May 29, 2022)

    React 18 support for @novu/notification-center

    thanks to the incredible work by @BiswaViraj we are now supporting react 18 for the @novu/notification-center component, also gone the webpack spreadArray) is not a function error encountered in #569

    What's Changed

    • New handlebars titlecase helper by @AlexVCS in https://github.com/novuhq/novu/pull/585
    • v0.4.0 Release by @scopsy in https://github.com/novuhq/novu/pull/595
    • removed the null return in useeffect by @BiswaViraj in https://github.com/novuhq/novu/pull/596
    • Improved documentation: Corrected spelling in README.md by @FidalMathew in https://github.com/novuhq/novu/pull/603
    • fix : package.json to respect the monorepo structure by @williamsgqdev in https://github.com/novuhq/novu/pull/601

    New Contributors

    • @FidalMathew made their first contribution in https://github.com/novuhq/novu/pull/603
    • @williamsgqdev made their first contribution in https://github.com/novuhq/novu/pull/601

    Full Changelog: https://github.com/novuhq/novu/compare/v0.4.0...v0.4.1

    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(May 25, 2022)

    The first Novu Notification Infrastructure Release

    We are incredibly excited to release our biggest version since the beginning of Novu. This version includes our first milestone in building the best open-source notification infrastructure. The release is a result of our incredible community collaboration and efforts. Check out all the great shoutouts at the end.

    This version includes those large chunks of work:

    • Novu API
    • Notification management web interface
    • Multi Environment Support
    • Integration Store
    • Notification Center API
    • React Notification Center
    • And more!

    Get started with the novu platform using:

    npx novu init
    

    Novu API

    The Novu API was created to manage complex notification delivery use cases. It will be the platform for our future advanced features such as Digest, Scheduling, Time-zone awareness, etc. The API can be accessed from the @novu/node npm package for Node.js and other languages using the simple rest HTTP API accessed using an API key.

    Notification management web interface

    A brand new React-based web interface to manage your notification templates and monitor the activity of sent notifications. We are planning to add and upgrade the web interface on an ongoing basis, looking forward to hearing your opinions and ideas!

    Notification Center API

    You can now add a real-time notification center to your web application, including real-time updates using socket.io. In addition, we provide a react notification center component and an iframe window for non-react apps. You can read more about it here.

    https://docs.novu.co/assets/images/notification-center-912bb96e009fb3a69bafec23bcde00b0.png

    Multi Environment Support

    Based on the feedback from previous alpha releases, we have added support for multiple environments inside the web management site. You can make changes to your dev environment and then commit them to the Production Environment. So you can test your changes before pushing them to prod. Which is always a good thing to do, right? 😜

    Integration Store

    You can now select what email or SMS provider you will send notifications from. Check out the integrations page on the web management platform. New integrations are coming soon!

    Moving from the old @novu/node or @notifire/node packages

    The last versions below v0.4.0 only supported stateless and in-code notification template management. If you don't plan to use the Novu API and web management platform, you will need to download the @novu/stateless library, which has an identical API to the old package. Read more about the stateless library here.

    What's next?

    • Improving documentation and usage guides
    • Visual Workflow Editor
    • Direct Channel
    • Push Channel
    • Digest Engine
    • and many more exciting features :)

    Read more about the new API platform from our documentation site.

    Get started with the novu platform using:

    npx novu init
    

    Merged issues

    • subject now accepts a Function on trigger method by @CharlieBrownCharacter in https://github.com/novuhq/novu/pull/155
    • Fixed some typo by @bigpreshy in https://github.com/novuhq/novu/pull/159
    • Some typo and grammar fix by @bigpreshy in https://github.com/novuhq/novu/pull/160
    • Docker compose support by @osbornetunde in https://github.com/novuhq/novu/pull/146
    • Add storybook for admin panel by @scopsy in https://github.com/novuhq/novu/pull/163
    • NX Workspaces Support by @nishit-g in https://github.com/novuhq/novu/pull/165
    • Update package.json(NX workspace code review) by @nishit-g in https://github.com/novuhq/novu/pull/168
    • Update providers template by @nishit-g in https://github.com/novuhq/novu/pull/170
    • Update build scripts to use NX by @scopsy in https://github.com/novuhq/novu/pull/169
    • Add NX cloud support by @scopsy in https://github.com/novuhq/novu/pull/172
    • Add project build on setup:project command by @djabarovgeorge in https://github.com/novuhq/novu/pull/178
    • Border style on window widget #176 by @djabarovgeorge in https://github.com/novuhq/novu/pull/179
    • Configure Renovate by @renovate in https://github.com/novuhq/novu/pull/186
    • Implement OAuth flow with GitHub by @djabarovgeorge in https://github.com/novuhq/novu/pull/187
    • Pin dependencies by @renovate in https://github.com/novuhq/novu/pull/191
    • Pin dependency apollo-boost to 0.4.9 by @renovate in https://github.com/novuhq/novu/pull/192
    • Update dependency @types/express to v4.17.13 by @renovate in https://github.com/novuhq/novu/pull/194
    • Add npx only-allow-pnpm to avoid people running yarn install by @djabarovgeorge in https://github.com/novuhq/novu/pull/195
    • Update dependency @types/react-helmet to v6.1.5 by @renovate in https://github.com/novuhq/novu/pull/200
    • Update dependency cypress-intellij-reporter to v0.0.7 by @renovate in https://github.com/novuhq/novu/pull/201
    • Update docker files to use pnpm by @djabarovgeorge in https://github.com/novuhq/novu/pull/199
    • Update dependency react-scripts to v4.0.3 by @renovate in https://github.com/novuhq/novu/pull/203
    • Update Node.js to v14.18.3 by @renovate in https://github.com/novuhq/novu/pull/208
    • Update dependency styled-components to v5.3.3 by @renovate in https://github.com/novuhq/novu/pull/205
    • Update docusaurus monorepo to v2.0.0-beta.14 by @renovate in https://github.com/novuhq/novu/pull/206
    • Update dependency @typescript-eslint/eslint-plugin to v4.33.0 by @renovate in https://github.com/novuhq/novu/pull/212
    • Update dependency @types/react-router-dom to v5.3.3 by @renovate in https://github.com/novuhq/novu/pull/211
    • Update dependency hygen to v6.1.0 by @renovate in https://github.com/novuhq/novu/pull/216
    • Update dependency jira-prepare-commit-msg to v1.6.2 by @renovate in https://github.com/novuhq/novu/pull/217
    • Update github actions to use pnpm by @djabarovgeorge in https://github.com/novuhq/novu/pull/197
    • Search for other npm usages in the repository to replace with pnpm by @djabarovgeorge in https://github.com/novuhq/novu/pull/220
    • Add capitalization to subscribers names on activity list page by @ainouzgali in https://github.com/novuhq/novu/pull/221
    • PNPM dependency management by @djabarovgeorge in https://github.com/novuhq/novu/pull/185
    • Pin dependencies by @renovate in https://github.com/novuhq/novu/pull/189
    • Update dependency @aws-sdk/client-ses to v3.48.0 by @renovate in https://github.com/novuhq/novu/pull/210
    • Update dependency standard-version to v9.3.2 by @renovate in https://github.com/novuhq/novu/pull/204
    • Update dependency @istanbuljs/nyc-config-typescript to v1.0.2 by @renovate in https://github.com/novuhq/novu/pull/193
    • Update react-router monorepo by @renovate in https://github.com/novuhq/novu/pull/207
    • Update dependency @types/jest to v27.4.0 by @renovate in https://github.com/novuhq/novu/pull/222
    • Update dependency axios to v0.25.0 by @renovate in https://github.com/novuhq/novu/pull/213
    • Mantine layout integration by @scopsy in https://github.com/novuhq/novu/pull/225
    • ➕ Add @emotion/react and @emotion/styled by @scopsy in https://github.com/novuhq/novu/pull/226
    • RLD-86: Add linter action for projects by @scopsy in https://github.com/novuhq/novu/pull/231
    • RLD-68 Flaky password reset test add debug lines by @scopsy in https://github.com/novuhq/novu/pull/232
    • Environment variables configuration by @djabarovgeorge in https://github.com/novuhq/novu/pull/229
    • Updated deprecated environment variable by @djabarovgeorge in https://github.com/novuhq/novu/pull/233
    • Update docker-compose to use pre-built images from ghcr by @djabarovgeorge in https://github.com/novuhq/novu/pull/235
    • Typography Buttons Colors - starting mantine by @ainouzgali in https://github.com/novuhq/novu/pull/230
    • Update docker files location by @djabarovgeorge in https://github.com/novuhq/novu/pull/237
    • [RLD-88] - Docker compose api error fix by @scopsy in https://github.com/novuhq/novu/pull/238
    • Create shadow styles and add to Button by @ainouzgali in https://github.com/novuhq/novu/pull/239
    • RLD-92 Add sdk serving to docker compose by @scopsy in https://github.com/novuhq/novu/pull/241
    • [RLD-94] Add documentation on how to run docker compose by @scopsy in https://github.com/novuhq/novu/pull/242
    • Rld 18 switch buttons by @ainouzgali in https://github.com/novuhq/novu/pull/244
    • Implements Telnyx SMS provider by @Abobos in https://github.com/novuhq/novu/pull/227
    • RLD-20 Inputs + Form Fields by @ainouzgali in https://github.com/novuhq/novu/pull/247
    • Create CLI project scaffold by @djabarovgeorge in https://github.com/novuhq/novu/pull/248
    • [RLD-23] - Checkbox component by @rockingrohit9639 in https://github.com/novuhq/novu/pull/249
    • Added: doc for Hooks feature by @rhythm-sharma in https://github.com/novuhq/novu/pull/253
    • Rld 22 select inputs by @ainouzgali in https://github.com/novuhq/novu/pull/250
    • Application name & providers selection by @djabarovgeorge in https://github.com/novuhq/novu/pull/252
    • Added new SMS provider (Telnyx)to Readme.md by @iampearceman in https://github.com/novuhq/novu/pull/262
    • [RLD-105] - Create a local server on ephemeral port by @djabarovgeorge in https://github.com/novuhq/novu/pull/257
    • Table component by @ainouzgali in https://github.com/novuhq/novu/pull/255
    • Variable naming conventions for camel and pascal casing by @scopsy in https://github.com/novuhq/novu/pull/264
    • Fix linting rules for padding by @scopsy in https://github.com/novuhq/novu/pull/263
    • 🚨 Fix web padding eslint issues by @scopsy in https://github.com/novuhq/novu/pull/265
    • [RLD-106] - Initialize the GitHub auth flow by @djabarovgeorge in https://github.com/novuhq/novu/pull/259
    • [RLD-108] - Persist JWT token in the users CLI storage by @djabarovgeorge in https://github.com/novuhq/novu/pull/261
    • Create Organization & Application by @djabarovgeorge in https://github.com/novuhq/novu/pull/267
    • Authentication flow by @djabarovgeorge in https://github.com/novuhq/novu/pull/269
    • ✨ Add onChange and onClick events to components by @scopsy in https://github.com/novuhq/novu/pull/270
    • Fix bug update const typo by @djabarovgeorge in https://github.com/novuhq/novu/pull/273
    • Radio components by @scopsy in https://github.com/novuhq/novu/pull/272
    • Icons management by @ainouzgali in https://github.com/novuhq/novu/pull/274
    • 💄 Fixed checkbox BG and dark mode styling by @scopsy in https://github.com/novuhq/novu/pull/276
    • Menu buttons by @ainouzgali in https://github.com/novuhq/novu/pull/275
    • Tooltip by @ainouzgali in https://github.com/novuhq/novu/pull/277
    • Add demo dashboard html by @djabarovgeorge in https://github.com/novuhq/novu/pull/279
    • Create http server to serve this demo panel by @djabarovgeorge in https://github.com/novuhq/novu/pull/281
    • Validate and switch use application by @djabarovgeorge in https://github.com/novuhq/novu/pull/283
    • Demo web application by @djabarovgeorge in https://github.com/novuhq/novu/pull/289
    • During application, creation create a demo template by @djabarovgeorge in https://github.com/novuhq/novu/pull/285
    • New Layout, Header, Nav & Templates list page by @ainouzgali in https://github.com/novuhq/novu/pull/291
    • Update "master" to "main" by @scopsy in https://github.com/novuhq/novu/pull/292
    • Raise demo dashboard by @djabarovgeorge in https://github.com/novuhq/novu/pull/287
    • Test notification template by @djabarovgeorge in https://github.com/novuhq/novu/pull/294
    • 🔧 Copy HTML files when compiling CLI by @scopsy in https://github.com/novuhq/novu/pull/295
    • Add copy button that copies curl command by @djabarovgeorge in https://github.com/novuhq/novu/pull/297
    • Add hide the jwt and api key by @djabarovgeorge in https://github.com/novuhq/novu/pull/300
    • ✨ Get available port instead of hardcoded 4600 port by @scopsy in https://github.com/novuhq/novu/pull/298
    • ✨ Handle returning visitors to the CLI by @scopsy in https://github.com/novuhq/novu/pull/301
    • ✨ Send a custom text node if onboarding notification is sent by @scopsy in https://github.com/novuhq/novu/pull/302
    • 💄 Fix unseen badge location by @scopsy in https://github.com/novuhq/novu/pull/304
    • ♻️ Change firstName to $first_name and remove un-needed $email by @scopsy in https://github.com/novuhq/novu/pull/303
    • Create contextual guidance in main page and styling by @scopsy in https://github.com/novuhq/novu/pull/307
    • 💄 Add styled welcome screen by @scopsy in https://github.com/novuhq/novu/pull/309
    • Create custom text styles for answers with chalk by @scopsy in https://github.com/novuhq/novu/pull/310
    • Widget bell style jump by @djabarovgeorge in https://github.com/novuhq/novu/pull/313
    • ✨ Add in-web trigger button by @scopsy in https://github.com/novuhq/novu/pull/311
    • Account Creation Flow by @djabarovgeorge in https://github.com/novuhq/novu/pull/306
    • Fix application id in the widget by @djabarovgeorge in https://github.com/novuhq/novu/pull/314
    • Implements tabs horizontal menu(design system) by @Abobos in https://github.com/novuhq/novu/pull/308
    • Color Input by @ainouzgali in https://github.com/novuhq/novu/pull/320
    • Create Integration Data-Model by @djabarovgeorge in https://github.com/novuhq/novu/pull/316
    • 🐛 Fixed an issue where an inifinite loader would show after API redirect by @scopsy in https://github.com/novuhq/novu/pull/324
    • 💬 Update text nodes for questions in CLI by @scopsy in https://github.com/novuhq/novu/pull/325
    • Settings page with new design system by @ainouzgali in https://github.com/novuhq/novu/pull/319
    • Left Menu Buttons - Template Editor by @ainouzgali in https://github.com/novuhq/novu/pull/335
    • ✨ Add novu CLI command to launch program by @scopsy in https://github.com/novuhq/novu/pull/336
    • Create post integration api by @djabarovgeorge in https://github.com/novuhq/novu/pull/328
    • Fetch integration api by @djabarovgeorge in https://github.com/novuhq/novu/pull/330
    • Edit integration api by @djabarovgeorge in https://github.com/novuhq/novu/pull/334
    • Delete integration api by @djabarovgeorge in https://github.com/novuhq/novu/pull/337
    • Add deactivation of old providers on creation of new active one by @djabarovgeorge in https://github.com/novuhq/novu/pull/339
    • Add constrains on update request by @djabarovgeorge in https://github.com/novuhq/novu/pull/342
    • Notification Settings Screen by @ainouzgali in https://github.com/novuhq/novu/pull/345
    • Fix cli race condition on docker setup by @djabarovgeorge in https://github.com/novuhq/novu/pull/346
    • Initialize integration api by @djabarovgeorge in https://github.com/novuhq/novu/pull/326
    • react-router-dom v6 update by @ninjadev101 in https://github.com/novuhq/novu/pull/333
    • Cypress update on web by @ninjadev101 in https://github.com/novuhq/novu/pull/349
    • :sparkles: Trigger Modal by @ainouzgali in https://github.com/novuhq/novu/pull/350
    • Create actions CI pipeline by @scopsy in https://github.com/novuhq/novu/pull/348
    • 📝 Variable Protection Docs by @ninjadev101 in https://github.com/novuhq/novu/pull/351
    • Prod environment CI by @scopsy in https://github.com/novuhq/novu/pull/354
    • add channel screen by @ainouzgali in https://github.com/novuhq/novu/pull/357
    • Add Trigger Screen by @ainouzgali in https://github.com/novuhq/novu/pull/359
    • Add integration store page by @djabarovgeorge in https://github.com/novuhq/novu/pull/358
    • Auto deploy sdk docker images by @scopsy in https://github.com/novuhq/novu/pull/360
    • In App Settings Screen by @ainouzgali in https://github.com/novuhq/novu/pull/362
    • Add docker builds for web and widget containers by @scopsy in https://github.com/novuhq/novu/pull/364
    • 💄 Fixed storybook color scheme by @ninjadev101 in https://github.com/novuhq/novu/pull/363
    • Fix TypeError: Cannot read properties of null (reading '_id') issue #365 Draft PR by @AlexVCS in https://github.com/novuhq/novu/pull/370
    • ⬆️ Updated faker and normalized email address by @ninjadev101 in https://github.com/novuhq/novu/pull/375
    • SMS Settings Screen by @ainouzgali in https://github.com/novuhq/novu/pull/369
    • Fix/sendgrid global api key by @nevo-david in https://github.com/novuhq/novu/pull/376
    • 🩹 fallback to templates page for signed users by @ninjadev101 in https://github.com/novuhq/novu/pull/379
    • Email settings screen by @ainouzgali in https://github.com/novuhq/novu/pull/372
    • Create provider component by @djabarovgeorge in https://github.com/novuhq/novu/pull/367
    • Edit Mode - Template Editor by @ainouzgali in https://github.com/novuhq/novu/pull/381
    • Creation of integration modal by @djabarovgeorge in https://github.com/novuhq/novu/pull/368
    • Fix Notification Group Select by @ainouzgali in https://github.com/novuhq/novu/pull/384
    • Trigger engine connected provider usage by @djabarovgeorge in https://github.com/novuhq/novu/pull/356
    • Add api communication by @djabarovgeorge in https://github.com/novuhq/novu/pull/380
    • Tooltips Errors by @ainouzgali in https://github.com/novuhq/novu/pull/383
    • 🐛 Fix select group behaviour on creatable mode by @scopsy in https://github.com/novuhq/novu/pull/388
    • Integration store provider list page by @djabarovgeorge in https://github.com/novuhq/novu/pull/385
    • Fix ColorScheme Toggle by @ainouzgali in https://github.com/novuhq/novu/pull/390
    • feat(providers): added provider id and changed the architecture by @nevo-david in https://github.com/novuhq/novu/pull/374
    • Integration store fixs by @djabarovgeorge in https://github.com/novuhq/novu/pull/386
    • Reusable actions by @scopsy in https://github.com/novuhq/novu/pull/382
    • Final editor flow changes by @scopsy in https://github.com/novuhq/novu/pull/395
    • 🔧 Add a warning exception for github oauth flow by @scopsy in https://github.com/novuhq/novu/pull/396
    • Integration store add cypress tests by @djabarovgeorge in https://github.com/novuhq/novu/pull/393
    • Template editor UI integration by @djabarovgeorge in https://github.com/novuhq/novu/pull/387
    • Adding MailerSend provider by @fredsossa1 in https://github.com/novuhq/novu/pull/389
    • Update Team Members page from legacy by @aggmoulik in https://github.com/novuhq/novu/pull/352
    • Login Page - New Design by @ainouzgali in https://github.com/novuhq/novu/pull/397
    • SignUp + Reset Password - New Design by @ainouzgali in https://github.com/novuhq/novu/pull/398
    • Accept Invitation Page - New Design by @ainouzgali in https://github.com/novuhq/novu/pull/399
    • Application Creation Page - New Design by @ainouzgali in https://github.com/novuhq/novu/pull/400
    • Activity Page - Table and Filters by @ainouzgali in https://github.com/novuhq/novu/pull/392
    • Final update for flow styling and behaviour by @scopsy in https://github.com/novuhq/novu/pull/405
    • Add sender email & sender name by @djabarovgeorge in https://github.com/novuhq/novu/pull/401
    • Update the api (event-trigger) flow to use the integration instead by @djabarovgeorge in https://github.com/novuhq/novu/pull/403
    • Update application & integration entities by @djabarovgeorge in https://github.com/novuhq/novu/pull/402
    • Remove email tab from setting page by @djabarovgeorge in https://github.com/novuhq/novu/pull/404
    • Move sender from and name to inside of email integration modal by @djabarovgeorge in https://github.com/novuhq/novu/pull/406
    • Add providers logo by @djabarovgeorge in https://github.com/novuhq/novu/pull/407
    • Integration store hotfix by @djabarovgeorge in https://github.com/novuhq/novu/pull/409
    • ♻️ Change settings screen route name for invites by @scopsy in https://github.com/novuhq/novu/pull/408
    • Integration store hotfix by @djabarovgeorge in https://github.com/novuhq/novu/pull/410
    • 💄 Fix responsive issue in template editor by @scopsy in https://github.com/novuhq/novu/pull/412
    • Fix mailersend build by @djabarovgeorge in https://github.com/novuhq/novu/pull/414
    • 🔥 Remove old design code by @scopsy in https://github.com/novuhq/novu/pull/413
    • Update providers logo by @djabarovgeorge in https://github.com/novuhq/novu/pull/415
    • ✨ Add the ability to specifiy the left offset for the widget to open by @scopsy in https://github.com/novuhq/novu/pull/416
    • Widget - New Design by @ainouzgali in https://github.com/novuhq/novu/pull/418
    • Logo Updates by @ainouzgali in https://github.com/novuhq/novu/pull/420
    • Refactor by @scopsy in https://github.com/novuhq/novu/pull/419
    • Update GHCR organization name by @djabarovgeorge in https://github.com/novuhq/novu/pull/422
    • :bug: Fix Widget Dropdown Position by @ainouzgali in https://github.com/novuhq/novu/pull/424
    • Description Label For Integration Store by @ainouzgali in https://github.com/novuhq/novu/pull/426
    • Update Docs - Logos by @ainouzgali in https://github.com/novuhq/novu/pull/425
    • Update Sender From Credential by @ainouzgali in https://github.com/novuhq/novu/pull/427
    • Display pagination when there is total or page size is greater than one by @magnetomax in https://github.com/novuhq/novu/pull/423
    • New Integration Defaults to Active by @ainouzgali in https://github.com/novuhq/novu/pull/428
    • Activity graph by @djabarovgeorge in https://github.com/novuhq/novu/pull/394
    • Update provider logo images by @djabarovgeorge in https://github.com/novuhq/novu/pull/431
    • Add initial component library by @djabarovgeorge in https://github.com/novuhq/novu/pull/430
    • Fix - Notification Group Not Selected after Creation by @ainouzgali in https://github.com/novuhq/novu/pull/432
    • Novu node package by @scopsy in https://github.com/novuhq/novu/pull/435
    • Update ses integration logo by @djabarovgeorge in https://github.com/novuhq/novu/pull/436
    • Trigger Event Keys Modification by @ainouzgali in https://github.com/novuhq/novu/pull/433
    • Creating New Template - Defaults to Active by @ainouzgali in https://github.com/novuhq/novu/pull/438
    • Update Notification Content - Demo Dashboard by @ainouzgali in https://github.com/novuhq/novu/pull/439
    • Change provider button color by @djabarovgeorge in https://github.com/novuhq/novu/pull/421
    • Add input mapping by @djabarovgeorge in https://github.com/novuhq/novu/pull/411
    • 🐛 Fixes the distinct id problem by @davidsoderberg in https://github.com/novuhq/novu/pull/441
    • Added a link to our Discord server by @iampearceman in https://github.com/novuhq/novu/pull/437
    • 🐛 Fixes so if there is no items for pagination it hides by @davidsoderberg in https://github.com/novuhq/novu/pull/442
    • 🐛 Fix so button do not change in size when active toggle is used by @davidsoderberg in https://github.com/novuhq/novu/pull/443
    • 🚸 Add so users computer theme are reflected in web app by @davidsoderberg in https://github.com/novuhq/novu/pull/444
    • Added: Script to inject env var in window object by @rhythm-sharma in https://github.com/novuhq/novu/pull/434
    • Fix Package Name by @ainouzgali in https://github.com/novuhq/novu/pull/448
    • Rename "sdk" Package to "embed" by @ainouzgali in https://github.com/novuhq/novu/pull/450
    • Update contributing.md by @ainouzgali in https://github.com/novuhq/novu/pull/451
    • Update README.md by @iampearceman in https://github.com/novuhq/novu/pull/453
    • Convert messages to steps by @scopsy in https://github.com/novuhq/novu/pull/456
    • Nv 241 enable runtime dynamic environment by @davidsoderberg in https://github.com/novuhq/novu/pull/446
    • 👷 Add envsetup for widget by @davidsoderberg in https://github.com/novuhq/novu/pull/447
    • Create @novu/stateless package by @ainouzgali in https://github.com/novuhq/novu/pull/455
    • Subscribers API - Update Subscriber by @ainouzgali in https://github.com/novuhq/novu/pull/464
    • Subscribers API - Create Subscriber by @ainouzgali in https://github.com/novuhq/novu/pull/463
    • ✨ An organization do now have two environments by @davidsoderberg in https://github.com/novuhq/novu/pull/460
    • Subscribers API - Delete Subscriber by @ainouzgali in https://github.com/novuhq/novu/pull/465
    • Add widget logic by @djabarovgeorge in https://github.com/novuhq/novu/pull/440
    • Clean widget from bell logic by @djabarovgeorge in https://github.com/novuhq/novu/pull/457
    • Create notification center interface by @djabarovgeorge in https://github.com/novuhq/novu/pull/458
    • Create novu povider by @djabarovgeorge in https://github.com/novuhq/novu/pull/459
    • Add Subscribers for @novu/node by @ainouzgali in https://github.com/novuhq/novu/pull/469
    • Switch application entity to environment entity by @scopsy in https://github.com/novuhq/novu/pull/468
    • 🐛 fix storybook crash because of emotion by @ninjadev101 in https://github.com/novuhq/novu/pull/473
    • ✨ added segmented control by @ninjadev101 in https://github.com/novuhq/novu/pull/467
    • Nv 322 calculate diff to create a change entity by @davidsoderberg in https://github.com/novuhq/novu/pull/476
    • ✨ Add Change entity, schema and repository by @davidsoderberg in https://github.com/novuhq/novu/pull/466
    • 🐛 Fix Cors issue when accessing window.parent inside widget by @scopsy in https://github.com/novuhq/novu/pull/480
    • Nv 331 create changes when a message template by @davidsoderberg in https://github.com/novuhq/novu/pull/477
    • Nv 321 add parentid for notification template by @davidsoderberg in https://github.com/novuhq/novu/pull/478
    • Nv 332 get user environments api by @ninjadev101 in https://github.com/novuhq/novu/pull/483
    • Nv 311 switch environment by @ninjadev101 in https://github.com/novuhq/novu/pull/487
    • [NV-296] Update pages meta title to indicate visiting pge by @13colours in https://github.com/novuhq/novu/pull/489
    • Use content-type: application/json for payload in example script by @wolfymaster in https://github.com/novuhq/novu/pull/490
    • :boom: Trigger interface update by @ainouzgali in https://github.com/novuhq/novu/pull/488
    • React helmet async by @ninjadev101 in https://github.com/novuhq/novu/pull/495
    • Move Brand Settings to Organization by @ainouzgali in https://github.com/novuhq/novu/pull/492
    • Refactor bell interface by @djabarovgeorge in https://github.com/novuhq/novu/pull/474
    • Use bell package in widget app by @djabarovgeorge in https://github.com/novuhq/novu/pull/475
    • Refactor widget code by @djabarovgeorge in https://github.com/novuhq/novu/pull/491
    • Changes Page by @ainouzgali in https://github.com/novuhq/novu/pull/497
    • cypress test for switch environment by @ninjadev101 in https://github.com/novuhq/novu/pull/498
    • Docs update by @scopsy in https://github.com/novuhq/novu/pull/502
    • React widget component by @djabarovgeorge in https://github.com/novuhq/novu/pull/496
    • Fix notification center deploment by @djabarovgeorge in https://github.com/novuhq/novu/pull/505
    • Add widget user origin wildcard by @djabarovgeorge in https://github.com/novuhq/novu/pull/508
    • Nv 295 delete notification template by @ninjadev101 in https://github.com/novuhq/novu/pull/507
    • Disallow templates and messages edit - API by @ainouzgali in https://github.com/novuhq/novu/pull/506
    • Cypress tests for changes page by @ainouzgali in https://github.com/novuhq/novu/pull/509
    • Fix re-navigation in edit. by @ainouzgali in https://github.com/novuhq/novu/pull/519
    • 🐛 Fix so notification group are promoted if notification template are by @davidsoderberg in https://github.com/novuhq/novu/pull/520
    • Fix Readonly Styles - light mode by @ainouzgali in https://github.com/novuhq/novu/pull/521
    • 🐛 Fix so a update on message template creates a change by @davidsoderberg in https://github.com/novuhq/novu/pull/522
    • 🚸 Add notification when a promote goes wrong by @davidsoderberg in https://github.com/novuhq/novu/pull/528
    • Add application identifier in settings by @djabarovgeorge in https://github.com/novuhq/novu/pull/510
    • :sparkles: Read only environments by @ainouzgali in https://github.com/novuhq/novu/pull/499
    • 💚 Pin pnpm version in dockerfiles by @davidsoderberg in https://github.com/novuhq/novu/pull/530
    • 🚧 Add Security component by @djabarovgeorge in https://github.com/novuhq/novu/pull/511
    • 🐛 Fix bug with Authorization header sent to S3 by @davidsoderberg in https://github.com/novuhq/novu/pull/531
    • show empty string when null by @ninjadev101 in https://github.com/novuhq/novu/pull/532
    • Update dal + api HMAC security support by @djabarovgeorge in https://github.com/novuhq/novu/pull/516
    • Add dynamic backendUrl in @novu/node by @djabarovgeorge in https://github.com/novuhq/novu/pull/535
    • Nv 386 env token validation by @ninjadev101 in https://github.com/novuhq/novu/pull/545
    • 🐛 Fix isDirty state for channel switches by @davidsoderberg in https://github.com/novuhq/novu/pull/533
    • Passing a subscriber object to the template compilation by @djabarovgeorge in https://github.com/novuhq/novu/pull/537
    • Hmac support by @djabarovgeorge in https://github.com/novuhq/novu/pull/539
    • Onboarding Page by @ainouzgali in https://github.com/novuhq/novu/pull/534
    • ✨ added pluralize helper by @ninjadev101 in https://github.com/novuhq/novu/pull/549
    • ✨ added breadcrumb by @ninjadev101 in https://github.com/novuhq/novu/pull/550
    • 🐛 Fix empty notification group payload by @djabarovgeorge in https://github.com/novuhq/novu/pull/548
    • 🐛 Fix shared clipboard state by @djabarovgeorge in https://github.com/novuhq/novu/pull/551
    • Docs - add backendUrl by @ainouzgali in https://github.com/novuhq/novu/pull/556
    • Fix activity graph missing current date by @djabarovgeorge in https://github.com/novuhq/novu/pull/552
    • Update README.md by @TexasBullet26 in https://github.com/novuhq/novu/pull/566
    • Updated documentation. Using gender neutral language and making doc mo… by @pgaijin66 in https://github.com/novuhq/novu/pull/564
    • Fix: 567 Updated the file paths by @BiswaViraj in https://github.com/novuhq/novu/pull/568
    • Notification Center: avoid localStorage actions on SSR by @13colours in https://github.com/novuhq/novu/pull/561
    • Changed sms77 constructor call by @SaschaWebDev in https://github.com/novuhq/novu/pull/584

    New Contributors

    • @bigpreshy made their first contribution in https://github.com/novuhq/novu/pull/159
    • @osbornetunde made their first contribution in https://github.com/novuhq/novu/pull/146
    • @nishit-g made their first contribution in https://github.com/novuhq/novu/pull/165
    • @renovate made their first contribution in https://github.com/novuhq/novu/pull/186
    • @Abobos made their first contribution in https://github.com/novuhq/novu/pull/227
    • @rockingrohit9639 made their first contribution in https://github.com/novuhq/novu/pull/249
    • @rhythm-sharma made their first contribution in https://github.com/novuhq/novu/pull/253
    • @iampearceman made their first contribution in https://github.com/novuhq/novu/pull/262
    • @ninjadev101 made their first contribution in https://github.com/novuhq/novu/pull/333
    • @AlexVCS made their first contribution in https://github.com/novuhq/novu/pull/370
    • @nevo-david made their first contribution in https://github.com/novuhq/novu/pull/376
    • @fredsossa1 made their first contribution in https://github.com/novuhq/novu/pull/389
    • @aggmoulik made their first contribution in https://github.com/novuhq/novu/pull/352
    • @magnetomax made their first contribution in https://github.com/novuhq/novu/pull/423
    • @13colours made their first contribution in https://github.com/novuhq/novu/pull/489
    • @wolfymaster made their first contribution in https://github.com/novuhq/novu/pull/490
    • @TexasBullet26 made their first contribution in https://github.com/novuhq/novu/pull/566
    • @pgaijin66 made their first contribution in https://github.com/novuhq/novu/pull/564
    • @BiswaViraj made their first contribution in https://github.com/novuhq/novu/pull/568
    • @SaschaWebDev made their first contribution in https://github.com/novuhq/novu/pull/584

    Full Changelog: https://github.com/novuhq/novu/compare/v0.3.5...v0.4.0

    Source code(tar.gz)
    Source code(zip)
  • v0.3.3(Dec 16, 2021)

    What's new?

    • Email attachments support
    • New direct messaging interface
    • New NestJS module for Notifire by @devblin in https://github.com/notifirehq/notifire/pull/106
    • New readme file for our npm package by @SachinHatikankar100 in https://github.com/notifirehq/notifire/pull/121
    • Code generator for SMS providers by @galezra in https://github.com/notifirehq/notifire/pull/131
    • Docs for generating a new provider by @cloudguruab in https://github.com/notifirehq/notifire/pull/132

    Email attachments support

    This incredible community effort started from @davidsoderberg who took on him to finalize the interface for the $attachments and later on all the community took the effort to update all of our 9 email providers.

    So how this works? The $attachment interface receives an array of attachment objects. Each attachment contains a file buffer, the mime type and the attachment name to be used.

    const fileBuffer = fs.readFileSync('event.ics');
    await notifire.trigger('test', {
        $user_id: '1234',
        $email: '[email protected]',
        $attachments: [{
            file: fileBuffer,
            mime: 'text/plain',
            name: 'event.ics'
        }]
    });
    

    NestJS module

    Created by @devblin you can now use notifire in your nestjs application easily by installing the @notifire/nest package.

    Initializing module with templates and providers:

    import { NotifireModule } from "@notifire/nest";
    
    @Module({
      imports: [
        NotifireModule.forRoot({
          providers: [
            new SendgridEmailProvider({
              apiKey: process.env.SENDGRID_API_KEY,
              from: '[email protected]',
            }),
          ],
          templates: [
            {
              id: 'password-reset',
              messages: [
                {
                  subject: 'Your password reset request',
                  channel: ChannelTypeEnum.EMAIL,
                  template: `
                          Hi {{firstName}}!
                          To reset your password click <a href="{{resetLink}}">here.</a>
                   `,
                },
              ],
            },
          ],
        }),
      ],
    })
    

    Using notifire's singleton service in other services and modules:

    import { Injectable } from '@nestjs/common';
    import { NotifireService } from '@notifire/nest';
    
    @Injectable()
    export class UserService {
      constructor(private readonly notifire: NotifireService) {}
    
      async triggerEvent() {
        await this.notifire.trigger('password-reset', {
          $email: '[email protected]',
          $user_id: 'id'
        });
      }
    }
    

    Mail attachments contributors

    • Add Attachments Interface by @davidsoderberg in https://github.com/notifirehq/notifire/pull/93
    • Added attachment support for mailjet provider by @devblin in https://github.com/notifirehq/notifire/pull/116
    • Nodemailer attachments support by @galezra in https://github.com/notifirehq/notifire/pull/120
    • Postmark attachments support by @galezra in https://github.com/notifirehq/notifire/pull/119
    • Sendgrid attachments support by @galezra in https://github.com/notifirehq/notifire/pull/117
    • Added attachment support to mailgun by @l0ne in https://github.com/notifirehq/notifire/pull/122
    • Mandrill attachment by @diganta413 in https://github.com/notifirehq/notifire/pull/124
    • Added SES attachments support by @galezra in https://github.com/notifirehq/notifire/pull/129
    • Addd emailjs attachment support by @peoray in https://github.com/notifirehq/notifire/pull/130

    New providers

    • Added Sendinblue as a provider by @galezra in https://github.com/notifirehq/notifire/pull/111
    • Added Nexmo/Vonage SMS by @ranrib in https://github.com/notifirehq/notifire/pull/136
    • Added sms77 as an SMS provider @matthiez in https://github.com/notifirehq/notifire/pull/134

    Other changes

    • Fixed typo at the quick-start docs page by @chasmfiend in https://github.com/notifirehq/notifire/pull/110

    New Contributors in this version

    • @chasmfiend made their first contribution in https://github.com/notifirehq/notifire/pull/110
    • @devblin made their first contribution in https://github.com/notifirehq/notifire/pull/106
    • @galezra made their first contribution in https://github.com/notifirehq/notifire/pull/111
    • @l0ne made their first contribution in https://github.com/notifirehq/notifire/pull/122
    • @cloudguruab made their first contribution in https://github.com/notifirehq/notifire/pull/132
    • @matthiez made their first contribution in https://github.com/notifirehq/notifire/pull/134
    • @peoray made their first contribution in https://github.com/notifirehq/notifire/pull/130
    • @ranrib made their first contribution in https://github.com/notifirehq/notifire/pull/136
    Source code(tar.gz)
    Source code(zip)
  • v0.2.5(Nov 6, 2021)

    What's Changed

    • New Amazon SES email provider by @ulentini in https://github.com/notifirehq/notifire/pull/72
    • New Mandrill Provider Added by @diganta413 in https://github.com/notifirehq/notifire/pull/63
    • Custom template function by @davidsoderberg in https://github.com/notifirehq/notifire/pull/85
    • Add SNS sms provider by @Wyfy0107 in https://github.com/notifirehq/notifire/pull/87
    • Validator for trigger variables on the message level by @davidsoderberg in https://github.com/notifirehq/notifire/pull/91

    Other changes

    • Typo fixed by @tonytangdev in https://github.com/notifirehq/notifire/pull/81

    Custom template function

    In some cases, if you want to use your own template engine and not the built handlebars compiler, you can pass a function as the template in the message object.

    await templateStore.addTemplate({
        id: 'test-notification-promise',
        messages: [
          {
            subject: '<div>{{firstName}}</div>',
            channel: ChannelTypeEnum.EMAIL,
            template: (trigger: ITriggerPayload) => {
                return `Custom rendered HTML`
            }
          },
        ],
      });
    

    Validate trigger variables

    From this version, you can run a validator for the ITriggerPayload passed to each message.

    class JoiValidator extends IMessageValidator {
       constructor(private joiSchema) {}
    
       async validate(payload) {
         const { error } = this.joiSchema.validate(payload);
         if (error) throw new Error(error);
    
         return true;
       }
    }
    
    await templateStore.addTemplate({
        id: 'test-notification-promise',
        messages: [
          {
            validator: new JoiValidator(Joi.object({
                 firstName: Joi.string(),
                 lastName: Joi.string().required(),
           })),
            subject: '<div>{{firstName}}</div>',
            channel: ChannelTypeEnum.EMAIL,
            template: `Template`
          },
        ],
      });
    
    

    New Contributors

    • @ulentini made their first contribution in https://github.com/notifirehq/notifire/pull/72
    • @tonytangdev made their first contribution in https://github.com/notifirehq/notifire/pull/81
    • @davidsoderberg made their first contribution in https://github.com/notifirehq/notifire/pull/85
    • @diganta413 made their first contribution in https://github.com/notifirehq/notifire/pull/63
    • @Wyfy0107 made their first contribution in https://github.com/notifirehq/notifire/pull/87

    Full Changelog: https://github.com/notifirehq/notifire/compare/v0.2.4...v0.2.5

    Source code(tar.gz)
    Source code(zip)
  • v0.2.4(Oct 30, 2021)

    What's Changed

    Easily create provider

    Added a hygen script to generate a new provider boilerplate. Run yarn run generate:provider from the root of the project and follow the descriptions by @scopsy in https://github.com/notifirehq/notifire/pull/61

    New MailJet provider

    You can now send emails using mailjet by @deepak-sreekumar in https://github.com/notifirehq/notifire/pull/66

    Unified SMS Providers response

    A new unified provider response was added to all the SMS providers by @ComBarnea in https://github.com/notifirehq/notifire/pull/62

    Fixes

    • refactor(@notifire/core): adds a strict mode typescript compilation by @scopsy in https://github.com/notifirehq/notifire/pull/69
    • [doc] Updated readme's example by @akhil-gautam in https://github.com/notifirehq/notifire/pull/71
    • fix() Fixed Cannot find module 'handlebars' error

    New Contributors

    • @deepak-sreekumar made their first contribution in https://github.com/notifirehq/notifire/pull/66
    • @akhil-gautam made their first contribution in https://github.com/notifirehq/notifire/pull/71

    Full Changelog: https://github.com/notifirehq/notifire/compare/v0.2.3...v0.2.4

    Source code(tar.gz)
    Source code(zip)
  • v0.2.3(Oct 20, 2021)

    New providers 🚀

    Exciting release with 4 new provider:

    Improvements ⭐️

    • Added codespaces quick setup. Just press . on every PR to start developing quickly.
    • Unified Provider response API. You will get the provider message identifier and the time stamp.
    • A brand new theming API! Control the theme of your messages easily.

    Other bug fixes and enhancements

    Thanks to @SachinHatikankar100 and @L8Y for their contributions.

    Source code(tar.gz)
    Source code(zip)
Simple javascript toast notifications

toastr toastr is a Javascript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be cust

null 11.5k Jan 6, 2023
⛔️ DEPRECATED - Dependency-free notification library that makes it easy to create alert - success - error - warning - information - confirmation messages as an alternative the standard alert dialog.

DEPRECATED This repository is no longer supported, please consider using alternatives. Dependency-free notification library. Documentation » Hi NOTY i

Nedim Arabacı 6.7k Dec 21, 2022
Pure JavaScript library for better notification messages

Toastify Toastify is a lightweight, vanilla JS toast notification library. Demo Click here Features Multiple stacked notifications Customizable No blo

Varun A P 1.3k Dec 30, 2022
⚡️The Fullstack React Framework — built on Next.js

The Fullstack React Framework "Zero-API" Data Layer — Built on Next.js — Inspired by Ruby on Rails Read the Documentation “Zero-API” data layer lets y

⚡️Blitz 12.5k Jan 4, 2023
Beautiful JavaScript notifications with Web Notifications support.

v4: v5: A JavaScript/TypeScript notification, confirmation, and prompt library. Notifications can display as toast style, snackbar style, banners, dia

SciActive 3.6k Dec 30, 2022
This DJS ticket system with transcripts is fully configurable, you can change the transcripts channel, tickets channel, and more

This DJS ticket system with transcripts is fully configurable, you can change the transcripts channel, tickets channel, and more! This command uses embeds, and buttons.

LunarCodes 6 Oct 18, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
A Weather API project inspired by The Ultimate API Challenge / Weather API.

Weather API Project A Weather API project inspired by The Ultimate API Challenge / Weather API. Tech Stack: React.js Tailwind Axios Inspiration The Pr

Franziska 1 Dec 29, 2021
multi-channel fulfillment at scale

Openship is an operations platform that enables multi-channel fulfillment Website · Documentation · Openship Cloud Running locally To get Openship run

openship 931 Dec 31, 2022
The ultimate JavaScript string library

Voca is a JavaScript library for manipulating strings. https://vocajs.com v.camelCase('bird flight'); // => 'birdFlight' v.sprintf('%s co

Dmitri Pavlutin 3.5k Dec 20, 2022
v8n ☑️ ultimate JavaScript validation library

The ultimate JavaScript validation library you've ever needed. Dead simple fluent API. Customizable. Reusable. Installation - Documentation - API Intr

Bruno C. Couto 4.1k Dec 30, 2022
Bot WhatsApp multi device / multi perangkat menggunakan lib / api baileys-md. Give star ⭐

Requirements • Installation • Thanks to • Official Group Bot • Donate Information Chika-Md adalah bot yang awalnya memakai base dari Hisoka-Morou. Chi

Riy 57 Dec 25, 2022
whatsapp api to remote your whatsapp device. Support multi device, multi client. Still update to more feature. Please fork, star, donate and share.

Ndalu-wa-client DEPENDENCIES : { "@adiwajshing/baileys": "^4.2.0", "@adiwajshing/keyed-db": "^0.2.4", "axios": "^0.27.2", "body-parser

null 29 Jan 4, 2023
Ultimate calendar for your React app.

React-Calendar Ultimate calendar for your React app. Pick days, months, years, or even decades Supports range selection Supports virtually any languag

Wojciech Maj 2.8k Dec 27, 2022
The ultimate generator based flow-control goodness for nodejs (supports thunks, promises, etc)

co Generator based control flow goodness for nodejs and the browser, using promises, letting you write non-blocking code in a nice-ish way. Co v4 co@4

TJ Holowaychuk 11.8k Jan 2, 2023
The ultimate solution for populating your MongoDB database.

Mongo Seeding The ultimate solution for populating your MongoDB database ?? Define MongoDB documents in JSON, JavaScript or even TypeScript files. Use

Paweł Kosiec 494 Dec 29, 2022
Icon Ultimate Media Viewer

Ultimate Media Viewer View everything. Supported Images Audio Videos Documents Models PNG MP4 MD GLB JPG WEBM PDF GIF M3U8 SVG 3GP WEBP ICO Download R

null 1 May 23, 2022
Ultimate Script to complete PostgreSQL-to-PostgreSQL Migration right after AWS DMS task done

Ultimate Script to complete PostgreSQL-to-PostgreSQL Migration right after AWS DMS task done

방신우 22 Dec 23, 2022