Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
+121
View File
@@ -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