docs: README v2 — galerie multi-pages, style du site, documentation, contact
1 changed file +91 −39
modified
README.md
+91 −39
@@ -1,30 +1,47 @@ | ||
| 1 | 1 | <!-- Auteur : Simon-Pierre Boucher — contact@spboucher.ai --> |
| 2 | 2 | |
| 3 | −# Groupe·Ka | |
| 4 | − | |
| 5 | −**Le portail corporatif de l'écosystème ·Ka : la vitrine des 13 plateformes québécoises du groupe et le compte unique (KA ID) qui les relie toutes.** | |
| 6 | − | |
| 7 | −[](https://www.groupe-ka.com) | |
| 8 | − | |
| 9 | − | |
| 10 | − | |
| 3 | +<p align="center"> | |
| 4 | + <a href="https://www.groupe-ka.com"><img src="https://www.groupe-ka.com/og.png" width="760" alt="Groupe·Ka — Le portail de l'écosystème ·Ka"></a> | |
| 5 | +</p> | |
| 6 | +<h1 align="center">Groupe·Ka</h1> | |
| 7 | +<p align="center"><b>Le portail de l'écosystème ·Ka</b></p> | |
| 11 | 8 | |
| 12 | − | |
| 13 | − | |
| 14 | − | |
| 15 | − | |
| 16 | − | |
| 9 | +<p align="center"> | |
| 10 | + <a href="https://www.groupe-ka.com"><img src="https://img.shields.io/website?url=https%3A%2F%2Fwww.groupe-ka.com&style=flat-square&label=www.groupe-ka.com&up_color=d9f26b&up_message=en%20ligne" alt="Site"></a> | |
| 11 | + <a href="https://www.groupe-ka.com/doc/"><img src="https://img.shields.io/badge/📖_documentation-%2Fdoc-d9f26b?style=flat-square" alt="Documentation"></a> | |
| 12 | + <a href="https://www.groupe-ka.com/doc/groupe-ka-documentation.pdf"><img src="https://img.shields.io/badge/guide-PDF-d9f26b?style=flat-square" alt="PDF"></a> | |
| 13 | + <img src="https://img.shields.io/badge/n%C5%93ud-M3U96b-1f6feb?style=flat-square" alt="Nœud"> | |
| 14 | + <img src="https://img.shields.io/badge/port-8110-141814?style=flat-square" alt="Port"> | |
| 15 | + <img src="https://img.shields.io/badge/process-PM2-2b037a?style=flat-square" alt="PM2"> | |
| 16 | +</p> | |
| 17 | +<p align="center"> | |
| 18 | + <img src="https://img.shields.io/badge/Next.js-16-000000?style=flat-square&logo=nextdotjs&logoColor=white" alt="Next.js"> | |
| 19 | + <img src="https://img.shields.io/badge/React-19-087EA4?style=flat-square&logo=react&logoColor=white" alt="React"> | |
| 20 | + <img src="https://img.shields.io/badge/TypeScript-5-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript"> | |
| 21 | + <img src="https://img.shields.io/badge/SQLite-WAL-003B57?style=flat-square&logo=sqlite&logoColor=white" alt="SQLite"> | |
| 22 | + <img src="https://img.shields.io/badge/Groupe-KA-d9f26b?style=flat-square" alt="Groupe KA"> | |
| 23 | +</p> | |
| 17 | 24 | |
| 18 | 25 | **Groupe·Ka** ([www.groupe-ka.com](https://www.groupe-ka.com)) est le **hub central de l'écosystème ·Ka**. Il joue trois rôles : la **vitrine du groupe** (présentation des plateformes québécoises, métriques live tirées en direct des `/api/stats` de chaque site, pages corporatives `/agents`, `/investisseurs`, `/telecharger`, `/marque`) ; le **KA ID**, l'identité centrale du groupe — un seul compte (courriel + mot de passe, Google, Apple) et un `ka_id` partagé par toutes les plateformes via un **SSO maison** ; et une **tour de contrôle publique** — pages `/status` (disponibilité des 12 sites, historique 90 jours, ticks aux 5 min) et `/stats` (tableau de bord maître consolidé). |
| 19 | 26 | |
| 20 | 27 | Pour qui ? Les visiteurs qui découvrent le groupe, les membres qui gèrent leur compte KA ID (profil, favoris « Mon univers Ka », carte de membre, jeton API personnel), et les investisseurs (dossier corporatif PDF). |
| 21 | 28 | |
| 22 | −## Captures d'écran | |
| 23 | − | |
| 24 | −<p align="center"> | |
| 25 | − <img src="docs/screenshots/groupe-ka-desktop.png" width="640" alt="Accueil — desktop"> | |
| 26 | − <img src="docs/screenshots/groupe-ka-mobile.png" width="200" alt="Accueil — mobile"> | |
| 27 | −</p> | |
| 29 | +## Visite guidée | |
| 30 | + | |
| 31 | +<table> | |
| 32 | + <tr> | |
| 33 | + <td align="center"><img src="docs/screenshots/groupe-ka-desktop.png" width="420"><br><sub><b>Accueil — la vitrine de l'écosystème (desktop)</b></sub></td> | |
| 34 | + <td align="center"><img src="docs/screenshots/groupe-ka-mobile.png" width="220"><br><sub><b>Accueil — version mobile</b></sub></td> | |
| 35 | + </tr> | |
| 36 | + <tr> | |
| 37 | + <td align="center"><img src="public/doc/img/etape1.png" width="420"><br><sub><b>Étape 1 · Découvrez l'écosystème depuis l'accueil</b></sub></td> | |
| 38 | + <td align="center"><img src="public/doc/img/etape2.png" width="420"><br><sub><b>Étape 2 · Créez votre compte KA ID sur /connexion</b></sub></td> | |
| 39 | + </tr> | |
| 40 | + <tr> | |
| 41 | + <td align="center"><img src="public/doc/img/etape3.png" width="420"><br><sub><b>Étape 3 · Vérifiez l'état des services sur /status</b></sub></td> | |
| 42 | + <td align="center"><img src="public/doc/img/etape4.png" width="420"><br><sub><b>Étape 4 · Explorez les chiffres consolidés sur /stats</b></sub></td> | |
| 43 | + </tr> | |
| 44 | +</table> | |
| 28 | 45 | |
| 29 | 46 | ## Fonctionnalités |
| 30 | 47 | |
@@ -42,6 +59,26 @@ Pour qui ? Les visiteurs qui découvrent le groupe, les membres qui gèrent leur | ||
| 42 | 59 | - **KA Agent** — bulle de chat IA du groupe (`public/ka-agent.js`) câblée sur toutes les pages. |
| 43 | 60 | - **ka-ui vendoré** (`src/ka/` + `ecosystem.json`) — design system, accents officiels et footer partagés de l'écosystème. |
| 44 | 61 | |
| 62 | +## API (routes principales) | |
| 63 | + | |
| 64 | +Toutes les routes vivent dans `src/app/api/` (App Router Next.js). | |
| 65 | + | |
| 66 | +| Route | Rôle | | |
| 67 | +|---|---| | |
| 68 | +| `POST /api/auth/register` · `POST /api/auth/login` · `POST /api/auth/logout` | comptes courriel + mot de passe (scrypt) | | |
| 69 | +| `GET /api/auth/google` · `GET /api/auth/callback/google` | connexion Google OAuth 2.0 (vérification `id_token` par JWKS) | | |
| 70 | +| `GET /api/auth/apple` · `POST /api/auth/callback/apple` | Sign in with Apple (`client_secret` ES256 signé à la volée) | | |
| 71 | +| `GET /api/auth/me` | session courante (témoin HttpOnly `ka_session`, HS256, 30 jours) | | |
| 72 | +| `GET/POST /api/profile` · `/api/profile/avatar` · `/api/profile/public` · `/api/profile/role` | profil enrichi + avatar (sharp) + page publique `/u/[kaId]` | | |
| 73 | +| `GET/POST /api/sso/favorites` · `/api/sso/profile` · `/api/sso/token-verify` | contrats SSO consommés par les 12 plateformes | | |
| 74 | +| `GET/POST /api/favorites` | favoris « Mon univers Ka » du membre connecté | | |
| 75 | +| `POST /api/account/token` | génération du jeton API personnel `kapi_` | | |
| 76 | +| `GET /api/wallet/pass` | passe Apple Wallet signée (carte de membre) | | |
| 77 | +| `GET /api/stats/report` · `/api/stats/catalog` · `POST /api/stats/report/custom` · `GET /api/stats/ecosystem-report` | rapports PDF (plateforme, catalogue, personnalisés, écosystème) | | |
| 78 | +| `GET /api/rapports/[date]/pdf` | rapport quotidien archivé | | |
| 79 | +| `GET /api/status/tick` | tick de disponibilité (alimenté aux 5 min) | | |
| 80 | +| `GET /api/health` | santé du service | | |
| 81 | + | |
| 45 | 82 | ## Architecture |
| 46 | 83 | |
| 47 | 84 | - **Next.js 16 (App Router, Turbopack) + React 19 + TypeScript 5 + Tailwind CSS 4** — pages et API dans `src/app/`. |
@@ -52,25 +89,33 @@ Pour qui ? Les visiteurs qui découvrent le groupe, les membres qui gèrent leur | ||
| 52 | 89 | |
| 53 | 90 | Processus PM2 sur le nœud : |
| 54 | 91 | |
| 55 | −| Processus | Rôle | | |
| 56 | −|---|---| | |
| 57 | −| `groupe-ka` | serveur Next.js de production sur le port **8110** | | |
| 58 | −| `groupe-ka-ngrok` | tunnel ngrok vers **www.groupe-ka.com** | | |
| 92 | +| Processus | Rôle | Cadence | | |
| 93 | +|---|---|---| | |
| 94 | +| `groupe-ka` | serveur Next.js de production sur le port **8110** | continu | | |
| 95 | +| `groupe-ka-ngrok` | tunnel ngrok vers **www.groupe-ka.com** | continu | | |
| 96 | +| `groupe-ka-status-tick` | tick de disponibilité (`scripts/status-tick.sh`) → `data/status/history.jsonl` | toutes les 5 min | | |
| 97 | +| `groupe-ka-rapport-quotidien` | génération du rapport quotidien (`scripts/rapport-quotidien.sh`) | quotidien | | |
| 59 | 98 | |
| 60 | −Un cron PM2 (`groupe-ka-status-tick`, `scripts/status-tick.sh`) alimente l'historique de disponibilité toutes les 5 minutes. | |
| 99 | +Points de configuration notables (variables d'environnement, sans secrets dans le repo) : identifiants OAuth Google et Apple, secret de session/SSO, certificats de la passe Apple Wallet. La base SQLite et l'historique de statut vivent dans `data/` (gitignoré). | |
| 61 | 100 | |
| 62 | 101 | ## Structure du repo |
| 63 | 102 | |
| 64 | 103 | ``` |
| 65 | 104 | groupe-ka/ |
| 66 | 105 | ├── src/ # app/ (App Router : pages + API), ka/ (ka-ui vendoré + ecosystem.json), lib/ (auth, sso, db, live…) |
| 67 | −├── public/ # favicon, og.png, ka-agent.js (widget IA), documents publics | |
| 106 | +├── public/ # favicon, og.png, ka-agent.js (widget IA), doc/ (guide + captures), documents publics | |
| 68 | 107 | ├── assets/ # captures d'écran historiques |
| 69 | 108 | ├── data/ # SQLite (WAL) + status/history.jsonl (90 jours) — gitignoré |
| 70 | 109 | ├── scripts/ # status-tick.sh (tick de disponibilité) + rapport-quotidien |
| 71 | 110 | └── docs/ # captures d'écran du README |
| 72 | 111 | ``` |
| 73 | 112 | |
| 113 | +## Documentation | |
| 114 | + | |
| 115 | +- **Guide en ligne** : [www.groupe-ka.com/doc/](https://www.groupe-ka.com/doc/) — à quoi sert le site, le parcours en 4 étapes (accueil → KA ID → /status → /stats), d'où viennent les données, FAQ. | |
| 116 | +- **Guide PDF** : [groupe-ka-documentation.pdf](https://www.groupe-ka.com/doc/groupe-ka-documentation.pdf) — la même documentation, téléchargeable. | |
| 117 | +- Les captures du guide sont versionnées dans `public/doc/img/` (etape1 → etape4). | |
| 118 | + | |
| 74 | 119 | ## Développement (remote-first) |
| 75 | 120 | |
| 76 | 121 | **La source de vérité est le repo git sur le nœud M3U96b** (`~/apps/groupe-ka`) — on n'édite jamais les copies laptop. Toute modification se fait sur le nœud via SSH : édition, build, redémarrage, puis commit/push depuis le nœud. |
@@ -92,24 +137,31 @@ pm2 restart groupe-ka # après un changement en production | ||
| 92 | 137 | |
| 93 | 138 | - **Nœud** : M3U96b (Mac Studio, cluster MacLustr) — répertoire `~/apps/groupe-ka` |
| 94 | 139 | - **Port** : **8110** (local, exposé uniquement via le tunnel) |
| 95 | −- **Processus PM2** : `groupe-ka` (serveur Next.js) + `groupe-ka-ngrok` (tunnel) | |
| 140 | +- **Processus PM2** : `groupe-ka` (serveur Next.js) + `groupe-ka-ngrok` (tunnel) + `groupe-ka-status-tick` (ticks 5 min) + `groupe-ka-rapport-quotidien` (rapport) | |
| 96 | 141 | - **Domaine** : **https://www.groupe-ka.com** (tunnel ngrok) |
| 97 | 142 | |
| 98 | 143 | ## Écosystème Groupe KA |
| 99 | 144 | |
| 100 | −- [groupe-ka.com](https://www.groupe-ka.com) — portail du groupe et compte unique KA ID *(ce repo)* | |
| 101 | −- [lou-ka.com](https://www.lou-ka.com) — logements à louer | |
| 102 | −- [immo-ka.com](https://www.immo-ka.com) — propriétés à vendre | |
| 103 | −- [vrai-prix.com](https://www.vrai-prix.com) — estimation immobilière | |
| 104 | −- [auto-ka.com](https://www.auto-ka.com) — véhicules | |
| 105 | −- [fabri-ka.com](https://www.fabri-ka.com) — produits québécois | |
| 106 | −- [food-ka.com](https://www.food-ka.com) — épicerie et alimentation | |
| 107 | −- [resto-ka.com](https://www.resto-ka.com) — restaurants | |
| 108 | −- [sorti-ka.com](https://www.sorti-ka.com) — sorties et événements | |
| 109 | −- [job-ka.com](https://www.job-ka.com) — emplois | |
| 110 | −- [crea-ka.com](https://www.crea-ka.com) — créateurs de contenu | |
| 111 | −- [trouve-ka.com](https://www.trouve-ka.com) — petites annonces | |
| 112 | −- [api-ka.com](https://www.api-ka.com) — API de données | |
| 145 | +| Plateforme | Vocation | | |
| 146 | +|---|---| | |
| 147 | +| [groupe-ka.com](https://www.groupe-ka.com) | portail du groupe et compte unique KA ID *(ce repo)* | | |
| 148 | +| [lou-ka.com](https://www.lou-ka.com) | logements à louer | | |
| 149 | +| [immo-ka.com](https://www.immo-ka.com) | propriétés à vendre | | |
| 150 | +| [vrai-prix.com](https://www.vrai-prix.com) | estimation immobilière | | |
| 151 | +| [auto-ka.com](https://www.auto-ka.com) | véhicules | | |
| 152 | +| [fabri-ka.com](https://www.fabri-ka.com) | produits québécois | | |
| 153 | +| [food-ka.com](https://www.food-ka.com) | épicerie et alimentation | | |
| 154 | +| [resto-ka.com](https://www.resto-ka.com) | restaurants | | |
| 155 | +| [sorti-ka.com](https://www.sorti-ka.com) | sorties et événements | | |
| 156 | +| [job-ka.com](https://www.job-ka.com) | emplois | | |
| 157 | +| [crea-ka.com](https://www.crea-ka.com) | créateurs de contenu | | |
| 158 | +| [trouve-ka.com](https://www.trouve-ka.com) | petites annonces | | |
| 159 | +| [api-ka.com](https://www.api-ka.com) | API de données | | |
| 160 | + | |
| 161 | +## Contact | |
| 162 | + | |
| 163 | +**Simon-Pierre Boucher** — fondateur, Groupe KA | |
| 164 | +📧 [contact@spboucher.ai](mailto:contact@spboucher.ai) | |
| 113 | 165 | |
| 114 | 166 | --- |
| 115 | 167 | |
| 116 | 168 | |