5.5 KiB
title: Novu created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, api, backend, tools] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/novuhq/novu]
💻 Novu
Plateforme de notifications open source — unifie l'envoi de notifications (email, SMS, push, in-app, webhooks) derrière une API unique et un workflow de préférences utilisateur.
📋 Informations Générales
| Attribut | Valeur |
|---|---|
| Nom | Novu |
| Slug | novu |
| Description | Plateforme de notifications multi-canal (inbox, email, push, SMS, chat) |
| Site officiel | https://novu.co |
| Repository | https://github.com/novuhq/novu |
| Stars | 39 079 ⭐ |
| Licence | MIT (core) + Enterprise (Cloud) |
| Langage principal | TypeScript (Node.js) + React (dashboard, in-app) |
| Catégorie | Development |
| Tags | [catalogue, development, api, backend, tools] |
📝 Description
Novu est une plateforme de notifications open source conçue pour unifier l'envoi de messages sur plusieurs canaux depuis une seule API. Les développeurs utilisent un seul SDK (@novu/node) et un seul workflow definition pour router une notification vers email, SMS, push mobile, chat (Slack/Discord/Teams), webhook ou une inbox in-app (composant React/Vue/Angular).
L'inbox in-app est la brique différenciante : c'est un composant embed qui affiche, dans votre application, l'historique des notifications de l'utilisateur avec lu/non-lu, marque-pages et préférences granulaires par canal et par topic — similaire à ce que font Intercom, OneSignal ou Knock, mais en self-hostable.
Modèle de licence : Le core est MIT (auto-hébergeable), mais Novu Inc. a introduit en 2024 une Enterprise License sur certaines briques (SSO/SCIM, audit log avancé, multi-environnements) qui ne sont pas disponibles en self-host MIT. La plateforme cloud novu.co est un service freemium avec palier Pro. Pour un self-host 100 % libre, on dispose de l'API, de l'inbox, de la majorité des providers, mais on perd les features Enterprise.
Cas d'usage : ajouter des notifications transactionnelles (confirmation de commande, alertes) à un produit SaaS sans réimplémenter le routage par canal, l'email templating, le tracking d'ouverture.
🚀 Installation
Via Docker (recommandé)
# docker-compose.yml (stack officielle Novu)
version: "3.8"
services:
api:
image: ghcr.io/novuhq/novu/api:0.24
depends_on: [mongodb, redis]
environment:
MONGO_URL: mongodb://mongodb:27017/novu-db
REDIS_HOST: redis
JWT_SECRET: ***changeme***
ports: ["3000:3000"]
worker:
image: ghcr.io/novuhq/novu/worker:0.24
depends_on: [mongodb, redis]
environment:
MONGO_URL: mongodb://mongodb:27017/novu-db
REDIS_HOST: redis
web:
image: ghcr.io/novuhq/novu/web:0.24
ports: ["4200:8080"]
mongodb:
image: mongo:7
volumes: ["./mongo:/data/db"]
redis:
image: redis:7-alpine
⚠️ La stack complète inclut aussi ws (WebSocket pour l'inbox temps réel) et embed (widget JS) — voir le repo officiel.
Installation manuelle
Déconseillé : le projet est un monorepo TypeScript avec ≥8 services interconnectés. Privilégier l'image Docker officielle (Helm chart Kubernetes aussi disponible).
⚙️ Configuration
- JWT_SECRET : secret partagé entre API et Worker, long et unique.
- Providers SMTP/SMS/Push : à configurer depuis l'UI dashboard (
/integrations), chaque provider a ses credentials (SendGrid, Twilio, FCM, APNS, Slack…). - MongoDB : URI avec auth à partir du moment où l'instance est exposée.
- Redis : utilisé comme broker de jobs, obligatoire pour les workers.
- Variables frontend :
REACT_APP_API_URL,REACT_APP_WS_URLà pointer vers l'API/WS derrière le reverse-proxy.
🔗 Alternatives
- Knock — Concurrent direct, plus orienté produit, moins orienté self-host.
- OneSignal — Notifications push gratuites, mais service cloud uniquement.
- Knative Eventing / Apache Kafka + SMTP — Plus bas niveau, davantage de travail d'intégration.
- Supabase + pg_net — Combinaison maison pour des besoins simples, sans UI de templates.
🔒 Sécurité
- API key & secrets providers : stocker via
secretsDocker / Vault / SOPS, jamais en clair dans le compose. - JWT : rotation régulière de
JWT_SECRETinvalide toutes les sessions en cours. - MongoDB : activer l'auth (
MONGO_INITDB_ROOT_USERNAME/PASSWORD) et ne pas exposer 27017. - Dashboard : mettre en place un SSO/OIDC devant l'UI si l'instance est partagée en équipe.
- Rate-limiting : Novu expose des endpoints publics (webhooks entrants) — limiter via reverse-proxy (fail2ban, Traefik middlewares).
📚 Ressources
🔗 Pages Liées
- cat-development — Catégorie Development
- app-supabase — Couplage courant Novu + Supabase (auth + notifications)
- app-appwrite — Alternative BaaS avec fonctions de notification
- app-traefik — Reverse-proxy HTTPS recommandé
- securisation-home-lab — Bonnes pratiques de sécurité
- recettes-docker-compose — Templates Docker