IngénierieUn seul dépôt pour tout ce que nous construisons.

Tous les produits, sites web, bibliothèques et outils NoirSystems vivent dans un seul monorepo : un seul clone, une seule chaîne d’outils, une seule CI. Cette page présente ce dépôt, chiffres à l’appui.

Le dépôt
en chiffres

Décompte sur la branche main. Les lignes sont les lignes non vides de code source, sans les fichiers de verrouillage, les artefacts de build ni le code tiers embarqué.

0

projets

0

langages de programmation

0

commits

0

fichiers suivis

0+

lignes de code

Trente projets,
cinq répertoires

Chaque répertoire a un sens précis, et un projet vit dans celui qui dit ce qu’il est.

 

  • flokzy

    products/flokzy

    • TypeScript
    • Kotlin
  • sunflow

    products/sunflow

    • Go
    • TypeScript
  • crypto-ide

    products/crypto-ide

    • TypeScript
  • lavender

    products/lavender

    • Rust
    • TypeScript
  • kvbnews

    products/kvbnews

    • Go
    • TypeScript
    • Python
  • drukko

    products/drukko

    • TypeScript
  • noir-app

    products/noir-app

    • TypeScript
  • noirwallet

    products/noirwallet

    • TypeScript
  • pikajuoksu

    products/pikajuoksu

    • TypeScript
  • pikajuoksu-server

    products/pikajuoksu-server

    • TypeScript
  • levonne

    products/levonne

    • Go
    • Dart
  • foldtools

    products/foldtools

    • Kotlin
    • Swift
  • noir-bots

    products/noir-bots

    • Python
  • flokzyweb

    products/flokzyweb

    • TypeScript
  • etat

    products/etat

    • Java
    • Python
  • bookdiscord

    products/bookdiscord

    • JavaScript
  • noirsystems-site

    web/noirsystems-site

    • TypeScript
  • noir-bzh

    web/noir-bzh

    • TypeScript
  • redstone-site

    web/redstone-site

    • TypeScript
  • xandra-css

    libs/xandra-css

    • CSS
    • JavaScript
  • pikajuoksu-core

    libs/pikajuoksu-core

    • TypeScript
  • gitcom

    tools/gitcom

    • Python
  • gity

    tools/gity

    • JavaScript
  • migration

    tools/migration

    • Shell
    • Python
  • gopolars

    research/gopolars

    • Go
  • +5

    projets internes, non listés ici

En quoi
c’est écrit

Lignes de code par langage, sur l’ensemble du dépôt.

Lignes de code par langage, sur l’ensemble du dépôt.
LangageLignes de code
TypeScript
372 597
Kotlin
75 395
Go
65 277
Python
44 834
Rust
44 535
Java
24 050
JavaScript
23 939
CSS
21 831
Shell
11 234
Autres
17 952, C++, SQL, Dart, Swift

Le graphen’a aucune arête

Nx voit trente projets et aucune dépendance entre eux. C’est l’état mesuré, et nous le gardons ainsi : aucun produit n’importe le code d’un autre produit.

Laisser le graphe déconnecté. Ne pas fabriquer d’arêtes pour qu’il ait l’air d’un monorepo.

ADR-0002, acceptée le 20 septembre 2026

Le seul vrai lien est un protocole

Sunflow dialogue avec Flokzy en HTTP, via un protocole versionné, une fixture de test et une file d’envoi. Deux programmes qui communiquent par le réseau, ce n’est pas un import : le graphe a donc raison de ne pas le tracer.

Ce qu’apporte un seul dépôt

  • Un seul clone
  • Une seule installation des outils
  • Une seule CI
  • Un seul endroit où chercher

Quatre règles
qui tiennent le tout

  • Aucun produit n’en importe un autre

    Un produit peut utiliser libs/ et son propre code. Les produits communiquent entre eux par une API, un contrat d’événements ou un client généré.

  • libs/ se mérite

    Du code passe dans libs/ quand un deuxième produit, dans un autre domaine, l’utilise déjà. Il n’y a pas de fourre-tout partagé.

  • Chaque projet gère son installation

    Chaque projet garde son propre gestionnaire de paquets et son propre fichier de verrouillage. La racine installe Nx, et rien d’autre.

  • Les secrets restent dehors

    Les fichiers d’environnement, les clés et les magasins de clés sont ignorés par git, et chaque push analyse tout l’historique à la recherche de fuites.

Sept commandes
pour trente projets

Les noms de tâches sont les mêmes dans tous les projets, quel que soit l’outil en dessous : Gradle, Go, pnpm, Maven ou pytest.

Les mêmes cibles partout

  • build
  • test
  • lint
  • typecheck
  • format
  • dev
  • e2e
  • integration-test
  • package
  • deploy
  • pnpm bootstrap# chaînes d’outils, installation, hooks git, bilan de santé
  • pnpm env:check# ce qui ne va pas sur cette machine, et comment le corriger
  • pnpm projects# ce qui existe
  • pnpm graph# comment tout s’articule
  • pnpm affected# lint, typecheck, tests et build, uniquement sur ce qui a changé
  • pnpm check# frontières de dépendances et contrat de structure
  • npx nx run <project>:<target># un projet, une tâche

À chaque push,
un seul pipeline

La CI exécute les mêmes scripts que vous sur votre machine, et uniquement pour les projets touchés par le changement.

  1. Analyse des secrets

    gitleaks analyse tout l’historique, après qu’un test témoin a prouvé qu’il détecte une clé placée exprès.

    gitleaks git .
  2. Chaînes d’outils

    mise installe les versions exactes fixées dans mise.toml.

    mise install
  3. Frontières

    pnpm check introduit d’abord une dépendance interdite connue : un résultat propre prouve que les règles ont vraiment tourné.

    pnpm check
  4. Projets affectés

    Nx détermine quels projets le changement touche.

    nx show projects --affected
  5. Installation

    Seuls les projets affectés installent leurs dépendances.

    pnpm install:affected
  6. Vérification

    Lint, typecheck, tests et build, trois projets à la fois.

    pnpm affected --parallel=3

Envie de travaillerdans ce dépôt ?

Aucun poste n’est ouvert pour le moment, mais les candidatures spontanées sont lues. Dites-nous sur quel produit vous voulez travailler.