Début du projet
This commit is contained in:
commit
e7d4e607f6
23 files changed
+4855
No files matched your search
@@ -0,0 +1,152 @@
|
||||
# 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.
|
||||