153 lines
4.7 KiB
Markdown
153 lines
4.7 KiB
Markdown
# 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](https://www.docker.com/) et [Docker Compose](https://docs.docker.com/compose/) (recommandé)
|
|
- Ou [Node.js](https://nodejs.org/) v16+ et npm
|
|
|
|
## Installation
|
|
|
|
### Avec Docker (recommandé)
|
|
|
|
1. Cloner ou copier le projet
|
|
2. Copier le fichier d'exemple de configuration
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
3. Éditer `.env` pour configurer vos identifiants et paramètres
|
|
```bash
|
|
nano .env # ou votre éditeur préféré
|
|
```
|
|
4. Lancer avec Docker Compose
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
5. Accéder au site : http://localhost:3000
|
|
|
|
### En local (sans Docker)
|
|
|
|
1. Installer les dépendances
|
|
```bash
|
|
npm install
|
|
```
|
|
2. Configurer l'environnement
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
3. Lancer le serveur
|
|
```bash
|
|
npm start
|
|
```
|
|
4. 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 :
|
|
```bash
|
|
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.
|