Fichiers .modpack
Un projet MODPACK = un fichier .modpack : du JSON UTF-8,
indenté, à l'ordre de champs stable — lisible à l'œil et diffable dans
Git, l'esprit draw.io. C'est la seule source de vérité.
Nouveau, Ouvrir, Enregistrer
- Nouveau crée un projet réellement vierge : l'échelle par défaut, aucun sprint, aucun backlog.
- Ouvrir charge un fichier via le sélecteur du navigateur. Un fichier invalide (encodage, version, champ manquant) est refusé avec un message précis, sans jamais écraser votre projet en cours.
- Enregistrer télécharge
<nom-du-projet>.modpack. Une sauvegarde annulée n'en est pas une : l'indicateur « modifié » reste.
Jamais de perte silencieuse
- Toute modification non sauvegardée s'annonce : indicateur « ● modifié » dans la barre, bouton « Enregistrer » accentué.
- Les sorties internes (« Nouveau », « Ouvrir », projet d'exemple) ouvrent une modale à trois choix : Enregistrer et continuer, Continuer sans sauvegarder, Annuler (choix sûr par défaut).
- Fermer l'onglet, rafraîchir ou naviguer ailleurs déclenche l'avertissement natif du navigateur tant que des modifications ne sont pas sauvegardées.
Le schéma
Le format est volontairement simple — le voici en entier, commentaires compris. Un champ inconnu est ignoré ; un champ invalide est refusé à l'ouverture avec un message précis, sans toucher au projet en cours. Les champs marqués « optionnel » peuvent être omis.
{
"version": 1,
"name": "Mon projet",
"accentColor": "#3F51B5", // optionnel : teinte du projet
"mode": "free", // optionnel : "free" | "tetris"
"tetrisEnabled": false, // optionnel : proposer le mode Tétris
"defaults": { // optionnel : défauts des nouveaux sprints
"sprintName": "Sprint",
"sprintCapacity": 45
},
"unitScale": {
"name": "T-shirt", // libellé de l'échelle
"unitLabel": "pts", // libellé de l'unité affichée
"sizes": [ // ordonnée par valeur croissante
{ "label": "XS", "value": 5 },
{ "label": "S", "value": 10 },
{ "label": "M", "value": 20 },
{ "label": "L", "value": 40 },
{ "label": "XL", "value": 80 }
]
},
"tasks": [
{
"id": "t-001",
"title": "Composant carto : configuration du workspace",
"scope": "Cartographie", // périmètre fonctionnel (optionnel)
"description": "Fond de plan IGN + couches métier.", // optionnel
"value": 10, // chiffrage en points = nombre de cellules
"color": "#90CAF9", // optionnel : couleur du bloc
"dependsOn": ["t-000"], // optionnel : tâches préalables
"position": { "x": 720, "y": 96 }, // optionnel : bloc posé sur le plan
"width": 5 // optionnel : silhouette choisie sur le plan
}
],
"sprints": [
{
"id": "s-001",
"name": "Sprint 1",
"capacity": 45, // points = cellules de la grille
"position": { "x": 96, "y": 48 }, // optionnel : position sur le plan
"dependsOn": ["s-000"], // optionnel : sprints préalables
"placements": [
// anchor : cellule d'ancrage ; width : largeur choisie au
// redimensionnement — tous deux omis si automatiques.
{ "taskId": "t-001", "anchor": 5, "width": 5 }
]
}
]
}
L'échelle ci-dessus est celle d'un nouveau projet (t-shirt, XS=5 … XL=80, sprints de 45 pts).
Local-first, par choix
Il n'y a pas de sauvegarde automatique ni de stockage dans le navigateur : le fichier est la seule source de vérité, vous le gardez, le versionnez et le partagez comme vous voulez. Seules les préférences d'interface (thème, langue) vivent sur votre poste. Rien ne part sur un serveur — voir Vos données.