stnd.build · DocumentationSTANDARD MANUALSTD-STND-COR · 2026-03-15
STD-STND-COR

@stnd/core 🌿

@stnd/core 🌿

L’intĂ©gration Standard est le socle technologique de l’écosystĂšme Utopie. Elle fournit un framework cohĂ©rent pour le design, le rendu des contenus, la gestion des modules et des utilitaires serveurs.

Ce document sert de référence technique pour les développeurs et les agents IA travaillant sur le projet.


🏗 Structure de l’Architecture

Le concept repose sur une séparation stricte entre le Core (statique, testé) et les Modules/Spores (dynamiques, spécifiques au projet).

  • Standard Integration (standard.js) : L’orchestrateur. Il gĂšre l’auto-discovery des modules, injecte les routes, les styles et configure les modules virtuels.
  • Core Helpers (core/) : BibliothĂšques de fonctions pures pour l’authentification, le formatage, la journalisation et les manipulations de donnĂ©es.
  • Press Engine (@stnd/press) : Moteur de rendu Markdown haut de gamme (basĂ© sur markdown-it) avec support des runes, callouts Obsidian et typographie fine.
  • Design System (@stnd/styles) : Tokens de design mathĂ©matiques, Ă©chelles typographiques et systĂšme de couleurs OKLCH.

🔌 Systùme de Modules (Spores)

Les modules sont auto-dĂ©couverts et orchestrent Ă  la fois la logique et l’interface via un systĂšme de Hooks UnifiĂ©s.

Anatomie d’un module (index.module.js) :

export default {
  id: “nom-du-module”,

  // Hooks : Le cerveau du module
  // – .js, .ts → LOGIQUE (ex: astro hooks, app events)
  // – .astro, .svelte, .md → INTERFACE (ex: header, footer)
  hooks: {
    “astro:config:setup”: “./hooks/setup.js”, // Logique Astro
    “header:top”: “./components/Banner.astro”, // Point d’injection UI
    “app:init”: [“./init.ts”, “./Widget.astro”], // Mixte possible
  },

  routes: [{ path: “/ma-route”, entrypoint: “./routes/index.astro” }],
  styles: [“./styles.scss”],
  scripts: [“./client-side.js”],
  middleware: “./middleware.js”,
};

Modules Virtuels & Rendu :

  • virtual:standard/hooks : Pour exĂ©cuter la logique (runHook).
  • virtual:standard/components : UtilisĂ© par le composant <Hook /> pour le rendu UI.

Consommation UI :

import Hook from “@stnd/core/Hook.astro”;
<Hook id=“header:top” />

🛠 RĂ©fĂ©rence des Helpers (Core & Server)

Importables via @stnd/server/[nom_du_fichier] ou @stnd/utils/[nom_du_fichier].

Authentification (@stnd/server/auth.js)

Fonction Signature Description
signJWT signJWT(payload, secret) Signe un token JWT via Web Crypto API.
verifyJWT verifyJWT(token, secret) Vérifie et décode un JWT.
getSession getSession(request, secret) Extrait la session depuis les cookies.
createSession createSession(payload, secret) GénÚre le header Set-Cookie.

Browser & Client (@stnd/client)

Fonction Signature Description
copyToClipboard copyToClipboard(text) Copie dans le presse-papier (avec fallback).
emit emit(name, detail) Bus d’évĂ©nements global (window.dispatchEvent).
on on(name, callback) Écouteur d’évĂ©nements global.
standardGateView standardGateView(view) Ouvre une vue spécifique dans le Gate.
standardGatePrompt standardGatePrompt(text) Ouvre le Gate avec un texte pré-rempli.

Document Converter (@stnd/server/document-converter.js)

Fonction Signature Description
convertDocumentToMarkdown convertDocumentToMarkdown(file) Convertit DOCX, PDF, HTML ou RTF en Markdown.
isSupportedDocument isSupportedDocument(file) Vérifie si le fichier est convertible.

E-Ink Optimization (@stnd/client/eink.js)

Fonction Signature Description
initEInk initEInk(options) Initialise la détection et les styles E-Ink.
toggleEInkMode toggleEInkMode() Bascule manuellement le mode E-Ink.

Utils & Data (@stnd/utils/index.js & @stnd/utils/slugify.js)

Fonction Signature Description
slugify slugify(text) Slug robuste et universel.
deepMerge deepMerge(target, source) Fusion profonde d’objets.
getExcerpt getExcerpt(content, opts) Extrait un résumé (HTML/MD).
formatDate formatDate(date, format) Formatage de dates multilingue.
getReadingTime getReadingTime(text) Temps de lecture estimé.
validateEmail validateEmail(email) Validation d’email simplifiĂ©e.

Autres Helpers :

  • @stnd/server/cors.js : getCorsHeaders, handleCorsPreFlight.
  • @stnd/server/errors.js : Classes d’erreurs standardisĂ©es (StandardError, AuthError, etc.).
  • @stnd/server/filename.js : sanitizeFilename, makeUniqueFilename.
  • @stnd/log : SystĂšme de log colorĂ© (log.info, log.success, log.banner).
  • @stnd/core/src/collections.js : defineStandardCollection (Astro Content Layer helper).

🎹 Design Tokens (CSS Variables)

Le systĂšme utilise des variables CSS (—stnd-* ou variables racines :root) pour la cohĂ©rence.

📐 GĂ©omĂ©trie & Rythme (packages/styles/_standard-01-token.scss)

Variable Valeur par défaut Description
—ratio-golden 1.618 Proportion d’or pour les mises en page.
—ratio-silver 1.414 Proportion d’argent pour les Ă©chelles.
—baseline 1rlh L’unitĂ© de base du rythme vertical.
—space var(—baseline) Espacement de base.
—space-[1-12] var(—space) * n Échelle d’espacement modulaire.
—scale-[2-8] modular scale Échelle typographique exponentielle.
—line-width ~42rem Largeur de lecture optimale (mesure).
—radius —leading Rayon de bordure cohĂ©rent avec le rythme.

🎹 Couleurs (packages/styles/_standard-02-color.scss)

SystĂšme basĂ© sur OKLCH gĂ©nĂ©rant une harmonie Ă  partir de —color-accent.

Token Sémantique Description
—color-background Fond de page (papier en clair, noir retro en sombre).
—color-foreground Couleur de texte principale.
—color-accent Couleur de marque/action (gĂ©nĂšre tout le reste).
—color-surface Couleur pour les cartes/conteneurs.
—color-border Bordures subtiles.
—color-[green|red|yellow|blue] Couleurs pigmentaires dĂ©rivĂ©es de l’accent.
—color-success|error|warning États sĂ©mantiques.

🛠 Breakpoints SCSS

  • $mobile : 600px
  • $small : 768px
  • $large : 1024px
  • $wide : 1440px

💡 Notes pour l’IA

  • Module Integration: Standardized on “Module” terminology (formerly Folios/Spores).
  • Actions: Core actions are now fully decanted into their respective modules and aggregated via virtual:standard/actions.
  • ModĂšle de DonnĂ©es : La logique mĂ©tier doit ĂȘtre dans les modĂšles (model/) ou les helpers core/. Les composants Astro sont rĂ©servĂ©s Ă  l’affichage.
  • Typographie : Respectez le rythme vertical en utilisant var(—space-*) pour les marges et var(—scale-*) pour les tailles de police.
Standard OS — stnd.buildSTD-STND-COR · rev. 2026-03-15