4.3 KiB
Objectifs SaseDev Knowledge
Mission
SaseDev Knowledge fournit un workspace applicatif contrôlé permettant de publier, relier, rechercher et administrer des contenus de connaissance SaseDev tout en conservant Git comme vérité versionnée et PGR comme référentiel normatif indépendant.
Façades produit visées
Les hostnames suivants sont des intentions produit, pas des obligations de déploiement de 0.0.1 :
pgr.sasedev.com
howtos.sasedev.com
snippets.sasedev.com
Ils correspondent à trois applications Actix Web distinctes dans un même workspace :
knowledge-pgr-server
knowledge-howtos-server
knowledge-snippets-server
Cette séparation permet de faire évoluer, déployer et dimensionner chaque façade indépendamment tout en partageant les bibliothèques de domaine, Git, stockage, rendu et observabilité lorsque leur ownership est réellement commun.
Administration par façade
Chaque application doit pouvoir proposer sa propre surface d'administration protégée pour les opérations qui appartiennent à son domaine. Les URL internes et le modèle détaillé d'autorisation ne sont pas définis par la fondation.
Une future quatrième application d'administration peut centraliser des vues et opérations transversales, mais elle ne remplace pas les contrôles locaux des trois serveurs.
Sources Git de contenu
La fondation retient au minimum trois sources Git indépendantes :
pgr -> contenu normatif PGR
howtos -> contenu procédural HOWTO
snippets -> contenu court/contextualisé
Chaque application possède sa source primaire de publication. L'architecture doit néanmoins permettre plusieurs repositories par famille si le produit l'exige ultérieurement ; les trois dépôts initiaux ne constituent pas une limite codée en dur.
État applicatif partagé
Les trois applications peuvent et, dans la baseline de fondation, doivent utiliser le même stockage PostgreSQL logique pour l'état transversal de plateforme : identités, sessions, propositions, revues, synchronisation, index et relations calculées.
Ce partage ne fusionne pas les sources de vérité éditoriales : le contenu publié de chaque famille reste autoritaire dans son ou ses repositories Git.
Objectifs durables
Knowledge doit permettre à terme :
- de publier une stable PGR issue d'un tag vérifié, avec un éventuel canal
devdistinct ; - de publier des HOWTOs procéduraux sans leur attribuer une force normative PGR ;
- de publier des snippets courts et contextualisés ;
- de déployer séparément les trois façades publiques sans dupliquer la logique partagée ;
- de protéger et administrer localement chaque façade, avec une éventuelle vue d'administration transverse en complément ;
- d'administrer des dépôts publics ou privés ;
- d'accepter des propositions externes sans écriture directe dans le contenu publié ;
- de conserver une révision Git de base pour détecter les conflits ;
- d'utiliser une forge lorsqu'elle apporte des capacités supplémentaires sans la rendre obligatoire ;
- de servir les lectures publiques depuis des données locales/indexées lorsque la forge distante est indisponible ;
- de garder les contenus récupérables et intelligibles par un clone Git indépendant du site ;
- de relier PGR, HOWTOs et snippets via un état/index partagé sans leur donner la même force normative.
Non-objectifs de la fondation 0.0.1
0.0.1 ne cherche pas à livrer :
- un moteur de recherche complet ;
- une UI d'administration complète ;
- un workflow de contribution complet ;
- un support complet Gitea/GitHub/GitLab ;
- un déploiement multi-domaines de production ;
- un moteur de rendu final pour tous les formats ;
- un système d'authentification complet ;
- une architecture de microservices distribués.
Principe de simplicité
La baseline n'est plus un processus Web unique. Elle est un workspace modulaire multi-app : trois launchers Actix Web séparés et des crates communes réutilisables.
La séparation des trois façades correspond à une frontière produit explicite ; elle ne doit pas entraîner une multiplication de services internes, de bases ou de crates sans ownership réel. Toute séparation supplémentaire demande une contrainte observée.