Tableau blanc d'ingénierie pour Kerbal Space Program, pensé pour tablette + stylet. On y griffonne ses étages comme sur un carnet, et on pose à côté de vrais calculateurs : delta-V, TWR, temps de combustion, comparaison de moteurs — avec la base de données des pièces du jeu intégrée.
- Dessin au stylet avec gestion de la pression, surligneur, gomme (par trait)
- Navigation au doigt : glisser pour se déplacer, pincer pour zoomer
- Palm rejection : par défaut le doigt navigue, seul le stylet dessine (désactivable)
- Annuler / rétablir, multi-tableaux, export / import JSON
- Sauvegarde automatique en local — aucune donnée ne quitte l'appareil
- Interface adaptative : sur téléphone, la barre d'outils passe sous le pouce, les panneaux occupent l'écran, le dessin au doigt est activé d'office et les widgets insérés sont recadrés automatiquement
Posés n'importe où sur le tableau via le menu Bibliothèque :
| Widget | Ce qu'il fait |
|---|---|
| Planificateur de mission | Choisis une destination (Mun, Duna, Eeloo…) et un objectif (survol, orbite, atterrissage, retour) : l'algorithme calcule le budget Δv par phase puis conçoit la fusée — moteurs et réservoirs réels, étage par étage, contraintes de TWR respectées — avec un schéma blueprint et un export vers le plan d'étages. Gère les charges déposées : une base scientifique laissée sur Duna ou une station laissée en orbite ne pèse pas sur les étages de retour, seule la capsule remonte |
| Calcul Δv | Équation de Tsiolkovski : Δv = Isp · g₀ · ln(m₀/m𝒇) |
| TWR | Rapport poussée/poids selon le corps céleste (Kerbin, Mun, Eve…) |
| Temps de combustion | Durée et débit massique : t = m / (F / (Isp · g₀)) |
| Comparateur de propulsion | Plusieurs configurations moteurs + réservoirs côte à côte : masse, poussée, TWR, temps de combustion, Δv — le meilleur de chaque critère est surligné |
| Plan d'étages | Δv étage par étage et cumulé, TWR et durée par étage |
| Carte Δv | Budgets Δv indicatifs du système Kerbol |
Des préréglages illustrent des études de cas complètes (remplacement de boosters Pollux par des Grand-voile ou des Double-Truffe, choix du moteur d'un étage central…).
Moteurs et réservoirs de KSP 1.12.x, extension Making History comprise : poussée atmosphère/vide, Isp, masses, ergols intégrés (boosters à poudre, Twin-Boar). Les calculs tiennent compte des spécificités (un booster à poudre n'accepte pas de réservoirs externes, etc.).
Optionnel — nécessite une clé API Google AI Studio, stockée uniquement sur l'appareil :
- Chat d'ingénierie avec le contexte du tableau (l'IA voit tes widgets et leurs résultats)
- Analyse de croquis : sélectionne une zone manuscrite, l'IA lit tes notes et crée le widget de calcul correspondant, prérempli
- L'IA peut créer des widgets (comparateur complet, plan d'étages…) via un protocole d'actions JSON validé côté client
Installable sur tablette (Android / iPad / Windows), fonctionne hors ligne une fois
installée (service worker + précache). Icônes façon blueprint générées par
npm run icons. Une APK Android autonome (aucun serveur requis) est produite à
chaque release — voir plus bas.
npm install
npm run dev # serveur de développement
npm test # tests unitaires (physique + données)
npm run build # build de production dans dist/
npm run preview # sert le build localementPour un déploiement sous un sous-chemin (ex. GitHub Pages), définir BASE_PATH :
BASE_PATH=/KerbalDesk/ npm run buildLe script deploy.sh fait tout : build, service pm2 (kspboard, port 4180 en local),
reverse proxy nginx et certificat Let's Encrypt via certbot (HTTPS obligatoire pour
installer la PWA).
sudo ./deploy.sh # déploiement complet
sudo SKIP_CERTBOT=1 ./deploy.sh # sans certificat (DNS pas encore pointé)
./deploy.sh app # rebuild + reload pm2 seulement (mise à jour)Variables surchargables : DOMAIN, PORT, CERTBOT_EMAIL, APP_NAME.
Mise à jour courante : git pull && ./deploy.sh app.
L'app web est embarquée telle quelle dans une APK via Capacitor : elle fonctionne entièrement hors ligne, sans dépendre du serveur.
- Release automatique : pousser un tag
vX.Y.Zdéclenche le workflow GitHub Actions qui construit l'APK et le build web, et les attache à la release GitHub. Les appareils Android n'ont qu'à téléchargerkerbaldesk-vX.Y.Z.apk(autoriser l'installation depuis des sources inconnues). - Build local :
npm run apk(nécessite le SDK Android / Android Studio) — l'APK sort dansandroid/app/build/outputs/apk/debug/.
L'APK est signée avec une clé de debug : Android peut demander de désinstaller l'ancienne version lors d'une mise à jour si la clé a changé.
src/
lib/ physique (Tsiolkovski, TWR, débit…), encre, formatage, stockage
data/ moteurs, réservoirs, corps célestes, carte Δv, préréglages
model/ types du document (traits, widgets, vue)
store/ Zustand : tableau (undo/redo, autosave), réglages, assistant
ai/ client Gemini + construction du contexte + validation des actions
components/ canvas, barre d'outils, widgets, panneaux
Choix notables :
- Unités cohérentes : tonnes + kN + secondes → kN/(m/s) = t/s, aucun facteur de
conversion dans les formules (
src/lib/physics.ts). - Les traits sont stockés en triplets
[x, y, pression]aplatis pour un localStorage compact ; le rendu recalcule l'épaisseur selon la pression. - Les widgets vivent dans une couche HTML transformée (translate + scale) au-dessus du canvas : ils restent nets à tous les niveaux de zoom et pleinement interactifs.
- Les réponses de l'IA passent par un validateur strict (
src/ai/prompt.ts) avant de toucher au tableau : identifiants de pièces vérifiés, nombres bornés, rien d'exécuté.
- Δv = Isp · g₀ · ln(m₀ / m𝒇), g₀ = 9,80665 m/s²
- Débit massique = F / (Isp · g₀) — temps de combustion = m_ergols / débit
- TWR = F / (m · g_corps)
Le comparateur calcule le Δv et le temps de combustion avec l'Isp vide (représentatif de la majorité du vol) et affiche la poussée et le TWR en atmosphère comme dans le vide.
KerbalDesk est distribué sous licence GNU GPL v3 (voir LICENSE) : chacun est
libre d'utiliser, d'étudier, de modifier et de redistribuer le projet, à condition
que toute version dérivée reste sous la même licence, sources comprises. Personne
ne peut donc en faire une version fermée ou se l'approprier.
Copyright (C) 2026 NightFury.