Files
wiki/Catalogue-Self-Hosted/apps/app-eventcatalog.md
T
2026-06-09 18:40:21 +02:00

136 lines
6.0 KiB
Markdown

---
title: EventCatalog
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, development, documentation, event-driven, kafka, architecture, markdown]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Development, https://github.com/event-catalog/eventcatalog]
---
# 💻 EventCatalog
> **La documentation vivante pour architectures event-driven** : cataloguez vos événements, services, producers et consumers (Kafka, RabbitMQ, AWS EventBridge), visualisez le flux, et maintenez la doc à jour automatiquement.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | [eventcatalog.dev](https://www.eventcatalog.dev/) |
| **GitHub** | [event-catalog/eventcatalog](https://github.com/event-catalog/eventcatalog) |
| **License** | MIT |
| **Langage** | TypeScript (Astro + React) |
| **Étoiles GitHub** | 2,7k ⭐ |
| **Dernière MAJ** | 2026-06-07 |
| **Catégorie** | [[cat-development\|Development]], Documentation / Architecture |
## 📝 Description
**EventCatalog** est un **catalogue de documentation dédié aux architectures event-driven** : il permet de documenter formellement vos **événements, schémas (Avro/JSON Schema/Protobuf), services, topics, producers, consumers**, et de **visualiser les flux** entre eux. Développé par David Boyne, c'est aujourd'hui l'outil de référence pour les équipes qui construisent des plateformes Kafka ou RabbitMQ à grande échelle.
L'idée directrice : dans une archi event-driven, **les événements sont des contrats d'API** entre services. Ils doivent être **versionnés, documentés, découvrables**, et **l'évolution des schémas doit être tracée**. EventCatalog remplit ce rôle en offrant un **portail centralisé** où l'on retrouve : la documentation de chaque événement (Markdown enrichi), son schéma, les producers, les consumers, le versioning, l'historique des changements, et des diagrammes de flux auto-générés.
EventCatalog supporte nativement les **standards de schema registry** (Confluent, Apicurio) et s'intègre avec vos outils existants (AsyncAPI, OpenAPI). Les fichiers sont stockés en **Markdown/YAML versionnés dans Git** — la doc vit avec le code.
**Public cible** : **architectes, équipes plateforme, devs Kafka/RabbitMQ, organisations event-driven matures**.
### Fonctionnalités principales
-**Catalogage d'événements** : nom, schéma, version, owners, sémantique
-**Visualisation de flux** : graphe des producers → topics → consumers
-**Schémas** : JSON Schema, Avro, Protobuf, AsyncAPI
-**Versioning** : historique des changements, breaking changes détectés
-**Documentation Markdown** enrichie (MDX, composants custom)
-**Git-as-database** : fichiers versionnés, PR-ables, code-reviewed
-**Recherche full-text** dans tous les événements
-**Diagrammes auto** : Mermaid, PlantUML, graphes d'archi
-**Intégration Confluent Schema Registry** (auto-sync)
-**Multi-domaines** : un catalogue par bounded context
-**Visualisation OpenAPI** pour APIs synchrones en complément
## 🚀 Installation
### Via npx (le plus simple)
```bash
npx eventcatalog@latest init mon-catalogue
cd mon-catalogue
npm run dev
# → http://localhost:3000
```
### Via Docker (production)
```yaml
# docker-compose.yml
version: '3.8'
services:
eventcatalog:
image: eventcatalog/eventcatalog:latest
container_name: eventcatalog
restart: unless-stopped
ports:
- "3000:3000"
environment:
EVENTCATALOG_HOST: "https://catalog.example.com"
volumes:
- ./catalog:/app/eventcatalog
labels:
- "traefik.enable=true"
- "traefik.http.routers.catalog.rule=Host(`catalog.example.com`)"
- "traefik.http.routers.catalog.entrypoints=websecure"
- "traefik.http.routers.catalog.tls.certresolver=letsencrypt"
```
### Installation manuelle
```bash
git clone https://github.com/event-catalog/eventcatalog.git
cd eventcatalog
npm install
npm run dev
```
## ⚙️ Configuration
1. **Structure Git** : `events/`, `services/`, `domains/`, `channels/` (topics)
2. **Définir un événement** : `events/OrderCreated/index.md` + `events/OrderCreated/schema.json`
3. **Référencer producers/consumers** : dans le frontmatter Markdown
4. **Configurer les schémas** : JSON Schema, Avro, Protobuf, ou pointer vers Confluent
5. **Custom domain/visualisation** : config dans `eventcatalog.config.js`
6. **CI/CD** : déploiement auto sur push Git (Vercel, Netlify, ou Docker)
## 🔗 Alternatives
- **Backstage** (Spotify) — Portail développeur global (events = un module parmi d'autres)
- **AsyncAPI Studio** — Éditeur de specs AsyncAPI, sans visualisation de flux
- **Slate / Mintlify** — Générateurs de docs API, pas spécifiques event-driven
- **Bump.sh** — Doc OpenAPI/AsyncAPI, payant, hébergé
- **Confluent Docs** (Confluent Cloud) — Verouillé à la stack Confluent
## 🔒 Sécurité
- **🔐 HTTPS obligatoire via [[app-traefik]]** : contient potentiellement des schémas sensibles (PII, données métier)
- **🛡️ Authentification** : EventCatalog Pro propose SSO ; en community, mettre derrière un VPN/Authentik
- **🔒 Git privé** : si la doc contient des infos sensibles, repo privé obligatoire
- **🛡️ Schémas et PII** : éviter de mettre des exemples de données réelles dans les schemas
- **🛡️ Webhooks d'intégration** : secrets stockés en variables d'environnement, jamais commit
## 📚 Ressources
- [Site officiel](https://www.eventcatalog.dev/)
- [Documentation](https://www.eventcatalog.dev/docs)
- [GitHub event-catalog/eventcatalog](https://github.com/event-catalog/eventcatalog)
- [Démo en ligne](https://demo.eventcatalog.dev/)
- [Exemples Kafka](https://github.com/event-catalog/eventcatalog/tree/main/examples)
## 🔗 Pages Liées
- [[cat-development]] — Catégorie Development
- [[app-backstage]] — Portail développeur global (Spotify)
- [[app-traefik]] — Reverse proxy HTTPS
- [[app-kafka]] — Event streaming (si déployé)
- [[securisation-home-lab]] — Bonnes pratiques
- [[recettes-docker-compose]] — Templates Docker