Application cartographique open source pour explorer les données foncières françaises à partir d'une base locale PostGIS.
Le projet combine des données ouvertes administratives, DVF géolocalisées et cadastre afin de produire une carte interactive des niveaux région, département, commune, section cadastrale et parcelle.
Le projet est utilisable en local, mais il reste expérimental:
- l'application n'est pas encore dimensionnée pour une exposition publique large;
- les données doivent être téléchargées et importées localement;
- les niveaux cadastraux fins demandent une préparation locale par commune, département ou région;
- le repo n'a pas encore de fichier
LICENSE.
- Carte React/Vite basée sur MapLibre GL JS.
- API Fastify lisant PostgreSQL/PostGIS.
- Pipeline local
download -> staging -> normalize -> aggregate -> serve. - Import DVF géolocalisées avec registre d'idempotence par checksum.
- Agrégats régionaux, départementaux, communaux, sections et parcelles.
- Queue Postgres et worker dédié pour la préparation cadastrale.
- CI avec typecheck, smoke tests API/frontend et build.
frontend: Vite, React, TypeScript, MapLibre GL JS, TanStack Queryapi: Fastify, TypeScriptdatabase: PostgreSQL + PostGIS via Dockerpackage manager: pnpm
- Node.js compatible avec le repo, idéalement Node 24
- pnpm 10.24.0, déclaré dans
packageManager - Docker et Docker Compose
- une connexion internet pour télécharger les données ouvertes
- de l'espace disque disponible pour les données DVF géolocalisées
cp .env.example .env
pnpm install
pnpm doctor
pnpm data:bootstrap
pnpm devUne fois la stack lancée:
- frontend: http://localhost:5173
- API: http://localhost:4000
- healthcheck API: http://localhost:4000/health
pnpm dev lance l'API, le frontend et le worker cadastre-worker.
Le bootstrap complet:
pnpm data:bootstrapCette commande:
- démarre PostGIS;
- applique le schéma;
- importe régions, départements et communes ADMIN EXPRESS;
- télécharge
DVF géolocaliséespour les années configurées; - importe et normalise les transactions;
- recalcule les agrégats;
- vérifie l'état de la base;
- peut préchauffer une couverture cadastrale si des variables de preload sont renseignées.
Par défaut, les années DVF sont configurées dans .env.example via
DVF_GEO_YEARS.
Pour précharger le cadastre d'une zone pendant le bootstrap:
CADASTRAL_PRELOAD_COMMUNES=75115,33063 pnpm data:bootstrap
CADASTRAL_PRELOAD_DEPARTMENTS=59,62 pnpm data:bootstrap
CADASTRAL_PRELOAD_REGIONS=32 pnpm data:bootstrapImportant: pnpm data:bootstrap peut prendre du temps et télécharger des
fichiers volumineux.
pnpm data:refreshUtilise ce flux quand la base a déjà été initialisée une première fois.
Les couches sections/parcelles sont servies uniquement si les données existent localement. Pour préparer une commune:
pnpm db:sync:sections -- 75115
pnpm db:sync:parcels -- 75115Pour préchauffer plusieurs communes ou une couverture plus large:
pnpm db:prewarm:cadastre -- 75115 33063
pnpm db:plan:cadastre-coverage -- --departments=59,62 --limit=25
pnpm db:prewarm:cadastre -- --departments=59,62
pnpm db:prewarm:cadastre -- --regions=32Inspecter ou relancer la queue cadastrale:
pnpm db:cadastre-jobs
pnpm db:cadastre-jobs -- --status=failed
pnpm db:requeue:cadastre-jobsPour vérifier une contribution:
pnpm install --frozen-lockfile
pnpm lint
pnpm test
pnpm build
pnpm audit
pnpm supply-chain:checkLe projet s'appuie sur des données ouvertes:
- ADMIN EXPRESS / GeoPF pour régions, départements et communes;
- DVF géolocalisées pour les mutations foncières;
- Cadastre Etalab pour sections et parcelles.
Les données sont chargées localement dans PostGIS. Le frontend ne consomme pas directement les APIs open data.
api/ API Fastify, scripts data et worker cadastre
frontend/ interface cartographique React
infra/ PostGIS local et scripts d'initialisation SQL
scripts/ orchestration locale
docs/ documentation technique
data/ emplacements locaux ignorés pour données brutes et logs
- docs/README.md: index des documents techniques
- docs/local-runbook.md: runbook local
- docs/data-pipeline.md: pipeline de données
- docs/logging-and-supervision-policy.md: logs et supervision
- docs/performance-notes.md: notes de performance
- docs/vector-tiles-evaluation.md: évaluation vector tiles
Copie .env.example vers .env, puis ajuste si besoin:
DATABASE_URL: connexion PostgreSQL localeAPI_PORT: port API, par défaut4000WEB_PORT: port frontend, par défaut5173VITE_API_BASE_URL: URL API utilisée par le frontendDVF_GEO_YEARS: années DVF à téléchargerCADASTRAL_PRELOAD_COMMUNES: communes à préchargerCADASTRAL_PRELOAD_DEPARTMENTS: départements à préchargerCADASTRAL_PRELOAD_REGIONS: régions à précharger
- Le projet n'inclut pas encore de fichier
LICENSE. - L'API n'est pas durcie pour une exposition publique large.
- Les tests couvrent surtout des smoke tests; les tests métier et intégration avec base chargée restent à renforcer.
- Le premier bootstrap data peut être long selon le réseau et la machine.