Skip to content

Stack technique

Technologies principales

CoucheTechnologiePourquoi
RenduSkia CanvasKit WASMMême moteur que Figma — performances éprouvées, accéléré GPU, pixel-parfait
Framework UIVue 3 + VueUseAPI de composition réactive, excellent support TypeScript
ComposantsReka UIPrimitives UI headless et accessibles (tree, slider, etc.)
StylisationTailwind CSS 4Utility-first, itération rapide, thème sombre
LayoutYoga WASMMoteur CSS flexbox de Meta, éprouvé dans React Native
Format de fichierKiwi binaire + ZstdFormat propre de Figma — compact, parsing rapide, compatible .fig
CollaborationTrystero + YjsP2P WebRTC via signalisation MQTT, sync CRDT, persistance y-indexeddb
CouleurculoriConversions d'espaces colorimétriques (HSV, RGB, hex)
IA/MCPMCP SDK + Hono90+ outils pour le codage IA, transports stdio + HTTP
Transform JSXSucrase201 Ko JSX → JS, synchrone, compatible navigateur
Événementsnanoevents108 octets, émetteur typé pour les mutations du SceneGraph
Transform JSXSucrase201 Ko JSX → JS, synchrone, compatible navigateur
Événementsnanoevents108 octets, émetteur typé pour les mutations du SceneGraph
DesktopTauri v2~5 Mo app native (vs ~100 Mo d'Electron), backend Rust
BuildVite 7HMR rapide, modules ES natifs
TestPlaywright + bun:testRégression visuelle (E2E) + tests unitaires rapides
LintingoxlintBasé sur Rust, ordres de grandeur plus rapide qu'ESLint
FormatageoxfmtFormateur basé sur Rust
Vérification de typestypescript-go (tsgo)Implémentation native en Go du vérificateur de types TypeScript

Dépendances principales

json
{
  "canvaskit-wasm": "^0.40.0",
  "vue": "^3.5.29",
  "yoga-layout": "npm:@open-pencil/yoga-layout@3.3.0-grid.2",
  "nanoevents": "^9.1.0",
  "sucrase": "^3.35.1",
  "reka-ui": "^2.8.2",
  "tailwindcss": "^4.2.1",
  "culori": "^4.0.2",
  "fzstd": "^0.1.1",
  "fflate": "^0.8.2",
  "trystero": "^0.20.0",
  "yjs": "^13.6.24",
  "y-indexeddb": "^9.0.12"
}

Pourquoi pas...

Pourquoi pas le rendu SVG ?

SVG est lent pour les documents complexes. Chaque nœud est un élément DOM — 10 000 nœuds signifient 10 000 éléments DOM avec overhead de layout, peinture et composition. CanvasKit dessine tout sur une seule surface GPU.

Pourquoi pas Electron (comme Figma desktop) ?

Tauri v2 utilise le webview système (~5 Mo) au lieu d'embarquer Chromium (~100 Mo). Le backend Rust fournit des performances natives pour les E/S fichier et l'intégration système.

Pourquoi pas React ?

Le projet a migré de React vers Vue 3 très tôt. Le système de réactivité de Vue et les composables VueUse se sont avérés plus ergonomiques.

Pourquoi pas un moteur de layout personnalisé ?

Yoga est maintenu par Meta, éprouvé sur des milliards d'appareils React Native et implémente la spécification CSS flexbox.

Technologies supplémentaires

TechnologieObjectifStatut
CSS Grid dans YogaAuto layout basé sur une grilleLivré via fork Yoga (@open-pencil/yoga-layout)

Released under the MIT License.