Lecteur de flux RSS/Atom en ligne, 100 % client-side, sans compte utilisateur. Interface conforme au Système de Design de l'État (DSFR).
j / k (article suivant/précédent), r (lu/non lu), s (favori), o (ouvrir l'original), Échap (fermer)Aucune donnée ne quitte le navigateur. Tout est stocké localement :
| Donnée | Stockage | Limite |
|---|---|---|
| Préférences (thème, pagination, etc.) | localStorage | ~5 Mo |
| Articles, flux, catégories | IndexedDB | 50+ Mo |
Aucun cookie, aucun traceur, aucun compte utilisateur.
Les flux RSS étant hébergés sur des serveurs externes, l'application utilise une stratégie de détection automatique :
proxy.php) — Si le serveur dispose de PHP, toutes les requêtes passent par ce relai (~50 lignes, zéro dépendance). Autonomie totale.allorigins.win → corsproxy.io.La détection est transparente pour l'utilisateur.
Aucune dépendance à installer. Copier les fichiers sur n'importe quel serveur web.
# Cloner le dépôt
git clone https://gitlab-forge.din.developpement-durable.gouv.fr/jean-philippe.simonnet/rss.git
cd rss
# Tester localement
python3 -m http.server 8080
# Ouvrir http://localhost:8080
Les flux seront récupérés via les proxies publics (pas de PHP).
# Tester localement avec PHP
php -S localhost:8080
# Ouvrir http://localhost:8080
Le fichier proxy.php sera automatiquement détecté et utilisé comme relai CORS.
Le fichier .gitlab-ci.yml est inclus. Il suffit de pousser sur la branche main pour déclencher le déploiement automatique sur GitLab Pages.
rss/
├── index.html Page principale
├── proxy.php Proxy CORS PHP (optionnel)
├── accessibilite.html Déclaration d'accessibilité
├── mentions-legales.html Mentions légales
├── .gitlab-ci.yml Pipeline GitLab Pages
└── source/
├── selection.opml Sélection 1 : 183 flux (veille complète)
├── selection2.opml Sélection 2 : 77 flux (veille France)
├── css/
│ └── app.css Styles de l'application
├── js/
│ ├── app.js Point d'entrée, événements, orchestration
│ ├── storage.js IndexedDB + localStorage
│ ├── feed-fetcher.js Détection proxy + chaîne de fallback
│ ├── feed-parser.js Parsing RSS 2.0 / Atom (DOMParser)
│ ├── opml.js Import / export OPML
│ ├── ui.js Rendu DOM (sidebar, articles, lecture)
│ └── sanitizer.js Sanitisation HTML (prévention XSS)
├── content/ Contenus Markdown des sous-pages
├── dsfr/ Système de Design de l'État (bundle local)
├── marked.min.js Conversion Markdown pour les sous-pages
└── page.js Injection header/footer des sous-pages
Le contenu HTML des flux RSS est sanitisé par liste blanche avant affichage :
p, a, img, h1–h6, ul/ol/li, table, blockquote, pre, code…href pour a, src/alt pour img…)<script>, <style>, <iframe>, <object>, <embed>, <form>, <svg>javascript:, data:text/html, vbscript:target="_blank" rel="noopener noreferrer"Médias FR, Tech, IA, Environnement, Institutions, Open Data, Cybersécurité (France/EU/International), Dev/DevSecOps/Cloud.
Médias FR, Tech FR, Environnement, Ministères.