Commit 40f3fdc6 authored by Kourser's avatar Kourser
Browse files

Documentation bilingue, publiée par GitLab Pages

Un site Docusaurus en français et en anglais : à quoi sert le produit, comment
il marche, comment on l'installe, comment on l'exploite.

Douze pages par langue, écrites et non calquées
  L'anglais n'est pas une traduction mécanique. La copie française dit les
  choses crûment — « une garantie qu'on ne peut contrôler qu'aux conditions de
  celui qui la revendique ne garantit rien » — et un calque perdrait ce qui fait
  la moitié du produit. Chaque page porte le même poids dans les deux langues.

  Le plan suit l'ordre des questions qu'on se pose réellement : à quoi ça sert,
  comment ça marche, comment on le met en service, comment on vérifie.

L'adresse n'est pas écrite en dur
  Docusaurus lit CI_PAGES_URL au moment de la construction. Une adresse figée
  serait fausse chez tout auto-hébergeur qui reprend ce dépôt — et ce produit
  est fait pour être repris.

La documentation ne part pas si les garanties tombent
  Deux étapes : « verifier » puis « publier », la seconde dépendant de la
  première. Publier une documentation depuis une révision qui ne tient pas ses
  garanties reviendrait à documenter un produit qui n'existe pas. La suite
  complète tourne dans la CI — typecheck, 602 garanties, couverture des accords
  de contribution.

Ce que la documentation dit et qu'aucune plaquette ne dirait
  Qu'aucun mécanisme de sauvegarde n'est intégré. Qu'une restauration jamais
  éprouvée est une hypothèse. Qu'un journal en ajout seul ne se purge pas, et
  que c'est la contrepartie de la valeur probante. Qu'il ne faut pas installer
  Kastell dans le périmètre qu'il doit secourir. Que le délai réglementaire ne
  court pas depuis l'ouverture de l'outil.

  Ces avertissements sont la partie utile : ils évitent des mises en service
  qui échoueraient le jour J.

Les liens morts font échouer la construction — dans une documentation de crise,
un lien mort est un défaut, pas un détail.

Signed-off-by: default avatarKourser <contact@kourser.bzh>
Co-Authored-By: default avatarClaude Opus 5 <noreply@anthropic.com>
parent 7473187c
Loading
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -11,3 +11,8 @@ coverage/
# Analyse concurrentielle : document interne, délibérément hors du dépôt public.
# Il vit sur le disque et comme artefact privé, jamais dans un dépôt ouvert.
kastell-face-au-marche.html

# Documentation Docusaurus : sorties de construction.
site/build/
site/.docusaurus/
public/

.gitlab-ci.yml

0 → 100644
+73 −0
Original line number Diff line number Diff line
# ═══════════════════════════════════════════════════════════════════════════
# Intégration continue et publication de la documentation.
#
# Deux travaux, et le second ne part que si le premier passe : publier une
# documentation depuis une révision qui ne tient pas ses garanties reviendrait
# à documenter un produit qui n'existe pas.
# ═══════════════════════════════════════════════════════════════════════════

stages: [verifier, publier]

default:
  image: node:24
  before_script:
    - corepack enable
    - corepack prepare pnpm@9 --activate

variables:
  # Le magasin pnpm dans l'espace de travail : sans cela, la mise en cache
  # GitLab ne peut pas le voir.
  PNPM_HOME: "$CI_PROJECT_DIR/.pnpm-store"

cache:
  key:
    files: [pnpm-lock.yaml]
  paths: [.pnpm-store]

# ── Les garanties du produit ───────────────────────────────────────────────
verifications:
  stage: verifier
  services:
    - name: postgres:16
      alias: postgres
    - name: redis:7
      alias: redis
    - name: bitnami/minio:latest
      alias: minio
  variables:
    POSTGRES_USER: kastell
    POSTGRES_PASSWORD: verification
    POSTGRES_DB: kastell
    MINIO_ROOT_USER: kastell
    MINIO_ROOT_PASSWORD: verification-minio
    KASTELL_ENV: developpement
    KASTELL_URL_PUBLIQUE: http://localhost:8080
    DATABASE_URL: postgres://kastell:verification@postgres:5432/kastell
    REDIS_URL: redis://redis:6379
    S3_ENDPOINT: http://minio:9000
    S3_BUCKET: kastell
    S3_ACCES: kastell
    S3_SECRET: verification-minio
    S3_REGION: eu-west-1
    SECRET_SESSION: verification-verification-verification-01
  script:
    - pnpm install --frozen-lockfile
    - pnpm typecheck
    - pnpm verif
    - pnpm accords

# ── La documentation, publiée par GitLab Pages ─────────────────────────────
pages:
  stage: publier
  needs: [verifications]
  script:
    - pnpm install --frozen-lockfile --filter @kastell/site
    # CI_PAGES_URL est lu par docusaurus.config.ts : l'adresse n'est jamais
    # écrite en dur, pour qu'un auto-hébergeur qui reprend ce dépôt obtienne
    # la sienne sans rien modifier.
    - pnpm --filter @kastell/site build
    - mv site/build public
  artifacts:
    paths: [public]
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+14301 −3340

File changed.

Preview size limit exceeded, changes collapsed.

+1 −0
Original line number Diff line number Diff line
packages:
  - "apps/*"
  - "packages/*"
  - "site"

site/docs/accueil.md

0 → 100644
+48 −0
Original line number Diff line number Diff line
---
id: accueil
title: Kastell
sidebar_label: Accueil
sidebar_position: 1
slug: /
---

# Kastell

**Un cockpit de gestion de crise qui prend le relais du système d'information
quand on ne peut plus lui faire confiance.**

Il prépare la crise à froid, la conduit à chaud, et l'enregistre intégralement —
de manière à pouvoir la rembobiner.

:::note Ce que ce produit suppose
Que le jour où vous en aurez besoin, votre messagerie, votre annuaire et votre
partage de fichiers seront peut-être hors service, ou pire : disponibles mais
compromis. Tout ce qui suit découle de cette hypothèse.
:::

## Trois temps, trois usages

| Temps | Ce que fait Kastell |
|---|---|
| **Avant** — 99 % du temps | Héberge l'annuaire, les tiers activables, les fiches réflexes et le kit documentaire, **hors du SI**. Mesure la fraîcheur de tout cela et nomme ce qui manque. |
| **Pendant** — quelques jours | Chat, visioconférence, documents, tableau blanc, main courante, décisions, actions, points de situation, mobilisation, continuité, échéances réglementaires. |
| **Après** — des années | Le journal ne se modifie pas. On rejoue la crise à n'importe quel instant, et un tiers peut vérifier le registre sans exécuter notre code. |

## Ce qui le distingue

- **Un journal en ajout seul, chaîné par empreintes.** La contrainte est portée
  par la base de données : modification et suppression sont refusées, y compris
  au propriétaire de la base.
- **Un vérificateur indépendant**, sans dépendance, sous CC0. Une garantie
  qu'on ne peut contrôler qu'aux conditions de celui qui la revendique ne
  garantit rien.
- **Auto-hébergeable, sous AGPL-3.0.** Un Dockerfile, une composition, aucune
  bride. Le même artefact sert le service hébergé et l'installation chez vous.
- **Aucune connexion à l'annuaire d'entreprise.** C'est délibéré : cet annuaire
  peut être précisément ce qui n'est plus disponible ni digne de confiance.

## Par où commencer

- [Pourquoi ce produit existe](/pourquoi) — le raisonnement, en cinq minutes.
- [Installation](/installation) — une instance qui tourne, en dix minutes.
- [Comment ça marche](/fonctionnement/boite-noire) — la boîte noire, d'abord.
Loading