Registre
Inscrit
2026-10-01
Premier commit
2026-10-01

on-record

App · vie publique · en ligne

Ce que font vraiment les députés, pièces à l’appui, pas ce qu’ils disent.

Comment votent vraiment les députés, scrutin par scrutin. Chaque vote public de l’Assemblée nationale, expliqué en clair pour qui n’a jamais suivi une séance, chaque chiffre ramené au compte rendu officiel.

  • TypeScript
  • React
  • Zod
  • GitHub Actions
  • Cloudflare Pages
  • Vitest
Ouvrir en ligne (s’ouvre dans un nouvel onglet)Code source (s’ouvre dans un nouvel onglet)
En ligne1 · X · 2026
Dessin : un chiffre sur un député, relié au seul scrutin qu’il compte, sur une pile de feuilles de vote officielles où chaque ligne est un vote et chaque case un bulletinASSEMBLÉE NATIONALESCRUTINS PUBLICSUN CHIFFRE · UN DÉPUTÉPOURavec son groupe du jourSOURCE OFFICIELLEchaque page cite sa sourceCHAQUE CHIFFRErenvoie aux votes qu’il compteNI CLASSEMENT, NI NOTE
Dessiné pour ce registre, pas une capture
Inscrit
2026-10-01En ligne
Premier commit
2026-10-01Project docs and build plan
Commits
28sur main, lus le 2026-10-02
Couverture
28 %lignes exécutées par les tests de l’ingestion, du site et du protocole, lues le 2026-10-02
Paquets maison
11 sur 11installés depuis npm

Ce qui est livré

  1. Chaque scrutin public de chaque député, avec le groupe où il siégeait le jour du vote. Ni classement ni note : chaque chiffre renvoie aux votes qu’il compte, et chaque page cite sa source officielle.
  2. Ni serveur ni base de données : chaque nuit, un job GitHub Actions demande à l’open data de l’Assemblée si quelque chose a changé, ne reconstruit que ce qui a bougé et déploie. Une nuit sans nouveau vote ne télécharge rien et ne déploie rien.
  3. L’hébergeur publie 20 000 fichiers par déploiement, et il y a plus de 8 000 scrutins : ils partent en blocs, un fichier par député, de petits index pour les listes et la recherche, et le build vérifie toute sa sortie contre un budget.
  4. Environ 750 pages prérendues par les loaders mêmes que le navigateur exécute, un faux fetch leur servant les données pendant le build, chacune avec ses propres balises head et sa place dans le sitemap.
  5. Trouver son député depuis sa commune ou son adresse, en français, en clair comme en sombre.

Comment ça marche

pas de serveur, un job de nuit demande ce qui a changé

Schéma : chaque nuit, un job GitHub Actions demande à l’open data de l’Assemblée si quelque chose a changé ; un nouveau vote ne reconstruit que ce qui a changé et déploie sur Cloudflare Pages, une nuit calme ne télécharge et ne déploie rienChaque nuitGitHub ActionsOpen datadu nouveau ?nouveau voteReconstruirejuste ce qui a changéDéployerCloudflare Pagesaucun voteNuit calmeni téléchargé ni déployé20 000 fichiers par déploiement,8 000+ votes livrés par blocs,le tout vérifié contre un budget.

Tel que le compilateur le lit

Mis en page comme dans un éditeur : une ligne ondulée est un build qui refuse, une ligne violette est ce que le compilateur déduit tout seul.

  1. source-version.ts
    Compile0 erreur
    export const isNewerVersion = ({
      cached,
      downloaded
    }: {
      cached: SourceValidators | null
      downloaded: SourceValidators
    }): boolean => {
      if (cached?.lastModified == null || downloaded.lastModified === null) {
        return true
      }
      return (
        Date.parse(downloaded.lastModified) >
        Date.parse(cached.lastModified)
      )
    }
    

Historique

Tiré du git log, abrégé, et laissé dans sa langue : 7 commits sur 28, du plus récent au plus ancien.

  1. Link scrutins to their legislative file from the files dataset
  2. Show who votes with whom on the compare page
  3. Find my deputy from a commune or an address
  4. Prerender pages with their head, sitemap and share card
  5. Nightly refresh and deploy workflow
  6. Ingest Assembly votes into datasets
  7. Project docs and build planPremier commit

Installe

11 des 11 paquets maison, depuis npm, jusqu’aux réglages du compilateur et du linter.

Votre équipe, 2026

Je cherche mon prochain poste. Écrivez-moi, ou prenez le CV : un mis en page, et un sobre pour les logiciels de recrutement.