Skip to content

accelaire/CLAIR

Repository files navigation

CLAIR — Citoyen Libre, Analyse, Information, République

License Node TypeScript pnpm

Plateforme de transparence politique pour la jeune génération française.

CLAIR agrège, croise et présente de manière accessible les données publiques sur l'activité des parlementaires (députés et sénateurs), le lobbying et les votes au Parlement français.

Le projet est open source, apartisan et factuel : zéro opinion, uniquement des données brutes et des sources vérifiables.

Source

Le service d'ingestion agrège les données parlementaires françaises depuis plusieurs sources gouvernementales officielles. Il interroge quatre sources principales :

  • l'Assemblée Nationale via data.assemblee-nationale.fr et data.gouv.fr (députés, scrutins, dossiers, amendements)
  • le Sénat via data.senat.fr (sénateurs, scrutins, interventions)
  • la HATVP pour les données de lobbying (lobbyistes et déclarations)
  • la DILA pour les débats (comptes rendus intégraux)

En production, un CRON Railway déclenche un smart-sync complet tous les jours à 5h du matin. Un enrichissement IA utilise Mistral Small pour générer des résumés accessibles des scrutins et dossiers. Un générateur de sujets croise les données Assemblée-Sénat pour regrouper les dossiers législatifs apparentés. L'ensemble des opérations est tracé dans des tables SourceState et SyncLog pour la traçabilité et le monitoring.

Démarrage rapide

Prérequis : Node.js >= 20.0.0, pnpm >= 8.0.0, Docker & Docker Compose

pnpm install
cp apps/api/.env.example apps/api/.env

pnpm docker:up
pnpm db:generate
pnpm db:push          # initialise le schéma localement (voir note migrations ci-dessous)
pnpm dev

Migrations : pnpm db:push synchronise le schéma Prisma avec la base locale sans créer de fichier de migration — c'est la méthode recommandée pour le développement local. Les fichiers de migration présents dans le repo servent uniquement à faire évoluer la base de production. Si tu modifies le schéma Prisma et que le changement doit partir en prod, génère un fichier de migration avec pnpm db:migrate --create-only, vérifie-le, et inclus-le dans ta PR.

# Ingestion (après un premier `pnpm --filter @clair/ingestion build`)
pnpm ingestion:sync -- -p        # parlementaires (députés + sénateurs)
pnpm ingestion:sync -- -s        # scrutins
pnpm ingestion:sync -- --lo      # lobbying
pnpm ingestion:smart-sync -- -a  # tout (détection intelligente des changements)
pnpm ingestion:calculate-stats   # recalcul des stats (présence, loyauté…)

L'API REST est documentée via Swagger à http://localhost:3001/docs/static/index.html une fois le serveur lancé.

Pour contribuer ou auditer la solution, consulte notre wiki ou contacte-nous par mail.

Contact

About

CLAIR agrège, croise et présente de manière accessible les données publiques sur l'activité des parlementaires (députés et sénateurs), le lobbying et les votes au Parlement.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors