Stack technique¶
Toutes les plateformes de l'écosystème tournent sur une seule stack. Ce n'est pas un hasard : un développeur qui passe d'un dépôt à l'autre n'a rien de nouveau à apprendre, et un correctif de sécurité se déploie sur tous les systèmes sous la même forme.
Ce en quoi Gerege Nexus diffère
Gerege Nexus tourne sur la même pile (Go · chi ·
pgx · sans ORM · Next.js App Router) mais s'en écarte sur trois points : c'est
un monolithe modulaire (les modules se compilent dans un seul binaire et se
distribuent par locataire via un app store), il migre avec goose, et il
s'appuie sur PostgreSQL seul, sans Redis. Versions : Go 1.25 · Next.js 15.
Backend¶
| Composant | Choix |
|---|---|
| Langage | Go 1.26 |
| HTTP | net/http de la bibliothèque standard + le routeur go-chi/chi |
| Base de données | PostgreSQL — jackc/pgx (pgxpool), SQL écrit à la main |
| Cache / sessions | Redis |
| Architecture | Clean Architecture — handler → usecase → repository → domain |
Pourquoi pas d'ORM ?
La couche de données est écrite en SQL à la main au-dessus de pgx. Les
raisons : utiliser directement les fonctions profondément ancrées dans
PostgreSQL — Row-Level Security (RLS), CTE, LISTEN/NOTIFY, JSONB — plutôt
qu'au travers de l'abstraction d'un ORM ; et ne plus avoir à deviner quelle
requête sera réellement générée.
La règle stricte de la Clean Architecture : pas de back-import. Le cœur
métier (domain, usecase) n'importe jamais de framework web. C'est ce qui
garantit que la couche HTTP peut être remplacée sans toucher à la logique
métier.
Frontend¶
| Composant | Choix |
|---|---|
| Framework | Next.js 15/16, App Router |
| Modèle | BFF (Backend-for-Frontend) |
| Couche de données | TanStack Query |
Ce que BFF veut dire ici : le navigateur ne s'adresse jamais directement au backend. Il ne parle qu'à des routes Next.js du même domaine, qui font office de proxy vers le backend depuis le serveur.
Résultat : le jeton n'atteint jamais le JavaScript côté client — on utilise une session par cookie, et le XSS cesse d'être un vecteur de vol de jeton. S'y ajoute une double protection CSRF : en-tête dédié et vérification d'origine.
Mobile et bureau¶
| Plateforme | Technologie |
|---|---|
| iOS | Swift, SDK SPM (GeregeSmartID) + une application par marque |
| Android | SDK Kotlin / Jetpack Compose |
| macOS | Client RP SwiftUI + kit de jeton USB |
| Windows | MSIX (signé) |
| Web RP | SDK TypeScript |
Pipeline IA¶
Bâti sur Gemini, sous forme de client REST sans SDK avec function calling :
- chat texte et chat vocal,
- STT (parole → texte) et TTS (texte → parole),
- traduction en direct,
- une base de connaissances pgvector indexée à partir du code et de la documentation,
- des réponses dans la langue de l'utilisateur ; un widget de chat sans connexion requise.
System prompt en couches : des garde-fous codés en dur dans le source, plus
un périmètre et des consignes que l'administrateur règle via la base de données.
L'assistant reste ainsi dans les limites prévues. L'outil search_knowledge
ancre les réponses dans les données réelles de la base de connaissances et
empêche les réponses inventées.
Cryptographie¶
Le code de signature a été porté depuis un original Java/Spring ; il doit donc rester parfaitement compatible au niveau du protocole. C'est verrouillé par des frozen golden vectors :
- sérialisation de point EC compressé au format SEC1,
- sémantique de
BigInteger.toByteArray()en Java (comportement de l'octet de signe).
Le serveur Go, le SDK iOS et le SDK Android doivent produire des résultats identiques octet par octet.
Ne supprimez jamais un golden vector
Les fichiers golden.json ne peuvent pas être régénérés. Ils sont la
seule preuve de compatibilité avec le système d'origine. Toute modification
du code cryptographique doit être vérifiée par ces tests.
Infrastructure¶
| Composant | Choix |
|---|---|
| Conteneurs | Docker Compose |
| CI/CD | GitHub Actions (avec des runners Windows/macOS auto-hébergés) |
| Edge | nginx — terminaison TLS, rate limit, reverse proxy |
| Certificats | Let's Encrypt (certbot, webroot) |
| Documentation | MkDocs Material + mkdocs-static-i18n, multilingue |
Voir Déploiement et CI/CD pour le détail.
Observabilité¶
- OpenTelemetry — traçage distribué,
- Prometheus — métriques (
/metrics), - Zap — journalisation structurée,
- Journal d'audit — chaîné par hachage, en ajout seul ; lisible par les seuls administrateurs, avec vérification d'intégrité possible.
Fermé en production
/metrics et /swagger sont protégés par un bearer token en
production. Ils exposent la structure interne : les laisser ouverts est un
risque de divulgation d'informations.
Tests¶
- Tests unitaires — au niveau de la logique métier,
- tests d'intégration testcontainers — avec de vrais PostgreSQL/Redis,
- tests golden vector — pour la compatibilité cryptographique.