Une plateforme de révision interactive pour l'ETML. Ce projet transforme automatiquement des fichiers Markdown en un site web structuré, avec un menu dynamique et des versions audio générées par IA pour chaque cours.
- Audio "Podcast" : Chaque fiche est lue par une voix IA naturelle (OpenAI
4o), générée automatiquement lors du build. - Menu Dynamique : L'arborescence du site est générée automatiquement à partir des dossiers et fichiers Markdown.
- Site Statique & Rapide : Pas de base de données. Tout est pré-généré (HTML/MP3) pour une performance maximale.
- Mode Sombre : Support natif du thème clair/sombre.
- Déploiement Automatisé : Mise en ligne sur Infomaniak via GitHub Actions.
Pour développer ou tester le projet sur votre machine :
-
Cloner le projet
git clone https://github.com/Fbrend23/Wiki-ETML.git cd Wiki-ETML -
Installer les dépendances
npm install
-
Configurer l'IA (Optionnel) Pour générer les audios localement, créez un fichier
.envà la racine :OPENAI_API_KEY=sk-proj-VotreCleIci...
-
Lancer le site
npm run dev
Cette commande génère l'index du menu avant de lancer le serveur Vite.
Le système est conçu pour être sans code. Vous n'avez qu'à gérer des fichiers.
- Créer un dossier dans
public/markdown/(ex:Java-320). Ce sera le nom de la catégorie dans le menu. - Ajouter un fichier Markdown (
.md) dans ce dossier.- Nommage : Utilisez un préfixe numérique pour l'ordre, suivi d'un tiret.
- Exemple :
1-introduction.md,2-variables.md. - Rendu : Le site affichera "Introduction" et "Variables" (sans les numéros) dans l'ordre correct.
- Mettre à jour
- En local : Relancez
npm run dev. - En ligne : Faites un
git push, l'audio et le menu seront mis à jour automatiquement.
- En local : Relancez
Le projet repose sur deux scripts Node.js situés à la racine :
-
generate-index.js(npm run gen:content) : Scanne le dossierpublic/markdown, trie les fichiers, nettoie les noms (retire "1-") et génèrepublic/content.json. Ce fichier est lu par le site pour construire le menu. -
generate-audio.js(npm run gen:audio) : Compare les fichiers Markdown avec les MP3 existants. Si un fichier a changé ou est nouveau, il appelle l'API OpenAI et crée le MP3 danspublic/audio.
Le déploiement est géré par GitHub Actions via le fichier .github/workflows/deploy.yaml.
Processus déclenché manuellement ("Run workflow") :
- Installation de l'environnement.
- Génération Audio : Création des MP3 manquants via OpenAI.
- Génération Index : Création du menu
content.json. - Build Vite : Compilation du site dans
dist/. - FTP Infomaniak : Envoi du dossier
dist/sur le serveur.
| Secret | Description |
|---|---|
OPENAI_API_KEY |
Clé pour la génération audio. |
FTP_SERVER |
Adresse du serveur (ex: ftp.infomaniak.com). |
FTP_USERNAME |
Utilisateur FTP. |
FTP_PASSWORD |
Mot de passe FTP. |
.
├── .github/workflows/ # Workflows GitHub (Deploy & Audio)
├── public/
│ ├── audio/ # MP3 générés (ne pas modifier manuellement)
│ ├── markdown/ # VOS COURS SONT ICI
│ │ ├── DevOps-324/ # Catégorie
│ │ │ ├── 1-lean.md
│ │ │ └── ...
│ │ └── ...
│ └── content.json # Index généré automatiquement
├── src/
│ ├── components/ # Composants Vue (Lecteur, etc.)
│ └── App.vue # Logique principale
├── generate-audio.js # Script IA
├── generate-index.js # Script Menu
└── package.json