Application web statique destinée aux chercheuses et chercheurs de l'EPFL pour générer automatiquement une archive ZIP contenant la structure complète d'un projet de recherche.
L'archive produite inclut un README de projet, des conventions de nommage, des fichiers de licence, un modèle de DMP (Data Management Plan), des checklists, et les ressources EPFL pertinentes (guides PDF, modèles ODT/DOCX) — le tout personnalisé selon les réponses fournies dans l'assistant.
Aucune installation ni dépendance n'est requise : l'application s'exécute entièrement dans le navigateur.
Un serveur HTTP est nécessaire pour le chargement des modules ES. Depuis la racine du projet :
python3 -m http.server 8000Ouvrir ensuite http://localhost:8000 dans un navigateur.
L'ouverture directe du fichier
index.htmlenfile://ne fonctionne pas avec les modules JavaScript ES.
| Fichier / Dossier | Rôle |
|---|---|
index.html |
Shell de l'application, interface utilisateur de l'assistant, bootstrap des modules ES |
style.css |
Design system EPFL — couleurs, grille, typographie, responsive |
app.js |
Logique principale — état global, navigation, liaison formulaire-état, assemblage ZIP, arbre de preview |
templates.js |
Générateurs de contenu pour tous les fichiers livrés dans le ZIP (README, DMP, licences, conventions, scripts, notebooks) |
rules.js |
Moteur de règles conditionnelles — dossiers, ressources, métadonnées financeur, sous-dossiers données |
zipgen.js |
Générateur ZIP pur JavaScript (méthode STORE, zéro dépendance) |
i18n.js |
Module de traduction français / anglais pour l'interface et les fichiers générés |
tests/tests.js |
Tests unitaires exécutables avec Node.js |
assets/resources/ |
Fichiers ressources EPFL inclus dans le ZIP (PDF, ODT, DOCX) |
.nojekyll |
Requis pour le déploiement GitHub Pages (empêche Jekyll de traiter les dossiers commençant par _) |
AGENTS.md |
Notes d'architecture à l'usage des agents opencode |
- Assistant en 4 étapes : bienvenue → projet → données & code → licences
- Génération ZIP complète : arborescence de dossiers, fichiers README, DMP_STARTER, conventions de nommage, licences, checklists
- Assistant licence guidé : quiz interactif qui oriente vers la licence recommandée, avec vérification de compatibilité entre licences
- Conventions de nommage : 4 presets au choix (standard, chronologique, par catégorie, project-type)
- Arbre interactif : dans l'écran résultat, visualisation de l'arborescence avec cases à cocher pour activer ou désactiver des dossiers avant le téléchargement
- Sources réutilisées : déclaration de données ou code existants avec vérification de compatibilité de licence
- DMP_STARTER.md pré-rempli : plan de gestion de données amorcé à partir des informations saisies
- Structure de dossiers personnalisable : activez ou désactivez chaque dossier (Admin, Raw Data, Analyses, Results, Code, etc.) avant de télécharger le ZIP
- Ressources EPFL intégrées : guides, modèles et documents officiels inclus dans l'archive
- Bilinguisme FR/EN : interface et fichiers générés disponibles en français ou en anglais
- Génération 100 % côté client : aucune donnée transmise à un serveur, aucune dépendance externe
- Bienvenue : présentation de l'outil, choix entre nouveau projet ou import d'une configuration existante
- Étape 1 — Projet : saisir le nom du projet, l'unité EPFL, le numéro de grant, une description, des mots-clés, le financeur, les collaborateurs, et activer les options souhaitées
- Étape 2 — Données & code : décrire les jeux de données et le code produit, choisir une convention de nommage, déclarer les sources réutilisées
- Étape 3 — Licences : sélectionner les licences pour les données et le code (assistant quiz ou sélecteur manuel), vérifier la compatibilité
- Résultat : visualiser l'arborescence interactive, cocher/décocher les dossiers, puis télécharger l'archive ZIP
| Élément | Emplacement |
|---|---|
| Marque, couleurs, métadonnées visuelles | style.css — variables CSS personnalisées |
| Liste des financeurs et leurs exigences | rules.js — section RULES.funders |
| Ressources EPFL à inclure dans le ZIP | rules.js — section RULES.resources |
| Structure des dossiers du projet | rules.js — section RULES.folders |
| Sous-dossiers de données (raw, processed, etc.) | rules.js — section RULES.dataSubfolders |
| Contenu des fichiers générés | templates.js — chaque fonction build* |
| Traductions de l'interface | i18n.js — dictionnaire UI |
| Fichiers ressources sur disque | assets/resources/ |
Dans rules.js, ajouter une entrée dans RULES.funders :
MonFunder: {
label: "Mon Financeur",
dmpTemplate: "monfunder",
requirements: ["Exigence 1", "Exigence 2"],
openDataPolicy: "Description de la politique Open Data",
dmpDeadline: "6 mois après le début du projet"
}Ajouter ensuite une entrée correspondante dans RULES.resources (si un modèle DMP spécifique à ce financeur existe) et placer le fichier dans assets/resources/.
- Pusher le dépôt sur GitHub
- Dans le dépôt, aller dans Settings → Pages → Source : Deploy from branch
- Sélectionner la branche
mainet le dossier racine (/) - L'application sera accessible à l'adresse
https://{organisation}.github.io/{depot}/
Le fichier
.nojekyllà la racine du dépôt est nécessaire pour GitHub Pages. Sans lui, Jekyll ignore les dossiers et fichiers dont le nom commence par un tiret bas (_), ce qui peut interrompre le chargement des ressources.
- Python 3 (pour le serveur HTTP local) ou tout autre serveur HTTP statique
- Node.js (pour l'exécution des tests unitaires)
Les tests unitaires se trouvent dans tests/tests.js et s'exécutent avec Node.js :
node tests/tests.jsIls couvrent la génération de contenu (templates), l'évaluation des règles conditionnelles, la construction du ZIP et les traductions.
- Aucune dépendance externe ni build : le code source est exécuté directement par le navigateur
- Les modules ES sont importés depuis
index.htmldans un ordre défini (i18n → rules → templates → app) - L'état global (
STATE) est mutable et lié aux champs du formulaire via des fonctions de binding (bindInput,bindChip,bindToggle, etc.) - La compression ZIP utilise la méthode STORE (aucune compression) pour rester en pur JS sans bibliothèque
EPFL Library — Research Data Management
researchdata@epfl.ch
go.epfl.ch/rdm