SPB Git forge

spb/groupe-ka

Public

Groupe KA — site du holding + KA ID (compte unique & SSO des 7 plateformes). Next.js 16, SQLite, Google & Apple login.

81commits 1branches 0releases
89.2 MBsize
maindefault branch
22 days agolast push
TypeScript 70.4% HTML 18.4% JavaScript 4% Python 3.8% CSS 3.4%

docs: README v2 — galerie multi-pages, style du site, documentation, contact

Simon-Pierre Boucher committed 1 mo ago (Aug 24, 2026) parent f7dedd9

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 −[![Site](https://img.shields.io/website?url=https%3A%2F%2Fwww.groupe-ka.com&style=flat-square&label=www.groupe-ka.com)](https://www.groupe-ka.com)
8 −![Nœud](https://img.shields.io/badge/n%C5%93ud-M3U96b-1f6feb?style=flat-square)
9 −![Port](https://img.shields.io/badge/port-8110-141814?style=flat-square)
10 −![PM2](https://img.shields.io/badge/process-PM2-2b037a?style=flat-square)
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 −![Next.js](https://img.shields.io/badge/Next.js-16-000000?style=flat-square&logo=nextdotjs&logoColor=white)
13 −![React](https://img.shields.io/badge/React-19-087EA4?style=flat-square&logo=react&logoColor=white)
14 −![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?style=flat-square&logo=typescript&logoColor=white)
15 −![SQLite](https://img.shields.io/badge/SQLite-WAL-003B57?style=flat-square&logo=sqlite&logoColor=white)
16 −![Groupe KA](https://img.shields.io/badge/Groupe-KA-b7f000?style=flat-square)
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