Files
2026-10-25 20:05:12 +01:00

4.7 KiB

Veille Tech - Agrégateur d'actualités informatiques

Agrégateur simple et automatisé d'actualités liées à l'informatique, avec interface publique et administration.

Fonctionnalités

  • Page publique : Liste des articles publiés, tri par date (récent/ancien), filtrage par catégorie
  • Collecte automatique : Récupération depuis des flux RSS toutes les X minutes (configurable)
  • Évitement des doublons : Vérification par URL et par titre
  • Administration sécurisée : Authentification par identifiants/mot de passe
  • Gestion des articles : Valider, masquer, rejeter, publier, supprimer
  • Journal d'activité : Traçabilité des actions
  • Gestion des sources : Consultation des sources RSS configurées
  • Dockerisé : Prêt à tourner dans un conteneur avec volume persistant

Prérequis

Installation

Avec Docker (recommandé)

  1. Cloner ou copier le projet
  2. Copier le fichier d'exemple de configuration
cp .env.example .env
  1. Éditer .env pour configurer vos identifiants et paramètres
nano .env  # ou votre éditeur préféré
  1. Lancer avec Docker Compose
docker-compose up -d
  1. Accéder au site : http://localhost:3000

En local (sans Docker)

  1. Installer les dépendances
npm install
  1. Configurer l'environnement
cp .env.example .env
  1. Lancer le serveur
npm start
  1. Accéder au site : http://localhost:3000

Configuration

Éditez le fichier .env :

Variable Description Défaut
PORT Port du serveur 3000
ADMIN_USERNAME Identifiant admin admin
ADMIN_PASSWORD Mot de passe admin changeme123
SESSION_SECRET Clé secrète pour les sessions À changer en production
COLLECT_INTERVAL Intervalle de collecte en minutes 60
AUTO_PUBLISH Publier automatiquement (true/false) false
AI_ENABLED Activer la collecte IA (facultatif) false

Utilisation

Page publique

  • Accédez à http://localhost:3000
  • Filtrez par catégorie via le menu
  • Triez par date (plus récent / plus ancien)
  • Cliquez sur "Lire l'article original" pour aller sur la source

Interface d'administration

  • Accédez à http://localhost:3000/admin
  • Connectez-vous avec vos identifiants (.env)
  • En attente : Articles collectés, à valider
  • Valider et publier : Peut modifier catégories et résumé avant publication
  • Publier / Masquer / Rejeter / Supprimer : Actions sur les articles
  • Collecter maintenant : Déclenche une collecte manuelle
  • Sources : Liste des flux RSS configurés
  • Journal : Historique des actions

Collecteur

Le collecteur fonctionne automatiquement selon COLLECT_INTERVAL. Vous pouvez aussi le lancer manuellement :

npm run collect

Sources

Les sources RSS sont configurées dans config/sources.json. Vous pouvez ajouter, supprimer ou désactiver des sources en éditant ce fichier.

Structure du projet

.
├── app/                # Application web (Express, EJS)
│   ├── routes/        # Routes public/admin
│   ├── static/        # CSS, JS statiques
│   ├── templates/     # Vues EJS
│   ├── db.js          # Connexion SQLite
│   └── server.js      # Serveur principal
├── collector/         # Collecteur RSS
├── config/            # Configuration (sources.json)
├── data/              # Base de données SQLite (volume persistant)
├── migrations/        # Schéma BDD
├── Dockerfile
├── docker-compose.yml
└── README.md

Sécurité

  • Authentification obligatoire pour /admin
  • Sessions sécurisées avec express-session
  • Mots de passe non exposés dans le code
  • Variables sensibles dans .env (non commité)
  • Validation des URLs et données entrantes
  • Protection CSRF basique via sessions

Dépannage

La collecte ne fonctionne pas

  • Vérifiez que les flux RSS sont accessibles
  • Consultez les logs : docker-compose logs -f ou console
  • Lancez manuellement : npm run collect

Problème de connexion admin

  • Vérifiez ADMIN_USERNAME et ADMIN_PASSWORD dans .env
  • Supprimez le cookie de session si nécessaire

Base de données corrompue

  • Sauvegardez data/articles.db
  • Supprimez-le et relancez l'application (sera recréée)

Évolutions possibles

  • Ajout de sources HTML scraping
  • Intégration IA pour résumé/catégorisation (modèles gratuits)
  • Système de tags avancé
  • Recherche plein texte
  • API REST
  • Pagination

Licence

Projet développé dans un cadre pédagogique.