Étude de cas
Newscard - Application de recommandation de contenus



















Contexte
Développement de fonctionnalités de recherche et de contact automatisé de fournisseurs, implémentation des interfaces front et back-end et du back-office. Client : Code Content Technologies.
Problème & objectifs
Problème
- Recherche manuelle de prestataires sur Google Maps : lente et non exhaustive
- Extraction d'emails de contact : visite individuelle de chaque site, informations souvent cachées ou dispersées
- Rédaction de demandes de devis : tâche répétitive nécessitant une personnalisation pour chaque prospect
- Aucun outil existant ne combine recherche géolocalisée, scraping de contacts et envoi automatisé d'emails en une seule plateforme
Objectifs
- Développer un module de localisation avec carte interactive pour définir la zone de recherche et les besoins (surface, logisticiens, flyers)
- Automatiser la découverte de prestataires dans un rayon configurable
- Implémenter un scraper multi-stratégies (7 méthodes) pour extraire les emails avec scoring de confiance
- Intégrer l'IA pour analyse et génération de contenus
- Proposer un back-office admin complet pour piloter le pipeline de prospection en 3 étapes
Approche
Le projet a été conçu avec une architecture microservices pour découpler les responsabilités et permettre un scaling indépendant de chaque composant :
- développement du frontend React avec React Query pour le cache serveur, React Hook Form + Zod pour la validation, et Leaflet pour les cartes interactives ;
- conception de l'API REST FastAPI avec architecture en couches (routes, services, repositories), authentification JWT avec 2FA et refresh tokens ;
- implémentation des 3 workers Python indépendants (Places, Scraping, Email) suivant les principes de Clean Architecture avec domaine, application et infrastructure séparés ;
- création d'un microservice Node.js dédié à l'IA pour l'analyse et la génération ;
- développement du back-office PHP avec édition inline, contrôle du pipeline et exports CSV ;
- couverture de tests complète : 829 tests répartis sur 5 suites (React 290, FastAPI 138, Workers 133, PHP 238, Modèle IA 30).
Cette architecture permet à chaque service d'évoluer indépendamment tout en communiquant via des APIs REST bien définies. Le tout est orchestré par Docker Compose avec 9 services, déployé sur VPS avec Nginx en reverse proxy et des backups automatisés.
Points techniques
Frontend : React 19 avec Vite 7, TypeScript, Tailwind CSS 4. React Query pour le state serveur, React Hook Form + Zod pour la validation, Leaflet pour les cartes interactives. Auth complète avec JWT, 2FA, email verification et approbation admin.
API Backend : FastAPI (Python) avec SQLAlchemy 2.0 async, Alembic pour les migrations, Pydantic pour la validation. Architecture en couches avec dependency injection. JWT access tokens (15 min) + refresh tokens HttpOnly (7 jours).
Workers : 3 workers Python indépendants. Recherche Annuaires prestataires. Scraping : 7 stratégies d'extraction d'emails (mailto, JSON-LD, data-attributes, onclick, DOM patterns, regex, Playwright fallback) avec scoring de confiance. Email : envoi rate-limited via Brevo.
IA : Microservice Node.js/Express dédié. Analyse de pertinence d'URLs (scoring 0-100), génération d'illustrations en 6 styles prédéfinis + custom. Compression client-side (<800KB).
Admin : Back-office PHP 8+ avec édition inline dynamique (factory pattern), pipeline 3 étapes (Places → Scraping → Email), gestion des comptes utilisateurs (approbation/refus), exports CSV.
Infrastructure : Docker Compose orchestrant 9 services (React, FastAPI, PHP, Node.js, Workers, PostgreSQL, pgAdmin, proxy, backups). Déploiement pré-production et production sur VPS avec Nginx en reverse proxy, HTTPS via certbot et configuration multi-environnements. Backups automatisés avec rotation (7j/4sem/6mois).
Résultats
Les fonctionnalités livrées proposent :
- un module de localisation complet avec carte interactive, calcul automatique des logisticiens selon la surface et sauvegarde des brouillons ;
- un assistant IA en 4 étapes ;
- un pipeline automatisé de prospection : de la recherche à l'envoi d'emails, piloté depuis le back-office admin ;
- un scraper multi-stratégies avec 7 méthodes d'extraction, fallback Playwright pour les sites JS-heavy et scoring de confiance ;
- 829 tests automatisés couvrant l'ensemble de la stack (frontend, backend, workers, admin, microservice IA).
Ces fonctionnalités transforment un processus de prospection manuel de plusieurs heures en un pipeline automatisé exécutable en quelques clics.
Ce que j'ai appris
- architecturer un système microservices complet avec 5 composants indépendants communiquant via APIs REST ;
- implémenter un scraper robuste avec 7 stratégies d'extraction et protection SSRF ;
- intégrer l'API d'un modèle d'IA générative pour la génération de contenus dans un microservice dédié ;
- concevoir un système d'authentification complet (JWT, 2FA, refresh tokens, email verification, approbation admin) ;
- orchestrer 9 services Docker et gérer le déploiement pré-prod/prod sur VPS avec Nginx, HTTPS et backups automatisés ;
- atteindre une couverture de tests significative (829 tests) sur une stack polyglotte (TypeScript, Python, PHP, Node.js).
Ces fonctionnalités de l'application Newscard représentent mon projet le plus complet techniquement : il m'a poussé à maîtriser l'architecture microservices, le web scraping avancé et l'intégration d'IA, tout en maintenant une qualité de code élevée sur 4 langages différents.