init
This commit is contained in:
97
.cursorrules
Normal file
97
.cursorrules
Normal 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
|
||||
```
|
||||
Reference in New Issue
Block a user