Groupe KA — le hub & le KA ID
Site vitrine du holding + compte unique (KA ID) pour les sept plateformes du groupe.
📸 Aperçu
| Accueil | Connexion (KA ID) |
|---|---|
![]() |
![]() |
✨ Fonctionnalités
- 🪪 KA ID — identifiant membre unique (
ka-+ 10 chiffres) créé au hub, source de vérité du groupe. - 🔑 Trois modes de connexion : Google OAuth 2.0, Sign in with Apple, courriel + mot de passe (scrypt natif, zéro dépendance).
- 🛰 SSO maison vers les 7 plateformes (jeton JWT signé par plateforme, 5 min).
- 👤 Profil enrichi (bio, ville, réseaux sociaux, rôle…) affiché par toutes les plateformes, avec page publique
/u/[kaId]. - ⭐ Favoris unifiés « Mon univers Ka » — magasin central, les plateformes poussent/lisent via
/api/sso/favorites. - 💳 Carte de membre avec QR code + passe Apple Wallet signée (
/api/wallet/pass). - 📱 Menu mobile 100 % CSS (case à cocher +
peer, zéro JS) et icône compte directe dans le header.
📊 Métriques
| Métrique | Valeur |
|---|---|
| Lignes TypeScript / TSX | ~5 400 |
| CSS (design system maison) | ~850 lignes |
| Routes API | 17 |
| Pages | 8 |
| Plateformes SSO servies | 7 |
| Dépendances de prod | 7 seulement |
| Base de données | SQLite (WAL), zéro serveur |
🔐 Authentification
| Mode | Détails |
|---|---|
OAuth 2.0 code flow, id_token vérifié par JWKS (jose), liaison par google_sub puis courriel |
|
| Apple | Sign in with Apple, retour form_post, client_secret = JWT ES256 signé à la volée avec la clé .p8, liaison par apple_sub |
| Courriel | scrypt natif Node (crypto.scryptSync), comparaison à temps constant |
| Sessions | JWT HS256 (jose) en témoin HttpOnly ka_session, 30 jours |
🛰 SSO — un compte, sept plateformes
/sso/authorize?client=<plateforme> émet un JWT (5 min) signé avec le secret partagé de la plateforme :
Lou·Ka · Immo·Ka · Vrai-Prix · ValoPlex · Auto·Ka · Fabri·Ka · Food·Ka
🗂 Routes
Pages : / · /connexion · /compte · /compte/carte · /u/[kaId] · /m/[kaId] · /conditions · /confidentialite
API :
| Groupe | Routes |
|---|---|
| Auth | /api/auth/{login,register,logout,me} · /api/auth/{google,apple} · /api/auth/callback/{google,apple} |
| Profil | /api/profile · /api/profile/{role,public,avatar} |
| SSO | /sso/authorize · /api/sso/{profile,favorites} |
| Divers | /api/favorites · /api/wallet/pass · /api/health |
🧱 Stack
Next.js 16 (App Router, Turbopack) · React 19 · TypeScript 5 · Tailwind CSS 4 · better-sqlite3 (WAL) · jose (JWT/JWKS) · sharp (avatars) · qrcode (carte de membre)
🚀 Déploiement
npm run dev # développement (http://localhost:3000)
npm run build # build de production
npm start # sert le buildEn production : nœud M3U96b du cluster MacLustr, PM2 (auto-restart) + tunnel ngrok → www.groupe-ka.com.
Variables d'environnement : BASE_URL, KA_AUTH_SECRET, GOOGLE_CLIENT_ID/SECRET, APPLE_CLIENT_ID/TEAM_ID/KEY_ID/PRIVATE_KEY, KA_SSO_SECRET_* (une par plateforme), KA_PASS_* (Apple Wallet), KA_DB_PATH.
👤 Auteur
Simon-Pierre Boucher — contact@spboucher.ai · © 2026 Groupe KA

