Site web éducatif statique pour l'enseignement de la Technologie au Collège (Cycle 4). Ressources pédagogiques incluant cours, outils interactifs, flashcards et supports de révision.
TechnoDocs est une plateforme web statique sans framework, construite en HTML/CSS/JavaScript pur (ES6+), destinée aux élèves de collège pour l'apprentissage de la Technologie (Cycle 4). Le projet met l'accent sur la sécurité, la performance, l'accessibilité et la modularité.
- 🏗️ Conception 3D — Modélisation et impression 3D
- 🔌 Réparabilité — Indice de réparabilité, diagnostic de pannes
- 💻 Programmation — Scratch, Python, Arduino
- 🌐 Internet & Réseaux — Web, sécurité, communication
- 🎴 Révisions interactives — Flashcards avec animations 3D
| Technologie | Usage |
|---|---|
| HTML5/CSS3 | Structure et design moderne avec CSS Variables |
| JavaScript ES6+ | Vanilla JS, modules ES6, Intersection Observer API |
| Google Fonts | Inter, Space Grotesk, Lexend, Fira Code |
| Sécurité | CSP strict, HSTS, headers Netlify renforcés |
| Hébergement | Netlify avec déploiement automatique |
| Dev Server | Vite pour le développement local (hot reload) |
Note : Aucun framework JavaScript — site 100% statique et modulaire.
technodocs/
├── index.html # Page d'accueil principale
├── src/ # Sources du site (servi par Netlify)
│ ├── css/
│ │ ├── style.css # Styles globaux avec CSS Variables
│ │ └── markdown.css # Styles pour le rendu Markdown
│ ├── js/
│ │ ├── app.js # Logique principale (navigation, animations)
│ │ ├── components.js # Chargement dynamique header/footer
│ │ ├── links-loader.js # Système de liens modulaire
│ │ └── libs/
│ │ ├── lucide.min.js # Icônes Lucide (local)
│ │ └── marked.min.js # Parser Markdown (local)
│ ├── includes/
│ │ ├── header.html # Composant header réutilisable
│ │ ├── footer.html # Composant footer réutilisable
│ │ └── nav.html # Navigation mobile
│ ├── images/ # Images et logos
│ ├── data/
│ │ └── links.json # Configuration centralisée des liens
│ └── pages/
│ ├── flashcards/
│ │ ├── flashcards.html # Index des flashcards
│ │ ├── reparabilite.html # 30 flashcards Réparabilité
│ │ ├── reparabilite.js # Données + logique Réparabilité
│ │ ├── modelisation3d.html # Flashcards Modélisation 3D
│ │ └── modelisation3d.js # Données + logique Modélisation 3D
│ ├── corrections/
│ │ ├── fiches_activites.html # Index des corrections
│ │ └── *.html # Pages de correction dédiées
│ ├── content/
│ │ └── md/ # Fichiers Markdown sources
│ ├── outils/
│ │ └── tinkercad-classes.html
│ └── md-template.html # Template générique Markdown
├── docs/ # Documentation technique
│ ├── MARKDOWN_SYSTEM.md # Guide système Markdown
│ ├── LINKS_SYSTEM.md # Guide système de liens
│ └── SECURITY.md # Bonnes pratiques sécurité
├── scripts/ # Scripts d'automatisation
│ ├── commit.sh # Script commit Linux/Mac
│ └── commit.bat # Script commit Windows
├── security-check.js # Script de vérification sécurité
├── netlify.toml # Configuration Netlify + headers sécurité
├── package.json # Scripts npm et dépendances
└── .gitignore # Exclusion fichiers dev/deploy
Deux applications standalone complètes pour l'apprentissage actif :
Réparabilité (30 flashcards)
- Questions/réponses sur l'Indice de Réparabilité
- Animation flip 3D avec
transform-style: preserve-3d - Recherche en temps réel sur questions et réponses
- Mélange aléatoire (algorithme Fisher-Yates)
- Navigation clavier (flèches, Espace/Enter)
Modélisation 3D
- Flashcards sur la conception et l'impression 3D
- Même système d'interaction que Réparabilité
Fonctionnalités communes : deux modes d'affichage (grille/carte unique), navigation clavier et souris, design responsive.
Création facile de pages pédagogiques (corrections, cours, fiches) à partir de fichiers .md :
- Table des matières automatique générée depuis les titres H3/H4
- Style optimisé éducation avec police Lexend (dyslexie-friendly)
- Sécurité renforcée : zéro
innerHTML, utilisation deDOMParser - Marked.js en local (pas de dépendance CDN)
- Encadrés automatiques pour compétences, critères, réponses modèles
Gestion centralisée de tous les liens via src/data/links.json :
- Ajout/suppression sans toucher au HTML
- Support : Outils, Corrections, Cours
- Icônes flexibles (emoji ou images)
- Génération sécurisée via
createElement - Fallback HTML si JSON non chargé
- Header/Footer dynamiques chargés via
fetch() - Navigation mobile avec menu hamburger animé
- Scroll animations avec Intersection Observer
Variables CSS centralisées dans :root :
/* Couleurs principales */
--color-primary: #6366f1; /* Indigo */
--color-secondary: #06b6d4; /* Cyan */
--color-accent: #f59e0b; /* Amber */
/* Espacements cohérents */
--space-1 à --space-16
/* Typographie */
--text-xs à --text-4xlLe site est déployé automatiquement sur Netlify à chaque push sur main.
Optimisation des builds : Le fichier netlify.toml contient une règle pour économiser les crédits :
[build]
ignore = "git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF -- src/ package.json"Seuls les changements dans src/ ou package.json déclenchent un build.
# Développement local avec hot reload
npm run dev
# Vérification de sécurité (local)
npm run security-check
# Vérification de sécurité (production)
npm run security-check:prod
# Commit automatisé
npm run commit # Linux/macOS
npm run commit:win # Windowsgit add .
git commit -m "Description des changements"
git push origin main
# → Déploiement automatique Netlifynpm install # Première fois uniquement
npm run dev # Lance le serveur sur http://localhost:3000 (avec hot reload)# Windows
start index.html
# macOS
open index.html
# Linux
xdg-open index.html
⚠️ Certaines fonctionnalités (fetch, modules ES6) nécessitent un serveur local.
| Branche | Usage |
|---|---|
main |
Production (déploiement auto Netlify) |
dev |
Développement actif |
feature/* |
Fonctionnalités en cours |
- Développer sur
devou créer une feature branch - Tester localement avec
npm run dev - Vérifier la sécurité avec
npm run security-check - Commiter avec
npm run commit - Merger vers
mainpour déploiement
- Éditer le fichier
.jscorrespondant (reparabilite.jsoumodelisation3d.js) - Modifier l'array
flashcardsData:{ q: "Question?", a: "Réponse." } - Le HTML correspondant charge automatiquement ce fichier via
<script src="reparabilite.js"></script> - Recompiler avec
npm run buildpour l'intégrer à/dist
- Créer le fichier
.mddanssrc/pages/content/md/ - Structure : H2 pour titre, H3 pour activités, H4 pour questions
- Créer une page HTML dédiée (copier un template existant)
- Adapter le chemin dans
fetch()vers votre fichier.md - Voir
docs/MARKDOWN_SYSTEM.mdpour la documentation complète
- Éditer
src/data/links.json - Ajouter l'objet dans la section appropriée
- Définir :
name,url,description/tag,icon - Voir
docs/LINKS_SYSTEM.mdpour la documentation complète
Les flashcards utilisent des scripts externalisés (.js) pour respecter la CSP strict :
- ✅ Pas de
<script>inline - ✅ Tous les événements et DOM via
addEventListeneretcreateElement - ✅ Conforme à la politique CSP :
script-src 'self'
Important : Quand vous modifiez une flashcard, externalisez le script inline en fichier .js séparé.
- Créer le fichier HTML dans
src/pages/ - Lier
/src/css/style.csspour les styles globaux - Ajouter les placeholders
#header-placeholderet#footer-placeholder - Charger
/src/js/components.jsen module - Jamais d'inline scripts — créer un fichier
.jsséparé si nécessaire
- ES6 Modules (import/export natifs)
- Async/Await pour le chargement asynchrone
- Intersection Observer API pour les animations
- Template Literals et Arrow Functions
- CSS Variables pour le theming
- CSS Grid et Flexbox pour les layouts
- Media Queries pour le responsive
prefers-reduced-motionpour l'accessibilité
- ✅ Sécurité renforcée : CSP strict, HSTS, zéro
innerHTML - ✅ Mobile-first : design responsive par défaut
- ✅ Accessibilité : ARIA labels, police Lexend, navigation clavier
- ✅ Performance : pas de framework lourd, assets locaux
- ✅ SEO : meta tags, semantic HTML, URLs propres
- ✅ Modularité : composants réutilisables, configuration centralisée
| Fichier | Contenu |
|---|---|
docs/MARKDOWN_SYSTEM.md |
Système de rendu Markdown, TOC automatique, guide de style |
docs/LINKS_SYSTEM.md |
Gestion centralisée des liens via JSON |
docs/SECURITY.md |
Configuration CSP/HSTS, script de vérification |
- 2 applications flashcards — Réparabilité (30 cartes) + Modélisation 3D
- Système Markdown — Rendu automatique avec TOC et styles éducatifs
- 0 framework — Vanilla JavaScript ES6+ uniquement
- Sécurité renforcée — CSP strict, HSTS, zéro
innerHTML - Mobile-first — Responsive sur tous les écrans
- Accessibilité — Police Lexend, ARIA labels, navigation clavier
- Site en ligne : technodocs.netlify.app
- Dépôt GitHub : StimGlb/technodocs
Usage éducatif — Ressources destinées à l'enseignement de la Technologie au Collège.
Créé par StimGLB | Dernière mise à jour : Janvier 2026