wƒWebFront C++23
EN ↗GitHub ↗

C++’s missing standard GUI.

L’IHM qui
manquait
au C++.

Votre application en C++. Son interface en TypeScript, React et CSS. WebFront réunit les deux dans une bibliothèque header-only, avec les outils de développement dans la fenêtre de l’application et les ressources UI dans l’exécutable.

OPEN SOURCE · HEADER-ONLY · NATIVE + WEB

C++ LOGIC ↔ WEB INTERFACE

● ● ●life.cpp → life-project↗
app.cppFunction("life.step", &nextLife);

↳ C++ : calcul · React : affichage

↗  Header-only · C++23↗  Aucun environnement JavaScript à installer↗  Aucun environnement de développement à distribuer

EXEMPLE / JEU DE LA VIE

Une simulation C++.
Une UI React.

Le calcul reste dans une fonction C++ existante. Un composant React affiche la grille et appelle cette fonction à chaque génération. Essayez les motifs, puis consultez le code dans le livre.

●   LIFE / INTERACTIVE LABCELLULAR AUTOMATON — B3/S23
32 × 32 / TOROIDAL GRID
1024 CELLS · 128 BYTES

↳ Cette démo web calcule les générations en JavaScript. Dans l’exemple natif, React attend le résultat de la fonction C++ via le pont asynchrone.

Voir le pont JavaScript → C++
SOURCE
try {
    await webFront.ready;
    const step = webFront.cppFunction('life.step');
    const next = await step(cells);
    // Update your React state with next.
} catch (error) {
    console.error(error);
    // Stop playback and show the error in your UI.
}

UNE IHM POUR VOTRE CODE C++

Le web comme interface commune.

01

Votre code C++ existant

Une fonction enregistrée avec cppFunction devient appelable depuis TypeScript. Le pont binaire sur WebSocket transporte les arguments et les résultats de façon asynchrone. Votre logique métier reste indépendante de React et de l’interface.

02

Une UI réactive et portable

Composants React, TypeScript, CSS : utilisez les mêmes sources UI sur Windows, macOS et Linux. Affichez-les dans une fenêtre native ou dans le navigateur système. React reste facultatif.

03

Les outils sont déjà dans l’application

Le terminal wf installe les packages, compile le TSX, vérifie les types et lance les tests. wf dev met à jour la preview à chaque enregistrement. Aucun Node.js ni gestionnaire de paquets à installer séparément.

04

L’interface part avec l’exécutable

wf embed génère un en-tête C++ compressé contenant l’UI et ses dépendances web. Après recompilation, l’application fonctionne hors ligne, sans projet frontend ni environnement de développement chez l’utilisateur.

WebFront demande un compilateur C++23 et des dépendances C++ gérées par CMake. L’affichage utilise un navigateur ou un moteur web : WebView2, WKWebView, WebKitGTK, ou CEF en option. Le déploiement de ce moteur dépend de la plateforme ; aucun environnement de développement JavaScript n’est requis.

PORTABILITÉ

Du poste de travail
aux appareils connectés.

Une interface web peut être affichée ailleurs que sur la machine qui exécute le C++. C’est une voie intéressante pour les équipements embarqués : le navigateur de l’utilisateur fournit alors l’écran et le moteur de rendu.

Aujourd’hui : Windows, macOS, Linux

Les chemins pris en charge et les tests du projet concernent les plateformes desktop. Les exemples utilisent le moteur natif disponible, ou le navigateur système.

Embarqué et microcontrôleurs : une perspective

Ces cibles ne sont pas encore qualifiées. Le support C++23, les ressources mémoire et la pile réseau doivent être vérifiés pour chaque appareil. Un navigateur distant éviterait d’embarquer le moteur web, mais le transport distant et sa sécurité restent à concevoir et à valider.

DÉVELOPPEMENT

TypeScript, build et preview
dans la même fenêtre.

Lancez l’exemple LifeDeveloper, puis tapez ces commandes dans son terminal. Vous pouvez modifier les fichiers TSX et CSS avec votre éditeur habituel. Aucun runtime JavaScript ni gestionnaire de paquets n’est requis sur la machine.

Voir la session de développement ↗
WEBFRONT TERMINAL
wf create life
wf init
wf install react@19.3.1 react-dom@19.3.1
wf dev ui/main.tsx
L’exemple natif · Captures issues du dépôt

APPRENDRE

Le livre WebFront

Le tutoriel part du Jeu de la vie en console. Vous lui ajoutez une fenêtre, une interface React, des appels asynchrones et des tests, puis vous embarquez les ressources dans l’exécutable.

Si le frontend est nouveau pour vous, les sections facultatives expliquent le DOM, les composants React et la gestion de l’état. Une autre section revient sur les coroutines et la durée de vie en C++.

Lire le premier chapitre ↗
  1. 01Partir du C++↗
  2. 02Ouvrir une fenêtre↗
  3. 03Créer l’interface↗
  4. 04Appeler le C++ depuis TypeScript↗
  5. 05Tester et vérifier↗
  6. 06Embarquer et distribuer↗

PROJET OPEN SOURCE

Documentation et contributions

Les guides du dépôt décrivent les API, les moteurs natifs et les limites actuelles. Le code, les tests et les discussions de développement sont sur GitHub.