Versions et dépendances DYNORS — Référence complète
Référence des dernières versions disponibles sur le GitLab Package Registry pour tous les modules DYNORS publiables. À utiliser dans tous les projets (clients, internal, extensions) pour rester aligné.
Conseil pour TAKKU et tout configurateur de projet : interroger l'API GitLab Registry en temps réel pour afficher les versions disponibles — voir § 5 Découverte dynamique des versions.
1. dynors-core — modules publiés
| Artifact | Version stable | SNAPSHOT actuel | Géré par BOM ? | Remarque |
|---|---|---|---|---|
| dynors-core-bom | 1.0.2 | 1.0.3-SNAPSHOT |
— | À importer en platform(...) |
| dynors-commons | 1.0.3 | 1.0.3-SNAPSHOT |
✅ BOM 1.0.2 | Contient SlyTransitValidator, SlyTransitFilter, InterAppCallService |
| dynors-security | 1.0.2 | 1.0.3-SNAPSHOT |
✅ BOM 1.0.2 | JWT, multi-tenant, RBAC |
| dynors-db | 1.0.2 | 1.0.3-SNAPSHOT |
✅ BOM 1.0.2 | Multi-tenant DB |
| dynors-events | 1.0.0 | 1.0.1-SNAPSHOT |
✅ BOM 1.0.2 | Event bus interne (publisher/subscriber) |
| dynors-interapp-client | 1.0.0 | 1.0.1-SNAPSHOT |
✅ BOM 1.0.2 | Client HTTP inter-app → SLY |
Source : GitLab Package Registry → dynors/dynors-core (project ID : 75907047).
2. dynors-extensions — modules publiés
| Artifact | Version stable | SNAPSHOT actuel | Remarque |
|---|---|---|---|
| dynors-extensions-bom | en cours | 1.0.0-SNAPSHOT |
BOM extensions |
| dynors-notify | 1.0.0-SNAPSHOT |
— | Notifications email/SMS (SMTP, Brevo, Resend, …) — config par app : Configuration dynors-notify |
| dynors-pdf | 1.0.0-SNAPSHOT |
— | Génération PDF (JasperReports) |
| dynors-invoicing-core | 1.0.0-SNAPSHOT |
— | Modèle facture, cycle de vie |
| dynors-invoicing-tax | 1.0.0-SNAPSHOT |
— | Calcul TVA, UEMOA |
| dynors-invoicing-numbering | 1.0.0-SNAPSHOT |
— | Numérotation séquentielle multi-tenant |
| dynors-invoicing-compliance | 1.0.0-SNAPSHOT |
— | Compliance DGI, SYSCOHADA |
| dynors-invoicing-export | 1.0.0-SNAPSHOT |
— | Export PDF, FEC, XBRL |
| dynors-billing | 1.0.0-SNAPSHOT |
— | Abonnements SaaS, plans |
| dynors-hr | 1.0.0-SNAPSHOT |
— | RH, contrats |
| dynors-payroll | 1.0.0-SNAPSHOT |
— | Paie, IPRES, CSS |
| dynors-webhooks | 1.0.0-SNAPSHOT |
— | Webhooks signés HMAC — config par app (endpoints, secrets) : Configuration dynors-webhooks |
| dynors-api-client | 1.0.0-SNAPSHOT |
— | Clients HTTP façon Stripe |
| dynors-logging | 1.0.0-SNAPSHOT |
— | Logging centralisé — config par app : Configuration dynors-logging · tutoriel Logging centralisé |
Source : GitLab Package Registry → dynors/dynors-extensions.
3. Usage recommandé dans un nouveau projet
3.1 Projet standard (backend Spring Boot)
// build.gradle.kts
repositories {
maven {
url = uri("https://gitlab.com/api/v4/projects/75907047/packages/maven")
credentials(HttpHeaderCredentials::class) {
name = "Private-Token"
value = System.getenv("GITLAB_TOKEN")
}
authentication { create<HttpHeaderAuthentication>("header") }
}
}
dependencies {
// ── BOM core — gère les versions de tous les modules core ──
implementation(platform("com.dynors:dynors-core-bom:1.0.2"))
// Modules core (pas de version : gérée par le BOM)
implementation("com.dynors:dynors-commons") // SlyTransitFilter, InterAppCallService
implementation("com.dynors:dynors-security") // JWT, RBAC, multi-tenant
implementation("com.dynors:dynors-db") // DB multi-tenant
implementation("com.dynors:dynors-events") // Event bus (optionnel)
implementation("com.dynors:dynors-interapp-client") // Appels vers autres apps via SLY
// Extensions (versions explicites — pas encore dans le BOM)
implementation("com.dynors:dynors-notify:1.0.0-SNAPSHOT")
// implementation("com.dynors:dynors-invoicing-core:1.0.0-SNAPSHOT")
// implementation("com.dynors:dynors-pdf:1.0.0-SNAPSHOT")
}
3.2 Configuration application.yml minimale (inter-app SLY)
dynors:
interapp:
source-app: mon-app # code stable de l'app (ex. supergest, mediconnect)
gateway-url: ${SLY_BASE_URL:https://sly.dynors.com}
return-base-url: ${SLY_BASE_URL:https://sly.dynors.com}/mon-app
sly-forward-secret: ${SLY_FORWARD_SECRET} # obligatoire en production
sly-signature-window-ms: 30000
Voir Routage inter-app SLY pour le détail complet.
4. Nouveautés récentes (2026-03-13)
dynors-commons — SlyTransitValidator + SlyTransitFilter
Deux nouvelles classes dans le package com.dynors.commons.interapp :
| Classe | Rôle |
|---|---|
SlyTransitValidator |
Vérifie la signature HMAC-SHA256 X-Sly-Signature + timestamp X-Sly-Timestamp sur les requêtes entrantes. Garantit que la requête a transité par SLY. |
SlyTransitFilter |
OncePerRequestFilter prêt à l'emploi. À enregistrer dans chaque backend qui reçoit des appels inter-app (FISCAL, BOOKS, TRACIUM…). |
Pourquoi ? Sans ce mécanisme, n'importe qui pouvait forger X-Source-App et appeler FISCAL directement. Avec la signature, seul SLY (qui possède SLY_FORWARD_SECRET) peut produire une requête valide.
À faire pour chaque backend appelé :
@Bean
FilterRegistrationBean<SlyTransitFilter> slyTransit(
@Value("${dynors.interapp.sly-forward-secret:}") String secret,
@Value("${dynors.interapp.sly-signature-window-ms:30000}") long windowMs) {
var filter = new SlyTransitFilter(secret, windowMs,
Set.of("/actuator/health", "/v3/api-docs", "/swagger-ui"));
var reg = new FilterRegistrationBean<>(filter);
reg.setOrder(Ordered.HIGHEST_PRECEDENCE + 10);
reg.addUrlPatterns("/api/*");
return reg;
}
dynors-events — module event bus
Module autonome pour la communication asynchrone entre apps. Voir § Events.
dynors-interapp-client — maintenant dans le CI
Le module dynors-interapp-client est désormais dans les options de publication du pipeline CI core (publish_module = interapp-client).
5. Découverte dynamique des versions (pour TAKKU et configurateurs)
TAKKU et tout outil de génération de projet doit afficher les versions disponibles en temps réel depuis le GitLab Package Registry — pas une liste en dur.
API GitLab Registry (lecture)
# Lister tous les packages maven d'un projet
curl -H "PRIVATE-TOKEN: $GITLAB_TOKEN" \
"https://gitlab.com/api/v4/projects/75907047/packages?package_type=maven&per_page=50"
# Lister les versions d'un artifact spécifique
curl -H "PRIVATE-TOKEN: $GITLAB_TOKEN" \
"https://gitlab.com/api/v4/projects/75907047/packages?package_type=maven&package_name=dynors-commons"
Réponse JSON :
[
{ "id": 12, "name": "dynors-commons", "version": "1.0.2", "package_type": "maven", "created_at": "..." },
{ "id": 13, "name": "dynors-commons", "version": "1.0.3-SNAPSHOT", "package_type": "maven", "created_at": "..." }
]
Intégration dans TAKKU
TAKKU doit appeler cette API au moment de la configuration d'un nouveau projet pour :
- Lister les modules disponibles (commons, security, db, events, interapp-client, notify, pdf…)
- Afficher les versions (stables et SNAPSHOT) pour chaque module
- Pré-sélectionner la dernière version stable (ou SNAPSHOT si aucune stable)
- Générer le
build.gradle.ktsavec les bonnes versions
// Exemple côté TAKKU — appel Registry via InterAppCallService
List<PackageVersion> versions = gitlabRegistryClient.listVersions("dynors-commons");
// → afficher dans l'UI du configurateur pour que le dev choisisse
Variables TAKKU à configurer :
dynors:
registry:
core-project-id: 75907047 # dynors/dynors-core
extensions-project-id: XXXXXXX # dynors/dynors-extensions
token: ${GITLAB_TOKEN_READ} # token lecture seule sur le registry
6. Mise à jour de cette page
Cette page doit être mise à jour à chaque nouvelle publication :
| Événement | Qui met à jour | Quoi |
|---|---|---|
| Nouvelle release core | CI core (automatique ou manuellement) | Tableau § 1, bloc § 3 |
| Nouvelle release extension | CI extensions | Tableau § 2 |
| Nouveau module ajouté | Architecte | Tableaux + § 3 usage |
| Nouvelle variable inter-app | Architecte | § 3.2 |
Dernière mise à jour : 2026-03-13. Sources : dynors/dynors-core · dynors/dynors-extensions · CONFIGURATION_ACCES_DEPENDANCES.md.