docs: README v2 — galerie multi-pages, style du site, documentation, contact
1 changed file +121 −29
modified
README.md
+121 −29
@@ -1,8 +1,16 @@ | ||
| 1 | −# Vrai-Prix | |
| 1 | +<p align="center"> | |
| 2 | + <a href="https://www.vrai-prix.com"><img src="https://www.vrai-prix.com/og.png" width="760" alt="Vrai-Prix — La valeur réelle de chaque propriété"></a> | |
| 3 | +</p> | |
| 4 | + | |
| 5 | +<h1 align="center">Vrai-Prix</h1> | |
| 2 | 6 | |
| 3 | −**La vraie valeur de votre propriété, sans boîte noire — estimation immobilière transparente pour tout le Québec.** | |
| 7 | +<p align="center"><b>La valeur réelle de chaque propriété</b></p> | |
| 4 | 8 | |
| 5 | −[](https://www.vrai-prix.com) | |
| 9 | +<div align="center"> | |
| 10 | + | |
| 11 | +[](https://www.vrai-prix.com) | |
| 12 | +[](https://www.vrai-prix.com/doc/index.html) | |
| 13 | +[](https://www.vrai-prix.com/doc/vrai-prix-documentation.pdf) | |
| 6 | 14 |  |
| 7 | 15 |  |
| 8 | 16 |  |
@@ -12,16 +20,52 @@ | ||
| 12 | 20 |  |
| 13 | 21 |  |
| 14 | 22 | |
| 23 | +</div> | |
| 24 | + | |
| 15 | 25 | Vrai-Prix estime la valeur marchande de **n'importe quelle propriété du Québec** — unifamiliale, plex, condo, chalet, terrain — et montre *pourquoi* : chaque comparable, chaque ajustement en dollars, la pondération du modèle, la fourchette (P10–P90) et l'indice de confiance (A–D). Le différenciateur est la **transparence totale** : pas de score magique, pas de boîte noire. La méthodologie complète (normes **IAAO**) est publiée intégralement sur le site. |
| 16 | 26 | |
| 17 | 27 | Sous le capot : les **6 millésimes (2021-2026)** des rôles d'évaluation foncière géoréférencés du Québec (**MAMH**, données ouvertes) — **3 747 008 propriétés**, soit **22 150 285 observations** — fusionnés spatialement avec **745 119 transactions réelles** (99,88 % d'appariement, distance médiane 0,6 m), alimentant un **modèle hédonique LightGBM** (MdAPE 11,0 %, ratio médian 0,995 en holdout) et un **moteur de comparables ajustés**. Pour qui ? Propriétaires, acheteurs, courtiers et curieux qui veulent une estimation honnête et vérifiable, gratuite, sur les **1 097 municipalités** de la province. |
| 18 | 28 | |
| 19 | −## Captures d'écran | |
| 20 | − | |
| 21 | −<p align="center"> | |
| 22 | − <img src="docs/screenshots/vrai-prix-desktop.png" width="640" alt="Accueil — desktop"> | |
| 23 | − <img src="docs/screenshots/vrai-prix-mobile.png" width="200" alt="Accueil — mobile"> | |
| 24 | −</p> | |
| 29 | +## Visite guidée | |
| 30 | + | |
| 31 | +<table> | |
| 32 | + <tr> | |
| 33 | + <td align="center"><img src="docs/screenshots/accueil.png" width="420" alt="Accueil — desktop"><br><sub><b>Accueil — recherche d'adresse (desktop)</b></sub></td> | |
| 34 | + <td align="center"><img src="docs/screenshots/accueil-mobile.png" width="420" alt="Accueil — mobile"><br><sub><b>Accueil — mobile</b></sub></td> | |
| 35 | + </tr> | |
| 36 | + <tr> | |
| 37 | + <td align="center"><img src="docs/screenshots/fiche-estimation.png" width="420" alt="Fiche d'estimation"><br><sub><b>Fiche d'estimation — fourchette P10–P90 + indice de confiance</b></sub></td> | |
| 38 | + <td align="center"><img src="docs/screenshots/fiche-portrait.png" width="420" alt="Portrait de la propriété"><br><sub><b>Portrait de la propriété — façade SVG + historique 2021→2026</b></sub></td> | |
| 39 | + </tr> | |
| 40 | + <tr> | |
| 41 | + <td align="center"><img src="docs/screenshots/fiche-mobile.png" width="420" alt="Fiche — mobile"><br><sub><b>Fiche d'estimation — mobile</b></sub></td> | |
| 42 | + <td align="center"><img src="docs/screenshots/carte.png" width="420" alt="Vrai-Prix Maps"><br><sub><b>Vrai-Prix Maps — recherche par carte 3D (Mapbox GL)</b></sub></td> | |
| 43 | + </tr> | |
| 44 | + <tr> | |
| 45 | + <td align="center"><img src="docs/screenshots/municipalite.png" width="420" alt="Page municipalité"><br><sub><b>Page municipalité — agrégats et palmarès locaux</b></sub></td> | |
| 46 | + <td align="center"><img src="docs/screenshots/stats.png" width="420" alt="Statistiques provinciales"><br><sub><b>Statistiques provinciales — tableau de bord /stats</b></sub></td> | |
| 47 | + </tr> | |
| 48 | + <tr> | |
| 49 | + <td align="center"><img src="docs/screenshots/methodologie.png" width="420" alt="Méthodologie"><br><sub><b>Méthodologie publique — 7 sections, normes IAAO</b></sub></td> | |
| 50 | + <td align="center"><img src="docs/screenshots/ka-agent.png" width="420" alt="Ka · agent IA"><br><sub><b>Ka · agent IA — 12 outils serveur (Claude, streaming SSE)</b></sub></td> | |
| 51 | + </tr> | |
| 52 | +</table> | |
| 53 | + | |
| 54 | +### Guide pas à pas (« Utiliser le site en 5 étapes », depuis [/doc](https://www.vrai-prix.com/doc/index.html)) | |
| 55 | + | |
| 56 | +<table> | |
| 57 | + <tr> | |
| 58 | + <td align="center"><img src="public/doc/img/etape1.png" width="420" alt="Étape 1 — accueil de Vrai-Prix"><br><sub><b>Étape 1 — Arriver sur l'accueil</b></sub></td> | |
| 59 | + <td align="center"><img src="public/doc/img/etape2.png" width="420" alt="Étape 2 — recherche d'adresse avec suggestions"><br><sub><b>Étape 2 — Chercher l'adresse</b></sub></td> | |
| 60 | + </tr> | |
| 61 | + <tr> | |
| 62 | + <td align="center"><img src="public/doc/img/etape3.png" width="420" alt="Étape 3 — fiche d'estimation avec fourchette et indice de confiance"><br><sub><b>Étape 3 — Lire la fiche d'estimation</b></sub></td> | |
| 63 | + <td align="center"><img src="public/doc/img/etape4.png" width="420" alt="Étape 4 — recherche par carte 3D"><br><sub><b>Étape 4 — Explorer par la carte</b></sub></td> | |
| 64 | + </tr> | |
| 65 | + <tr> | |
| 66 | + <td align="center" colspan="2"><img src="public/doc/img/etape5.png" width="420" alt="Étape 5 — tableau de bord statistiques"><br><sub><b>Étape 5 — Aller plus loin : statistiques, parc, agent Ka</b></sub></td> | |
| 67 | + </tr> | |
| 68 | +</table> | |
| 25 | 69 | |
| 26 | 70 | ## Fonctionnalités |
| 27 | 71 | |
@@ -52,13 +96,35 @@ Application Next.js 16 (App Router) — SQLite better-sqlite3 (units + FTS5 | ||
| 52 | 96 | · SSO KA ID · SEO programmatique |
| 53 | 97 | ``` |
| 54 | 98 | |
| 55 | −- **Frontend / API** : Next.js 16, TypeScript strict, Tailwind CSS 4 — tout est servi par une seule app (pages SSR + routes `/api/*` : `search`, `estimate`, `nearby`, `ka`, `portfolio`, `report*`, `stats`, `auth`). | |
| 99 | +- **Frontend / API** : Next.js 16, TypeScript strict, Tailwind CSS 4 — tout est servi par une seule app (pages SSR + routes `/api/*`). | |
| 56 | 100 | - **Base de données** : SQLite (`data/vraiprix.db`, ~1,5 Go, non versionnée) — 3,75 M unités, FTS5, index spatiaux, mode WAL. |
| 57 | 101 | - **Modèle** : pipeline externe LightGBM / scikit-learn (réentraînement : `scripts/hedonic-retrain.py`), estimations pré-calculées injectées dans la base. |
| 58 | 102 | - **Tests** : Vitest (moteur d'estimation) + Playwright (captures : `scripts/screenshots.mjs`). |
| 59 | −- **Processus PM2** : | |
| 60 | − - **`vrai-prix`** — l'app Next.js (`next start -H 0.0.0.0 -p 8090`) ; | |
| 61 | − - **`vrai-prix-ngrok`** — tunnel ngrok vers www.vrai-prix.com. | |
| 103 | + | |
| 104 | +## API — endpoints principaux | |
| 105 | + | |
| 106 | +| Endpoint | Rôle | | |
| 107 | +|---|---| | |
| 108 | +| `GET /api/search` | recherche plein-texte d'adresses (FTS5, tolérante aux fautes) | | |
| 109 | +| `GET /api/estimate` | estimation hybride d'une unité (modèle + comparables, P10–P90, confiance A–D) | | |
| 110 | +| `GET /api/nearby` | unités voisines / grappes pour la carte | | |
| 111 | +| `POST /api/ka` | agent Ka (Claude, streaming SSE, 12 outils serveur) | | |
| 112 | +| `POST /api/portfolio` | évaluation de parc immobilier multi-adresses (≤ 40) | | |
| 113 | +| `GET /api/report` · `/api/report/pro` · `/api/report/portfolio` · `/api/report/stats` | rapports PDF vectoriels (standard, bancaire, parc, provincial) | | |
| 114 | +| `GET /api/stats` · `/api/stats/catalog` · `/api/stats/dashboard` · `/api/stats/report(/custom)` | statistiques provinciales + kit de rapports v3 | | |
| 115 | +| `/api/auth/ka/*` · `/api/auth/me` · `/api/auth/logout` | SSO KA ID (hub groupe-ka.com) | | |
| 116 | +| `GET /api/favorites` · `POST /api/favorites/toggle` | favoris « Mon univers Ka » | | |
| 117 | +| `POST /api/lead` | prise de contact / lead | | |
| 118 | + | |
| 119 | +## Données & sources | |
| 120 | + | |
| 121 | +| Source | Contenu | Volume | Mise à jour | | |
| 122 | +|---|---|---|---| | |
| 123 | +| **MAMH — rôles d'évaluation foncière géoréférencés** (données ouvertes) | 6 millésimes 2021-2026, caractéristiques complètes des unités | 3 747 008 propriétés · 22 150 285 observations | à chaque millésime annuel (réingestion `scripts/`) | | |
| 124 | +| **Transactions réelles** (fusion spatiale XY, EPSG:32198) | prix de vente appariés aux unités (99,88 %, distance médiane 0,6 m) | 745 119 transactions | lors du réentraînement du modèle | | |
| 125 | +| **Modèle hédonique LightGBM** | log-prix, 18 variables, quantiles P10/P90 — MdAPE 11,0 %, ratio médian 0,995 | estimations pré-calculées sur ~3,75 M unités | réentraînement `scripts/hedonic-retrain.py` (hors ligne) | | |
| 126 | + | |
| 127 | +Contrairement aux apps à connecteurs du Groupe KA, Vrai-Prix ne dépend d'aucune synchronisation horaire : la base est **pré-calculée** et versionnée par millésime — l'app sert les estimations en lecture seule. | |
| 62 | 128 | |
| 63 | 129 | ## Structure du repo |
| 64 | 130 | |
@@ -70,7 +136,7 @@ Application Next.js 16 (App Router) — SQLite better-sqlite3 (units + FTS5 | ||
| 70 | 136 | | `data/` | base SQLite `vraiprix.db` (non versionnée) | |
| 71 | 137 | | `scripts/` | réentraînement hédonique, build des stats, ingestion, captures Playwright | |
| 72 | 138 | | `docs/` | pipeline de données, notes Ka Maps, captures d'écran | |
| 73 | −| `public/` | assets statiques (favicons, OG, polices) | | |
| 139 | +| `public/` | assets statiques (favicons, OG, polices) + guide `/doc` (page, images, PDF) | | |
| 74 | 140 | | `ios/` | ressources de l'app compagnon iOS (SwiftUI) | |
| 75 | 141 | | `assets/` | matériel graphique du projet | |
| 76 | 142 | |
@@ -92,7 +158,15 @@ pm2 restart vrai-prix # après changement | ||
| 92 | 158 | git add <fichiers> && git commit -m "…" && git push origin main |
| 93 | 159 | ``` |
| 94 | 160 | |
| 95 | −Variables d'environnement clés : `VRAIPRIX_DB`, `NEXT_PUBLIC_SITE_URL`, `ANTHROPIC_API_KEY` (agent Ka), `NEXT_PUBLIC_MAPBOX_TOKEN` (carte), `KA_SSO_SECRET`/`KA_AUTH_SECRET`/`KA_HUB_URL`/`KA_BASE_URL` (SSO). | |
| 161 | +### Configuration notable (sans secrets) | |
| 162 | + | |
| 163 | +| Variable | Rôle | | |
| 164 | +|---|---| | |
| 165 | +| `VRAIPRIX_DB` | chemin de la base SQLite (`data/vraiprix.db`) | | |
| 166 | +| `NEXT_PUBLIC_SITE_URL` | URL canonique du site (SEO, sitemaps) | | |
| 167 | +| `ANTHROPIC_API_KEY` | agent Ka (Claude) | | |
| 168 | +| `NEXT_PUBLIC_MAPBOX_TOKEN` | carte 3D Vrai-Prix Maps | | |
| 169 | +| `KA_SSO_SECRET` · `KA_AUTH_SECRET` · `KA_HUB_URL` · `KA_BASE_URL` | SSO KA ID (hub groupe-ka.com) | | |
| 96 | 170 | |
| 97 | 171 | ## Déploiement |
| 98 | 172 | |
@@ -100,30 +174,48 @@ Variables d'environnement clés : `VRAIPRIX_DB`, `NEXT_PUBLIC_SITE_URL`, `ANTHRO | ||
| 100 | 174 | |---|---| |
| 101 | 175 | | **Nœud** | **M3U96a** (Mac Studio M3 Ultra, cluster MacLustr) — `~/apps/vrai-prix` | |
| 102 | 176 | | **Port** | **8090** | |
| 103 | −| **Processus PM2** | `vrai-prix` (Next.js) + `vrai-prix-ngrok` (tunnel) | | |
| 104 | 177 | | **Domaine** | [www.vrai-prix.com](https://www.vrai-prix.com) via tunnel ngrok | |
| 105 | 178 | |
| 179 | +| Processus PM2 | Rôle | | |
| 180 | +|---|---| | |
| 181 | +| `vrai-prix` | l'app Next.js (`next start -H 0.0.0.0 -p 8090`) — pages SSR + API | | |
| 182 | +| `vrai-prix-ngrok` | tunnel ngrok vers www.vrai-prix.com | | |
| 183 | + | |
| 106 | 184 | ```bash |
| 107 | 185 | # sur M3U96a, après un changement : |
| 108 | 186 | cd ~/apps/vrai-prix && npm run build && pm2 restart vrai-prix |
| 109 | 187 | pm2 logs vrai-prix --lines 30 |
| 110 | 188 | ``` |
| 111 | 189 | |
| 190 | +## Documentation | |
| 191 | + | |
| 192 | +- **Guide utilisateur en ligne** : [www.vrai-prix.com/doc/index.html](https://www.vrai-prix.com/doc/index.html) — à quoi sert le site, utilisation en 5 étapes, provenance des données, FAQ. | |
| 193 | +- **Guide PDF téléchargeable** : [vrai-prix-documentation.pdf](https://www.vrai-prix.com/doc/vrai-prix-documentation.pdf). | |
| 194 | +- **Méthodologie complète** (normes IAAO, 7 sections) : publiée sur le site. | |
| 195 | +- **Docs internes** : `docs/` (pipeline de données, notes Ka Maps, captures). | |
| 196 | + | |
| 112 | 197 | ## Écosystème Groupe KA |
| 113 | 198 | |
| 114 | −- [groupe-ka.com](https://www.groupe-ka.com) — portail | |
| 115 | −- [lou-ka.com](https://www.lou-ka.com) — logements à louer | |
| 116 | −- [immo-ka.com](https://www.immo-ka.com) — propriétés à vendre | |
| 117 | −- [vrai-prix.com](https://www.vrai-prix.com) — estimation immobilière | |
| 118 | −- [auto-ka.com](https://www.auto-ka.com) — véhicules | |
| 119 | −- [fabri-ka.com](https://www.fabri-ka.com) — produits québécois | |
| 120 | −- [food-ka.com](https://www.food-ka.com) — épicerie / alimentation | |
| 121 | −- [resto-ka.com](https://www.resto-ka.com) — restaurants | |
| 122 | −- [sorti-ka.com](https://www.sorti-ka.com) — sorties et événements | |
| 123 | −- [job-ka.com](https://www.job-ka.com) — emplois | |
| 124 | −- [crea-ka.com](https://www.crea-ka.com) — créateurs | |
| 125 | −- [trouve-ka.com](https://www.trouve-ka.com) — petites annonces | |
| 126 | −- [api-ka.com](https://www.api-ka.com) — API de données | |
| 199 | +| Site | Univers | | |
| 200 | +|---|---| | |
| 201 | +| [groupe-ka.com](https://www.groupe-ka.com) | portail | | |
| 202 | +| [lou-ka.com](https://www.lou-ka.com) | logements à louer | | |
| 203 | +| [immo-ka.com](https://www.immo-ka.com) | propriétés à vendre | | |
| 204 | +| [vrai-prix.com](https://www.vrai-prix.com) | estimation immobilière | | |
| 205 | +| [auto-ka.com](https://www.auto-ka.com) | véhicules | | |
| 206 | +| [fabri-ka.com](https://www.fabri-ka.com) | produits québécois | | |
| 207 | +| [food-ka.com](https://www.food-ka.com) | épicerie / alimentation | | |
| 208 | +| [resto-ka.com](https://www.resto-ka.com) | restaurants | | |
| 209 | +| [sorti-ka.com](https://www.sorti-ka.com) | sorties et événements | | |
| 210 | +| [job-ka.com](https://www.job-ka.com) | emplois | | |
| 211 | +| [crea-ka.com](https://www.crea-ka.com) | créateurs | | |
| 212 | +| [trouve-ka.com](https://www.trouve-ka.com) | petites annonces | | |
| 213 | +| [api-ka.com](https://www.api-ka.com) | API de données | | |
| 214 | + | |
| 215 | +## Contact | |
| 216 | + | |
| 217 | +**Simon-Pierre Boucher** — fondateur, Groupe KA | |
| 218 | +📧 [contact@spboucher.ai](mailto:contact@spboucher.ai) | |
| 127 | 219 | |
| 128 | 220 | --- |
| 129 | 221 | |
| 130 | 222 | |