4.7 KiB
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
- Docker et Docker Compose (recommandé)
- Ou Node.js v16+ et npm
Installation
Avec Docker (recommandé)
- Cloner ou copier le projet
- Copier le fichier d'exemple de configuration
cp .env.example .env
- Éditer
.envpour configurer vos identifiants et paramètres
nano .env # ou votre éditeur préféré
- Lancer avec Docker Compose
docker-compose up -d
- Accéder au site : http://localhost:3000
En local (sans Docker)
- Installer les dépendances
npm install
- Configurer l'environnement
cp .env.example .env
- Lancer le serveur
npm start
- 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 -fou console - Lancez manuellement :
npm run collect
Problème de connexion admin
- Vérifiez
ADMIN_USERNAMEetADMIN_PASSWORDdans.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.