Carte interactive pour visualiser les événements de La Grande Semaine Végétale à travers la France.
Projet : Promotion d'une alimentation végétale accessible | Stack : React + NestJS + MapLibre GL JS | Monorepo : pnpm + TurboRepo
make-map/
├── AGENTS.md # Consignes pour assistants IA (Cursor, etc.)
├── CLAUDE.md # Architecture détaillée pour agents
├── apps/
│ ├── frontend/ # React + Vite (consomme l'API backend)
│ ├── backend/ # NestJS (proxy Baserow + géocodage)
│ └── map-interactive/ # Version standalone originale (référence)
├── shared/
│ └── types/ # @make-map/types (types TypeScript partagés)
├── deploy/ # Docker Compose + Caddy (production)
├── scripts/ # Scripts de déploiement
├── resources/ # Analyses et design system de référence
├── turbo.json
└── pnpm-workspace.yaml
- Node.js 18+
- pnpm 9+
pnpm installCopier les fichiers .env.example et renseigner les valeurs :
cp apps/backend/.env.example apps/backend/.env
cp apps/frontend/.env.example apps/frontend/.env| Variable | Où | Description |
|---|---|---|
BASEROW_API_URL |
backend | URL de l'instance Baserow (ex: https://api.baserow.io) |
BASEROW_API_TOKEN |
backend | Jeton de base de données Baserow |
BASEROW_TABLE_ID |
backend | ID numérique de la table des événements |
BASEROW_PARTNERS_TABLE_ID |
backend | ID numérique de la table des partenaires |
BASEROW_MODERATION_FIELD_ID |
backend | ID numérique du champ de modération |
VITE_API_URL |
frontend | URL du backend (http://localhost:3000) |
VITE_MAPTILER_KEY |
frontend | Clé API MapTiler (obtenir ici) |
# Frontend + backend ensemble
pnpm dev
# Ou séparément
pnpm back:dev # Backend (port 3000)
pnpm front:dev # Frontend (port 5173)Proxy sécurisé NestJS pour l'API Baserow. Le token reste côté serveur.
- API :
GET /api/events·GET /api/events/:id·GET /api/health - Géocodage via api-adresse.data.gouv.fr avec cache permanent
- Cache TTL 5 min pour les données Baserow
?devMode=truepour bypasser le filtre de modération
Application React avec carte interactive MapLibre GL JS.
- Clustering (Supercluster) pour 1500+ événements
- Filtres par type, format, audience, modalité, région
- Vue carte + vue liste avec pagination
- Encarts DOM-TOM
- Design system calé sur la charte semaine-ia.fr (Rubik / Palanquin)
Version standalone originale avec appel direct Airtable côté client. Conservée comme référence, non modifiée (elle continue à utiliser Airtable).
pnpm map:devTypes TypeScript partagés : Event, EventType, EventFormat, TargetAudience, EventModality, GeoJSONEvent, constantes de labels, liste des régions.
Instance Scaleway DEV1-S avec Docker Compose : Caddy (HTTPS auto) + Nginx (frontend) + NestJS (backend).
pnpm deploy:v2Voir deploy/README.md pour le guide complet.
Format ouvert agents.md : un AGENTS.md par zone du monorepo (l’agent privilégie en général le fichier le plus proche du dossier de travail).
- AGENTS.md — index et règles globales
- apps/frontend/AGENTS.md — frontend React / carte
- apps/backend/AGENTS.md — API NestJS
- shared/types/AGENTS.md — package
@make-map/types - deploy/AGENTS.md — déploiement
- apps/map-interactive/AGENTS.md — référence (non modifiée)
- CLAUDE.md — architecture et conventions détaillées
POC - Astek Innovation Lab