Files
mdb/GUIDE_COMPLET.md
Bastien COIGNOUX 695d4e76d0 pocket
2026-05-04 08:28:32 +02:00

194 lines
6.7 KiB
Markdown

# GUIDE COMPLET — Prompts Cursor
# App Marchand de Biens — Expo + PocketBase
---
## PROMPT 1 — Fondation (Setup + Auth + Navigation)
Lis .cursorrules et AGENTS.md.
Je crée une app React Native Expo pour marchand de biens immobiliers.
Backend : PocketBase sur http://localhost:8090 (déjà lancé, collections déjà créées).
Collections existantes dans PocketBase :
users, etapes_pipeline, contacts, biens, analyses_financieres,
visites, taches, notes_biens, documents_biens, devis_travaux
PARTIE A — Initialisation :
Dans le dossier actuel, initialise l'app Expo :
npx create-expo-app@latest app --template tabs
cd app
Installe ces dépendances dans app/ :
pocketbase
@tanstack/react-query
zustand
nativewind
tailwindcss
@react-native-async-storage/async-storage
expo-image-picker
expo-document-picker
expo-haptics
PARTIE B — Fichier .env.local à la racine de app/ :
EXPO_PUBLIC_PB_URL=http://localhost:8090
PARTIE C — Service PocketBase app/services/pocketbase.ts :
- Client singleton PocketBase
- Persistance session avec AsyncStorage
- Export : pb, getCurrentUserId(), isAuthenticated()
PARTIE D — Types TypeScript app/types/collections.ts :
Interfaces pour toutes les collections (étendent RecordModel de pocketbase) :
UserRecord, BienRecord, ContactRecord, VisiteRecord, TacheRecord,
EtapePipelineRecord, AnalyseFinanciereRecord, NoteRecord, DocumentRecord, DevisRecord
+ types BienCreate, BienUpdate (Omit + Partial)
PARTIE E — Constantes app/constants/metier.ts :
ETAPES_DEFAUT (9 étapes avec couleurs)
CATEGORIES_CONTACTS avec labels français
TYPES_BIENS avec labels français
AVIS_VISITE avec labels et couleurs
PARTIE F — Auth :
app/context/AuthContext.tsx : login, logout, user courant, redirect auto
app/app/auth/login.tsx : email + password, couleur primaire #1D4ED8
app/app/auth/register.tsx : email, password, nom, prénom
PARTIE G — Navigation :
5 onglets dans app/app/(tabs)/ :
- index.tsx → Dashboard (icône grid)
- biens.tsx → Biens (icône home)
- visites.tsx → Visites (icône clipboard)
- contacts.tsx → Contacts (icône people)
- agenda.tsx → Agenda (icône calendar)
Écrans de détail :
- app/bien/[id].tsx
- app/bien/nouveau.tsx
- app/contact/[id].tsx
- app/visite/[id].tsx
- app/calculateur/[bienId].tsx
Chaque écran de détail = placeholder avec titre pour l'instant.
FAB "+" sur les onglets Biens et Contacts.
L'app doit se lancer avec : cd app && npx expo start
L'auth doit fonctionner avec un compte créé sur PocketBase.
Mets à jour AGENTS.md quand c'est terminé.
---
## PROMPT 2 — Pipeline + Fiche Bien + Calculateur
## Lancer SEULEMENT après que le Prompt 1 tourne
Lis .cursorrules et AGENTS.md.
L'auth et la navigation fonctionnent. Je construis le cœur de l'app.
HOOK app/hooks/useEtapes.ts :
- fetchEtapes() : étapes du user triées par ordre
- initEtapesDefaut() : crée les 9 étapes si l'user n'en a pas encore
HOOK app/hooks/useBiens.ts :
- fetchBiens(filters?) : avec expand etape
- fetchBienDetail(id) : avec expand etape, visites, notes
- createBien(data), updateBien(id, data), deleteBien(id)
- moveBienToEtape(bienId, etapeId)
ONGLET BIENS app/app/(tabs)/biens.tsx :
Switch Kanban / Liste :
MODE KANBAN : ScrollView horizontal, une colonne par étape
Header colonne : nom + couleur + nombre de biens
Card bien : titre, ville, surface, prix achat formaté, badge priorité
Long press → bottom sheet : changer étape | supprimer
MODE LISTE : FlatList triable, barre de recherche
FAB "+" → /bien/nouveau
FORMULAIRE app/app/bien/nouveau.tsx :
3 étapes avec barre de progression :
1. type_bien, adresse, ville, code_postal
2. surface_habitable, nb_pieces, prix estimé, source, is_off_market
3. Résumé + Créer → PocketBase → redirect /bien/[id]
FICHE BIEN app/app/bien/[id].tsx :
Sections : Header | Infos | Finances | Visites | Notes | Documents
Auto-save notes debounce 500ms.
HOOK app/hooks/useAnalyse.ts :
- fetchAnalyse(bienId), saveAnalyse(bienId, data)
- calculateResults(data) : toutes les formules de .cursorrules
CALCULATEUR app/app/calculateur/[bienId].tsx :
Recalcul temps réel. Sections : Acquisition | Travaux | Portage | Revente
Résultats colorés : vert >15% | orange 8-15% | rouge <8%
Scénarios -10%/réaliste/+10%. Bouton Enregistrer.
Mets à jour AGENTS.md.
---
## PROMPT 3 — Contacts + Visites IA + Agenda + Dashboard
## Lancer SEULEMENT après que le Prompt 2 tourne
Lis .cursorrules et AGENTS.md.
Pipeline, fiche bien et calculateur fonctionnent.
CONTACTS app/app/(tabs)/contacts.tsx :
SectionList par catégorie, recherche live, appel direct Linking.openURL tel:
Fiche contact : coordonnées, biens associés, notes
VISITES app/app/(tabs)/visites.tsx :
Écran visite app/app/visite/[id].tsx avec 3 tabs :
Tab 1 Check-liste : 4 états par item (OK/Attention/Problème/Non vérifié)
Tab 2 Notes : zone texte + bouton photo
Tab 3 Estimation : sliders travaux, avis global, score 1-10
Bouton "Générer rapport IA" pb.send('/api/generate-rapport') affiche markdown
Hook serveur pocketbase/pb_hooks/generate_rapport.pb.js :
routerAdd("POST", "/api/generate-rapport", (c) => {
const info = $apis.requestInfo(c);
if (!info.authRecord) return c.json(401, {error: "Non autorisé"});
const { notes_brutes, checklist_reponses, bien_info } = info.data;
const response = $http.send({
url: "https://api.anthropic.com/v1/messages",
method: "POST",
headers: {
"x-api-key": $os.getenv("ANTHROPIC_API_KEY"),
"anthropic-version": "2023-06-01",
"content-type": "application/json"
},
body: JSON.stringify({
model: "claude-sonnet-4-20250514",
max_tokens: 1500,
messages: [{ role: "user", content: "Génère un compte-rendu de visite professionnel en français. Bien: " + JSON.stringify(bien_info) + " Notes: " + notes_brutes + " Checklist: " + JSON.stringify(checklist_reponses) }]
}),
timeout: 30
});
const result = JSON.parse(response.raw);
return c.json(200, { rapport: result.content[0].text });
}, $apis.requireRecordAuth());
AGENDA app/app/(tabs)/agenda.tsx :
Vue Aujourd'hui : En retard (rouge) + Aujourd'hui + Cette semaine
Card tâche : checkbox, titre, badge bien, swipe snooze/supprimer
Création : bottom sheet
DASHBOARD app/app/(tabs)/index.tsx :
Alertes urgentes | KPIs | Mini pipeline | Derniers biens | Tâches du jour
Mets à jour AGENTS.md : tous modules terminés.
---
## PROMPT DEBUG
Lis .cursorrules.
Erreur dans [MODULE] :
ERREUR : [message exact]
FICHIER : [nom]
Stack : Expo + PocketBase v0.23+. Diagnostique et corrige.
## PROMPT UI
Lis .cursorrules.
L'écran [NOM] fonctionne. Améliore l'UI pour usage pro en extérieur.
Couleurs : #1D4ED8 | #16A34A | #D97706 | #DC2626