NewsFlow est une application web de gestion de flux RSS permettant aux utilisateurs de suivre l'actualité de diverses sources françaises. Le projet offre une interface moderne et intuitive pour consulter, filtrer et sauvegarder des articles de presse dans un environnement personnalisé.
- Agrégation de contenus : Collection d'articles depuis divers flux RSS (Le Monde, Les Échos, etc.)
- Catégorisation : Organisation des articles par catégories thématiques (Économie, Politique, Tech, etc.)
- Authentification : Système de création de compte et connexion sécurisée
- Favoris : Possibilité de marquer des articles pour lecture ultérieure
- Dashboard personnel : Visualisation des statistiques d'utilisation et recommandations personnalisées
- Suivi d'activité : Enregistrement des interactions utilisateur pour améliorer les recommandations
- Backend : Flask (Python)
- Base de données : PostgreSQL avec SQLAlchemy ORM
- Frontend : HTML, Tailwind CSS, JavaScript
- Authentification : Flask-Login
- Gestion des flux : Feedparser
- Migrations : Flask-Migrate
newsflow/
├── app/ # Package principal
│ ├── models/ # Modèles de données
│ │ ├── article.py # Modèle Article
│ │ ├── category.py # Modèle Catégorie
│ │ ├── favorite.py # Modèle Favoris
│ │ ├── interaction.py # Modèle Interactions utilisateur
│ │ ├── ... # Autres modèles
│ ├── routes/ # Endpoints de l'application
│ │ ├── auth.py # Routes d'authentification
│ │ ├── dashboard.py # Routes du tableau de bord
│ │ ├── favorite.py # Routes des favoris
│ │ ├── feed.py # Routes du fil d'actualités
│ ├── services/ # Services et utilitaires
│ │ ├── recommender.py # Service de recommandation d'articles
│ │ ├── rss_service.py # Service de récupération des flux RSS
│ ├── templates/ # Templates HTML
│ │ ├── auth/ # Templates d'authentification
│ │ ├── dashboard/ # Templates du tableau de bord
│ │ ├── feed/ # Templates du fil d'actualités et articles
│ ├── __init__.py # Initialisation de l'application
├── requirements.txt # Dépendances Python
├── .gitignore # Fichiers ignorés par git
├── run.py # Point d'entrée de l'application
└── test_db.py # Script de test de connexion à la base de données
- User : Informations utilisateur et authentification
- Article : Contenu des articles récupérés des flux RSS
- Category : Catégories thématiques des articles
- Source : Sources des flux RSS
- Favorite : Marqueurs d'articles favoris
- Interaction : Actions des utilisateurs (lectures, vues, etc.)
- Keyword : Mots-clés extraits des articles
- UserCategoryPreference : Préférences utilisateur par catégorie
- UserKeywordPreference : Préférences utilisateur par mot-clé
- Python 3.8+
- PostgreSQL
- Pip (gestionnaire de paquets Python)
-
Cloner le dépôt
git clone https://github.com/votre-nom/newsflow.git cd newsflow -
Créer un environnement virtuel
python -m venv venv source venv/bin/activate # Sur Windows: venv\Scripts\activate
-
Installer les dépendances
pip install -r requirements.txt
-
Configurer les variables d'environnement
Créez un fichier
.envà la racine du projet avec les informations suivantes:SECRET_KEY=votre_clé_secrète DATABASE_URL=postgresql://utilisateur:mot_de_passe@hôte:port/nom_base_de_données -
Initialiser la base de données
flask init-db
-
Récupérer les articles
flask update-rss
-
Lancer l'application
flask run # ou python run.py
Pour mettre à jour la base de données avec les derniers articles:
flask update-rssSi vous modifiez les modèles, utilisez Flask-Migrate pour appliquer les changements:
flask db migrate -m "Description des changements"
flask db upgradeL'application est configurée pour fonctionner sur divers environnements:
- Développement : Mode debug activé (
flask run --debug) - Production : Utilisez un serveur WSGI comme Gunicorn ou uWSGI
Pour le déploiement en production, assurez-vous de:
- Configurer correctement les variables d'environnement
- Utiliser une base de données PostgreSQL robuste
- Mettre en place un proxy inversé (Nginx, Apache)
- Configurer SSL pour HTTPS
Les contributions sont les bienvenues! Pour contribuer:
- Forkez le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/amazing-feature) - Committez vos changements (
git commit -m 'Add some amazing feature') - Poussez vers la branche (
git push origin feature/amazing-feature) - Ouvrez une Pull Request
Ce projet est distribué sous la licence MIT. Voir le fichier LICENSE pour plus d'informations.
Pour toute question ou suggestion, n'hésitez pas à me contacter [votre-email@example.com].