65 lines
2.8 KiB
Plaintext
65 lines
2.8 KiB
Plaintext
# 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
|