# Export annuaires CCDS + associations

Ce dossier contient les fichiers principaux pour réintégrer dans un autre projet :

- l'annuaire public des associations
- la carte publique des associations
- la fiche publique d'une association
- l'annuaire interne CCDS

## Fichiers inclus

### Frontend

- `client/src/components/CCDSInternalDirectory.tsx`
- `client/src/components/AssociationPublicMap.tsx`
- `client/src/pages/AssociationDirectoryPortal.tsx`
- `client/src/pages/AssociationMapPublic.tsx`
- `client/src/pages/AssociationPublicProfile.tsx`

### Shared

- `shared/associationCommunes.ts`
- `shared/associationGeo.ts`
- `shared/associationThematics.ts`

### Backend

- `server/associationDirectory.ts`
- `server/associationDirectoryMatcher.ts`
- `server/associationGeo.ts`
- `server/associationHelloAssoSync.ts`

## Routes utilisées dans le portail actuel

- `/associations`
- `/associations/carte`
- `/associations/:id`
- `/admin?tab=ccds-directory`

## Dépendances à rebrancher dans l'autre projet

### Frontend

Les pages exportées utilisent déjà ces dépendances du portail actuel :

- `wouter`
- `sonner`
- `lucide-react`
- composants UI locaux (`Button`, `Card`, `Badge`, `Input`, `Select`, `Accordion`, etc.)
- `trpc` côté client via `@/lib/trpc`
- `useAuth` via `@/_core/hooks/useAuth`

### Backend / API

L'annuaire des associations dépend des procédures `associationDirectory` dans `server/routers.ts`.

Les pages publiques consomment surtout :

- `associationDirectory.listPortal`
- `associationDirectory.listMap`
- `associationDirectory.getMapEntry`

L'admin / bordereau consomme aussi :

- `associationDirectory.getSummary`
- `associationDirectory.listLatest`
- `associationDirectory.getById`
- `associationDirectory.listReviewQueue`
- `associationDirectory.createManual`
- `associationDirectory.updateManual`
- `associationDirectory.setManualCoordinates`
- `associationDirectory.syncExternalData`
- `associationDirectory.syncExternalDataBatch`
- `associationDirectory.syncReferenceData`
- `associationDirectory.syncHelloAssoById`
- `associationDirectory.syncHelloAssoBatch`
- `associationDirectory.resolveReviewLink`
- `associationDirectory.ignoreReview`
- `associationDirectory.previewImport`
- `associationDirectory.importWorkbook`

## Important

Le fichier `server/routers.ts` n'est pas recopié ici car il est très large dans ce projet.
Dans ton autre projet, il faudra soit :

1. recopier la section `associationDirectory: router({...})` depuis `server/routers.ts`
2. soit reconnecter ces composants/pages à ton propre backend

## Fichier archive prêt à copier

Une archive a aussi été générée ici :

- `/Users/selecta/Documents/portail-associations/exports/annuaires-integration-20260605.tar.gz`

## Conseil pratique

Si tu veux une intégration rapide dans un autre projet React :

1. copie d'abord les fichiers `client/src/...`
2. copie ensuite les fichiers `shared/...`
3. rebranche les appels API
4. termine par les services backend `server/...`

Si tu veux, je peux faire la suite utile :

- te préparer un **pack encore plus propre et autonome**
- ou te faire une **version “drop-in”** pour un autre projet React / Vite / Wouter.
