Retour aux projets
Web · juillet 2026

Refonte Opale News

Plateforme d'agrégation et de découverte d'événements sur la Côte d'Opale, avec recherche sémantique par embeddings (Google Gemini + Pinecone), assistant conversationnel RAG, base de lieux evergreen, interface trilingue (FR/EN/NL), newsletter hebdomadaire et déploiement continu (CI/CD) sur infrastructure auto-hébergée.

Voir le projet
Refonte Opale News

Contexte

Refonte complète d'Opale News, une plateforme d'agenda événementiel pour la Côte d'Opale. L'enjeu : centraliser des événements dispersés sur des sources hétérogènes et les rendre facilement découvrables pour les habitants comme pour les touristes d'une région frontalière (Belgique, UK à proximité), d'où une interface trilingue FR/EN/NL.

Approche

Pipeline d'ingestion automatisé combinant flux RSS et l'API DataTourisme, avec dédoublonnage des événements remontés par plusieurs sources à trois niveaux (correspondance d'URL exacte, hachage du contenu normalisé, puis correspondance floue en dernier recours). Recherche sémantique par embeddings (Google Gemini + base vectorielle Pinecone) plutôt qu'une recherche mot-clé classique, complétée par un assistant conversationnel type RAG pour interroger l'agenda en langage naturel. Newsletter hebdomadaire automatisée. Architecture Clean Architecture (couches Domain/Application/Infrastructure vérifiées par un script dédié), déploiement continu via un runner GitHub Actions auto-hébergé sur le même serveur (checkout + synchronisation du code + migrations + rechargement PHP-FPM à chaque push).

Défis techniques

Fiabiliser un pipeline alimenté par des sources externes imprévisibles (formats RSS variables, type MIME d'image mal détecté cassant l'affichage — corrigé via un filtre de conversion dédié, couvert par des tests unitaires). Un piège de CI a longtemps laissé le pipeline de déploiement en échec permanent sans casser le site pour autant : un script prévu pour une stack Docker non utilisée sur cet hébergement était appelé par erreur et échouait immédiatement, empêchant migrations et vidage de cache de s'exécuter — l'écriture du code restait malgré tout à jour grâce au cache d'opcode, ce qui a longtemps masqué le problème. Diagnostiqué en comparant le comportement réel du serveur à la CI, puis corrigé en retirant l'appel erroné. Migration ultérieure des tâches planifiées (dédoublonnage, réindexation de la recherche sémantique, purges, newsletter) d'un crontab serveur vers des workflows GitHub Actions versionnés.

Résultat

Plateforme en production, alimentée automatiquement sans intervention manuelle, avec newsletter hebdomadaire active, disponible sur opalenews.daens-elliott-projet-1.fr.

Technologies PHP 8.4 Symfony 8.0 Doctrine PostgreSQL Google Gemini Pinecone Leaflet Twig