02 · CivicTech · Données publiques

Programmes Candidats : une plateforme parlementaire archivée

Le service est fermé ; cette étude de cas conserve l'historique technique de Programmes Candidats. La plateforme transformait les scrutins publics de l'Assemblée nationale en parcours consultables : qui avait voté quoi, sur quel texte et à quelle étape. Les publications du Sénat complétaient le chemin lorsqu'un texte changeait de chambre. Avant la fermeture, plus de 137 000 pages sourcées rendaient cet ensemble accessible et indexable.

Ancienne page d'accueil de Programmes Candidats, service fermé, présentant les votes des députés, les scrutins et les textes de l'Assemblée nationale
Programmes Candidats · aperçu du produit

// sous le capot

Architecture et décisions techniques

J'ai séparé l'application publique Laravel du worker Go qui collectait, auditait et normalisait les sources officielles. MySQL servait les pages et la recherche, tandis que R2 conservait chaque archive source et son manifeste avant l'import.

  1. 01

    Isoler l'ingestion du trafic public

    Laravel répondait aux visiteurs pendant que le worker Go absorbait les volumes de données parlementaires. Une importation lourde ne ralentissait donc ni une fiche de député ni une page de scrutin.

  2. 02

    Auditer avant de publier

    Chaque archive recevait une empreinte de contenu. Si elle était identique, l'import était ignoré. Sinon, la source était archivée dans R2, sa structure était auditée et les données étaient vérifiées avant la promotion atomique du manifeste d'ingestion.

  3. 03

    Réunir des sources officielles hétérogènes

    Les ZIP structurés de l'Assemblée étaient complétés par les textes et rapports publiés par le Sénat. Les domaines étaient autorisés explicitement et le HTML était traité avec un parseur dédié.

  4. 04

    Rendre 137 000 pages traçables et pilotables

    Députés, scrutins, dossiers, textes et amendements partageaient un même contrat d'indexabilité. Chaque page distinguait les faits officiels, les calculs, les rapprochements automatiques et les synthèses relues. Les sitemaps étaient découpés et leur date suivait les données réellement modifiées.

Voir l’ensemble des réalisations