Initial vault setup
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
---
|
||||
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é)
|
||||
|
||||
```yaml
|
||||
# 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 `secrets` Docker / Vault / SOPS, **jamais en clair dans le compose**.
|
||||
- **JWT** : rotation régulière de `JWT_SECRET` invalide 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
|
||||
|
||||
- [Site officiel](https://novu.co)
|
||||
- [Documentation](https://docs.novu.co)
|
||||
- [Repository GitHub](https://github.com/novuhq/novu)
|
||||
- [Selfh.st — Novu](https://selfh.st/apps/?tag=Development)
|
||||
- [Notification Inbox (composant)](https://docs.novu.co/inbox/introduction)
|
||||
|
||||
## 🔗 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
|
||||
Reference in New Issue
Block a user