Aller au contenu

kroki-playground : Un éditeur, une API et un moteur de rendu

kroki-playground est une interface Next.js pour modifier des diagrammes textuels et prévisualiser leur rendu. Sa route serveur valide le type et le format, encode la source et récupère le résultat auprès de Kroki.

Application et services API
  • Mis à jour
  • TypeScript · 98.19%
  • MIT
Langages du dépôtTypeScript 98.19%3

Parts calculées à partir des octets GitHub Linguist.

Langage%Octets
TypeScript98.19%33 686
JavaScript0.99%340
CSS0.82%282

GitHub · README · Statistiques de langages

Aperçu

Pourquoi il existe

Suite d'expérimentation de diagrammes en TypeScript déployée sur Vercel avec rendu instantané.

Cas d’usage

Prototypage rapide de diagrammes d'architecture variés.

Démarrage

Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.

Commandes déclarées dans les manifestes

package.json

dev
next dev
build
next build
start
next start
lint
eslint .
test
vitest run

Références du dépôt

Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.

Prérequis et premier essai

Requirements

README.md

  • Node.js ≥ 22 (see .nvmrc and engines in package.json). Match your Vercel project Node version to your environment.
Lire les instructions complètes ↗

Prerequisites

CONTRIBUTING.md

  • Node.js 22.x (see .nvmrc and package.json engines).
  • Optional: Dev Containers or GitHub Codespaces using .devcontainer/devcontainer.json for a consistent environment (Node 22, npm install on container create).
Lire les instructions complètes ↗
Configuration et utilisation

Environment variables

README.md

VariableWhereDescription
Lire les instructions complètes ↗

Environment variables

CONTRIBUTING.md

VariableWhereDescription
Create a .env file locally when you need non-default Kroki URLs or other local-only settings. Never commit secrets; .env is gitignored.
Lire les instructions complètes ↗
Exploitation et dépannage

Deployment (Vercel)

README.md

The repo includes vercel.json with the Next.js framework preset and npm install / npm run build so Vercel uses the same install and build as local. Import the project in Vercel, set Node.js to match .nvmrc (22.x), and add KROKI_BASE_URL / NEXT_PUBLIC_KROKI_BASE_URL in Project → Settings → Environment Variables if you use a private Kroki instance.
Lire les instructions complètes ↗
Développement et contributions

Contributing

README.md

See CONTRIBUTING.md. Report security vulnerabilities per SECURITY.md.
Lire les instructions complètes ↗

Contributing

CONTRIBUTING.md

Thank you for helping improve Kroki Playground. This document describes how to set up the project, what to run before opening a pull request, and how we use issues and linking.
Lire les instructions complètes ↗
Documentation source

2 documents lus parmi 2 candidats.

Fonctions et composants 2

Validation avant le rendu
app/api/generate-diagram/route.ts traite GET et POST avec une validation commune. encodeDiagramPayload prépare la source pour le lien Kroki. KROKI_BASE_URL choisit le service de rendu côté serveur.
Réponse et états d’échec
La route lit les octets reçus et retourne diagramUrl, diagramData en base64 et mimeType. Une erreur HTTP de Kroki devient une réponse 502 avec un code d’erreur externe, distincte d’une entrée invalide.

Architecture

Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.

Contexte système Contexte
  1. Éditeur de texte
  2. Route API Next.js
  3. Valider et encoder
  4. Service Kroki configuré
  5. Résultat base64 et aperçu

Liens vérifiés dans le dépôt.

Mermaid Diagramme interactif (chargement à l’ouverture)

Vue générale des composants et des échanges vérifiés dans le dépôt.

Vue statique de l’architecture de kroki-playground
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
flowchart LR
  n0["Éditeur de texte"]
  n1["Route API Next.js"]
  n2["Valider et encoder"]
  n3["Service Kroki configuré"]
  n4["Résultat base64 et aperçu"]
  n0 --> n1
  n1 --> n2
  n2 --> n3
  n3 --> n4
  n4 --> n0
Version texte du diagramme
  • Éditeur de texte → Route API Next.js
  • Route API Next.js → Valider et encoder
  • Valider et encoder → Service Kroki configuré
  • Service Kroki configuré → Résultat base64 et aperçu
  • Résultat base64 et aperçu → Éditeur de texte
Suivre un parcours dans le code

Suivez POST depuis req.json jusqu’à la validation et l’appel externe. La réponse contient les octets encodés de l’image, plutôt qu’un corps HTTP entièrement en SVG. Le client doit utiliser le type MIME retourné pour les afficher.

API HTTP de diagrammes

Le fichier de route définit GET et POST /api/generate-diagram. POST lit du JSON; GET lit les mêmes champs dans les paramètres de requête. Le gestionnaire valide le type et le format, compresse la source UTF-8 avec DEFLATE, l’encode pour une URL et appelle le moteur Kroki choisi.

Exemple de requête
POST /api/generate-diagram
Content-Type: application/json

{
  "selectedDiagram": "mermaid",
  "diagramSource": "flowchart LR\n  Client --> Server",
  "outputFormat": "svg"
}

Réponse et erreurs

Une réponse JSON réussie contient diagramUrl, diagramData (octets en base64) et mimeType. Décodez diagramData avec mimeType pour afficher le résultat. La réponse n’est pas un SVG brut.
HTTP 400 couvre MISSING_DIAGRAM_TYPE, INVALID_DIAGRAM_TYPE, SOURCE_TOO_LARGE et INVALID_OUTPUT_FORMAT. Une erreur HTTP de Kroki devient 502 KROKI_UPSTREAM_ERROR avec upstreamStatus; une exception devient 500 INTERNAL_ERROR. Pour une 502, inspectez le format choisi et la réponse Kroki avant de réessayer. Testez un petit graphe sur un déploiement local.
Authentification, limites et pagination

La route inspectée ne contient ni authentification, ni pagination, ni limiteur de débit. Un proxy de déploiement peut imposer ses propres règles. La source est limitée à 512 000 caractères. KROKI_BASE_URL configure les requêtes serveur; NEXT_PUBLIC_KROKI_BASE_URL configure les aperçus du navigateur. Le README mentionne /api/generateDiagram, tandis que ce fichier définit la route avec trait d’union.

Structure des fichiers

La carte montre les fichiers inspectés et leur organisation.

Référence

21 / 21 fichiers admissibles lus (38 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.

Ce que couvre l’analyse

Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.

Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.

Carte des fichiers
flowchart TD
  root["kroki-playground"]
  f0["package.json"]
  root --> f0
  f1["lib/kroki/encode.ts"]
  root --> f1
  f2["lib/kroki/validate.ts"]
  root --> f2
  f3["app/api/generate-diagram/route.ts"]
  root --> f3
  f4["README.md"]
  root --> f4
  f5["eslint.config.mjs"]
  root --> f5
  f6["next.config.ts"]
  root --> f6
  f7["postcss.config.mjs"]
  root --> f7
  f8["vitest.config.ts"]
  root --> f8
  f9["app/layout.tsx"]
  root --> f9
  f10["app/page.tsx"]
  root --> f10
  f11["components/DiagramGenerator.tsx"]
  root --> f11
  f12["app/api-docs/page.tsx"]
  root --> f12
  f13["lib/kroki/diagramLabels.test.ts"]
  root --> f13
  f14["lib/kroki/diagramLabels.ts"]
  root --> f14
  f15["lib/kroki/diagramTypes.test.ts"]
  root --> f15

Fichiers à lire 4

Références