Files
ntfy-bridge/ROADMAP.md
T
bruno 3f48912ad7 docs: initial architecture, roadmap, readme for ntfy-bridge
- README.md: project overview, quickstart, sources summary
- ARCHITECTURE.md: complete architecture, data flow, project structure
- ROADMAP.md: 5-phase development plan (v0.1.0 → v0.5.0+)
- CONTRIBUTING.md: dev setup, conventions, how to add a source
- ntfy-bridge.example.yaml: fully documented configuration template
- scripts/example-cron-disk.sh: example cron script → ntfy-bridge
2026-08-01 10:56:32 -04:00

4.3 KiB

ntfy-bridge — Roadmap

Phase 1 : MVP (core engine) — v0.1.0

Objectif : daemon qui compile, lit une config, écoute des webhooks et envoie vers Ntfy.

  • main.v — CLI args (--config, --version, --validate)
  • config.v — Chargement + validation du YAML
  • server.v — HTTP server sur :9090 avec routing basique
  • event.v — Types de données : Event, Config, Source
  • ntfy.v — Client HTTP POST vers Ntfy (topic, message, priority, tags)
  • sources/generic.v — Webhook passe-partout (POST raw → Ntfy)
  • log.v — Logging structuré (timestamp, level, message)
  • ntfy-bridge.example.yaml — Config d'exemple complète et commentée

Sortie : ntfy-bridge compile, accepte un webhook générique et l'envoie vers Ntfy.

Phase 2 : Sources spécialisées — v0.2.0

  • sources/gitea.v — Transformer Gitea (push, PR, issues, releases)
    • Parse le JSON webhook Gitea
    • Format : 🔨 [repo] auteur action: "message" (sha)
    • Priority map par type d'événement
  • sources/uptime_kuma.v — Transformer Uptime Kuma
    • Parse le JSON webhook Kuma (heartbeat)
    • Format : 🚨 monitor is DOWN — status — since time
    • Priority 5 pour DOWN, 1 pour UP
  • sources/docker.v — Watcher socket Docker
    • Connexion au socket Docker (local + distant TCP)
    • Filtrage par événements (die, health_status, oom)
    • Template de message configurable
    • Multi-hôtes (plusieurs sockets dans la config)
  • sources/http_poll.v — Poller HTTP
    • Goroutine de polling périodique (intervalle configurable)
    • Vérification status code + timeout
    • State machine up/down avec notification uniquement au changement
  • dedup.v — Déduplication basique
    • Cache LRU avec TTL (5 min par défaut)
    • Clé de déduplication : source + type + cible

Sortie : Toutes les sources majeures sont intégrées et fonctionnelles.

Phase 3 : Robustesse — v0.3.0

  • dedup.v amélioré — Rate limiting global par topic
  • Signature webhooks — Vérification HMAC-SHA256 optionnelle (Gitea)
  • Retry logic — Retry avec backoff exponentiel vers Ntfy (3 tentatives)
  • Graceful shutdown — SIGTERM → drain des événements en cours
  • Health endpoint — GET /health → 200 + uptime + stats basiques
  • Stats endpoint — GET /stats → compteurs par source
  • Config reload — SIGHUP → reload config sans redémarrage
  • Tests unitaires — config_test.v, gitea_test.v, dedup_test.v

Sortie : Le daemon est prêt pour la production homelab.

Phase 4 : Qualité de vie — v0.4.0

  • Template engine avancé — Support des variables dans les messages
    "🐳 {container_name} → {status} (exit: {exit_code}) on {host}"
    
  • Silence rules — POST /api/silence?duration=30m mute temporaire
  • Grouping — Regrouper N notifications similaires en une seule
  • Webhook secret validation — HMAC pour tous les webhooks
  • Docker Compose example — docker-compose.yml prêt à l'emploi
  • systemd unit file — ntfy-bridge.service
  • CI/CD via Gitea Actions — build + test automatique

Sortie : Expérience utilisateur complète et agréable.

Phase 5 : Futures idées — v0.5.0+

  • Web UI minimale — Page de statut des sources + historique récent
  • Filtres avancés — Expressions conditionnelles par source
    filters:
      - match: { container_name: "test-*" }
        action: drop
    
  • Notifications structurées — Support des actions Ntfy (boutons click)
  • Intégration Prometheus — Métriques exposées au format OpenMetrics
  • Webhook sortant — Forwarder les événements vers un autre webhook (Slack, Discord)
  • Support multi-utilisateurs — ACLs par webhook_path
  • Fichier d'état — Persistance de l'état up/down des health checks
  • Plugin system — Sources customisables via dll/.so (futur lointain)

Suivi des versions

Version Date cible Contenu
v0.1.0 — Moteur core + webhook générique
v0.2.0 — Sources Gitea, Uptime Kuma, Docker, HTTP poll
v0.3.0 — Robustesse, tests, health check, rate limiting
v0.4.0 — Templates, silence rules, grouping, CI/CD
v0.5.0+ — Web UI, Prometheus, plugins