# Application Marchand de Biens — Contexte Cursor ## Infrastructure - Backend : PocketBase dans Docker (docker/docker-compose.dev.yml) - Binaire PocketBase : /usr/local/bin/pocketbase - Données : /pb_data (flag --dir=/pb_data dans docker-compose) - OS dev : Windows Git Bash → toujours utiliser MSYS_NO_PATHCONV=1 pour docker exec - PocketBase version : v0.23+ - URL locale : http://localhost:8090 - URL prod : https://SOUS_DOMAINE.duckdns.org (NAS Synology) ## Stack technique - Frontend : React Native avec Expo SDK 51 + Expo Router - SDK PocketBase : npm package "pocketbase" - UI : NativeWind (Tailwind pour React Native) - State : Zustand + React Query (TanStack) - IA : API Anthropic Claude via PocketBase Hook (jamais côté client) - Déploiement mobile : Expo EAS ## Client PocketBase — pattern obligatoire // /services/pocketbase.ts — singleton, importer partout import PocketBase from 'pocketbase'; export const pb = new PocketBase(process.env.EXPO_PUBLIC_PB_URL); ## Collections PocketBase (toutes créées via migration) etapes_pipeline, contacts, biens, analyses_financieres, visites, taches, notes_biens, documents_biens, devis_travaux, analyses_secteur, notes_prospection, grille_prix ## Règles de code - TypeScript strict, jamais de any - Appels PocketBase UNIQUEMENT dans les hooks (/hooks/) - Jamais de nouvelle instance PocketBase, toujours importer pb - Commentaires métier en français, code en anglais - Gérer loading + erreur partout ## Vocabulaire métier - Bien : propriété immobilière prospectée ou acquise - Piste : bien en phase d'analyse - Portage : période entre achat et revente - Marge brute : prix revente - prix achat - travaux - frais notaire - Marge nette : marge brute - portage - frais agence - impôts ## Formules financières frais_notaire = prix_achat * 0.075 (ancien) ou * 0.02 (neuf) frais_portage_total = (prix_achat * taux_credit/100/12 + taxe_fonciere/12 + charges) * duree_mois travaux_total = budget_travaux * (1 + reserve_pct/100) prix_revient = prix_achat + frais_notaire + frais_agence_achat + travaux_total + frais_portage_total marge_brute = prix_revente - prix_revient marge_nette = marge_brute - (prix_revente * frais_agence_vente_pct/100) - (marge_brute * taux_impot/100) ## Structure dossiers /docker → docker-compose dev + prod /pocketbase /pb_data → données (dans .gitignore) /pb_hooks → hooks JS côté serveur (IA) /pb_migrations → migrations auto au démarrage /app → code Expo React Native /app → écrans Expo Router /components → composants UI /hooks → hooks métier /services → pocketbase.ts /types → types TypeScript /constants → constantes métier