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 planifiées

TechnologieObjectifPhase
CSS Grid dans YogaAuto layout basé sur une grille✅ Livré via fork Yoga (@open-pencil/yoga-layout)

Released under the MIT License.