Public products
Four web apps built from French public data and official sources.
Searches more than two million French associations and funding opportunities in official registries. It removes duplicate records, ranks the results, and links each one to its source.
- A Go API uses PostgreSQL and Meilisearch. The React Router v7 frontend uses SSR and MapLibre.
- Scheduled jobs import RNA/Waldec and other open data, reconcile duplicate records, then rebuild the search index.
Visit AssoRadar
↗
Summarizes newly published French laws and links each summary to the source text. Each entry includes estimates of impact, friction, and complexity.
- Go services handle ingestion and the API, with PostgreSQL for storage. The web app uses React 19, Vite SSR, and Express.
- Scheduled imports read DILA/Légifrance PISTE. Mistral classifies each text and writes a summary that must pass JSON validation; failed output falls back to an extractive summary.
Visit LegiFeed
↗
Practice site for France's 2026 civic exam. It has sourced questions, practical scenarios, guides, and a timed mock exam; no account is required.
- The React and Vite PWA stores progress in the browser with Zustand, so it needs neither accounts nor an application backend.
- Public pages are prerendered for search engines. Vitest and Playwright cover the app, while scheduled jobs audit questions and monitor links to official sources.
Visit Objectif Civique
↗
A daily game based on the official 2024 INSEE salary dataset. Players estimate a salary from a job profile.
- A Go API reads salary records from PostgreSQL. The React 19 and Vite PWA uses Zustand and prerenders its public pages.
- An import job cleans the 2024 INSEE dataset for use in the daily game. A scheduled sync publishes updated records.
Play Vrai Salaire
↗
How it runs
I deploy the containerized services to a small k3s cluster and manage them without a platform team.
Sources
Open data · APIs
Services
Go · PostgreSQL
Interfaces
React · Telegram
Delivery
k3s · Cloudflare
Most backends are Go services backed by PostgreSQL; their interfaces use React or Telegram. Helm and Argo CD deploy the containers to k3s. Cloudflare handles DNS, caching, and public traffic. Objectif Civique's frontend runs on Cloudflare Pages, while its audit jobs run on k3s.
- BuildGo · React · Vite
- DataPostgreSQL · Meilisearch
- OperateDocker · Helm · Argo CD · k3s
- Edge & insightCloudflare · Umami
Experience and contact
Work experience is on the CV.
Read the CV for my professional experience, or email me about a project.