This commit is contained in:
Bastien COIGNOUX
2026-05-03 20:18:33 +02:00
parent ffc2e6b895
commit bd325fe456
113 changed files with 29532 additions and 220 deletions

97
.cursorrules Normal file
View File

@ -0,0 +1,97 @@
# Contexte projet — Application Marchand de Biens
## Qui utilise cette app
Marchand de biens professionnel en France. L'app est utilisée au quotidien sur mobile (iOS/Android) et navigateur web. Elle remplace un ensemble d'outils épars (notes, tableurs, contacts téléphoniques, etc.).
## Stack technique
- **Frontend** : React Native avec Expo (SDK 51+)
- **Navigation** : Expo Router (file-based routing)
- **Base de données** : Supabase (PostgreSQL)
- **Auth** : Supabase Auth (email/password)
- **Stockage fichiers** : Supabase Storage (photos, PDFs)
- **IA** : API Anthropic Claude (claude-sonnet-4-20250514)
- **UI** : NativeWind (Tailwind pour React Native) + React Native Paper pour les composants complexes
- **State** : Zustand pour le state global, React Query (TanStack) pour le cache serveur
- **Déploiement mobile** : Expo EAS
- **Déploiement web** : Vercel
## Conventions de code
- TypeScript strict partout, jamais de `any`
- Noms de fichiers : kebab-case pour les fichiers, PascalCase pour les composants
- Toujours utiliser des hooks personnalisés pour la logique métier (ex: `useBiens`, `useContacts`)
- Les appels Supabase se font UNIQUEMENT dans les hooks, jamais dans les composants
- Les types TypeScript sont définis dans `/types/database.ts` (généré depuis Supabase)
- Les constantes métier sont dans `/constants/metier.ts`
- Toujours gérer les états de chargement et d'erreur
- Commentaires en français pour la logique métier, anglais pour le code technique
## Vocabulaire métier (utiliser ces termes précis)
- **Bien** : propriété immobilière prospectée ou acquise
- **Piste** : bien en cours d'analyse, pas encore d'offre
- **Dossier** : bien avec offre en cours ou acte signé
- **Fiche bien** : écran de détail d'un bien
- **Compromis** : avant-contrat de vente (SPC)
- **Acte** : acte authentique de vente chez notaire
- **Portage** : période entre achat et revente (coût = intérêts + taxes)
- **Marge brute** : prix revente - prix achat - travaux - frais notaire achat
- **Marge nette** : marge brute - frais de portage - frais d'agence vente - impôts
- **DPE** : Diagnostic de Performance Énergétique
- **Surface habitable** : surface loi Carrez pour appartements
- **Marchand de biens** = le user, l'utilisateur de cette app
## Modules de l'application
1. **Prospection** : pipeline Kanban des biens (piste → analyse → offre → compromis → acte → revente)
2. **Annuaire** : contacts métier (notaires, artisans, banquiers, agents immo)
3. **Fiches biens** : dossier complet par bien (photos, docs, historique)
4. **Calculateur** : analyse de rentabilité financière
5. **Visites** : compte-rendus de visites avec check-list
6. **Travaux** : suivi de chantier et devis
7. **Administratif** : documents, délais légaux, alertes
8. **Agenda** : tâches et rappels liés aux biens
9. **Dashboard** : vue globale et KPIs
## Structure des dossiers
```
/app → écrans (Expo Router)
/(tabs) → navigation principale
/prospection
/annuaire
/agenda
/dashboard
/bien/[id] → fiche bien
/visite/[id] → rapport de visite
/contact/[id] → fiche contact
/components → composants réutilisables
/ui → composants génériques (Button, Card, Input...)
/biens → composants spécifiques aux biens
/visites → composants spécifiques aux visites
/hooks → hooks personnalisés
/services → appels API (Supabase, Anthropic)
/supabase.ts → client Supabase
/ai.ts → appels Claude API
/types → types TypeScript
/constants → constantes et configuration
/utils → fonctions utilitaires
```
## Variables d'environnement nécessaires
```
EXPO_PUBLIC_SUPABASE_URL=
EXPO_PUBLIC_SUPABASE_ANON_KEY=
ANTHROPIC_API_KEY= ← côté serveur uniquement, jamais exposé côté client
```
## Règles de sécurité importantes
- La clé API Anthropic ne doit JAMAIS être dans le code client
- Créer une Supabase Edge Function pour les appels IA
- Row Level Security (RLS) activé sur toutes les tables Supabase
- Les photos et docs sont dans des buckets Supabase privés
## Calculs financiers — formules exactes
```
frais_notaire_achat = prix_achat * 0.075 (ancien) ou * 0.02 (neuf)
prix_revient = prix_achat + frais_notaire_achat + travaux + frais_portage
marge_brute = prix_revente_cible - prix_revient
frais_portage_mensuel = (prix_achat * taux_credit / 12) + taxe_fonciere_mensuelle
taux_marge_brute = marge_brute / prix_revente_cible * 100
```