- 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
4.3 KiB
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 YAMLserver.v— HTTP server sur:9090avec routing basiqueevent.v— Types de données :Event,Config,Sourcentfy.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.vamé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=30mmute temporaire - Grouping — Regrouper N notifications similaires en une seule
- Webhook secret validation — HMAC pour tous les webhooks
- Docker Compose example —
docker-compose.ymlprê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 |