Retour aux projets

Étude de cas

Newscard - Application de recommandation de contenus

Page de connexion
Dashboard client avec alertes sécurité et liste des demandes
Recherche de localisation sur carte interactive
Carte avec adresse sélectionnée
Configuration de la zone de distribution
Formulaire rempli avec calcul automatique des logisticiens
Finalisation de la demande
Confirmation de demande
Assistance IA pour la génération de contenus optionnels
Assistant IA - Analyse automatique avec scoring de pertinence
Assistant IA - Sélection du style d'illustration (6 presets)
Assistant IA - Image générée et validation
Back-office admin - Tableau de bord avec statistiques globales
Back-office admin - Liste des demandes avec filtres et exports CSV
Back-office admin - Page exports CSV (utilisateurs, contenus, images)
Back-office admin - Détail demande avec pipeline 3 étapes
Back-office admin - Informations demande avec édition inline et statistiques
Back-office admin - Pipeline étape 1 terminée (40 prestataires trouvés)
Back-office admin - Pipeline étapes 1 et 2 terminées (19 emails extraits)

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.

Ce projet vous intéresse ?

Discutons de vos besoins et voyons comment je peux vous aider à concrétiser votre projet.