LearnCS est un site pédagogique francophone qui rassemble des cours d'informatique, des visualisations interactives et des playgrounds exécutés côté client. L'objectif est d'accompagner les étudiantes et étudiants de licence (L1 → L3) — mais aussi les autodidactes — avec des explications progressives et des ressources libres.
- Modules thématiques : 50+ chapitres organisés par niveau, avec fiches de synthèse et slides imprimables
- Playgrounds intégrés : exécution de code Python (Pyodide), SQL (sql.js), C/ASM (WebAssembly) et Java directement dans le navigateur
- Visualisations animées : algorithmes, structures de données, systèmes distribués, sécurité…
- Progression locale : suivi dans
localStorage, pas de compte requis - Recherche universelle :
⌘/Ctrl+Kpour naviguer entre modules, sections et champs lexical - Mode sombre par défaut et respect des bonnes pratiques d'accessibilité (skip link, focus, ARIA)
- Next.js 14 — App Router, MDX, middleware
- React 18 + TypeScript 5
- Tailwind CSS 3 + animations Framer Motion
- Rendu MDX enrichi (remark-math, rehype-katex, rehype-pretty-code)
- Monaco Editor, Pyodide, sql.js, worker-loader pour les playgrounds
- Tests Vitest + coverage V8
npm install
npm run devnpm run dev: démarre le serveur Next.js en mode développementnpm run build: génère le site (pré-exécutescripts/generate_search_index.js)npm run start: lance le serveur en productionnpm run lint: ESLint aveceslint-config-nextnpm run test: tests Vitest (pool multi-thread, coverage V8)npm run generate:datasets: scripts utilitaires TypeScript (ts-node)
src/
app/ Pages et routes App Router, API, routing dynamique
components/ Visualisations, widgets, animations réutilisables
content/ Modules MDX + registry (imports dynamiques)
lib/ Utilitaires partagés (playgrounds, helpers)
styles/ Tailwind + styles globaux
scripts/ Génération d'index de recherche & jeux de données
public/ Assets statiques (icônes, images OG)
src/content/modules.json: catalogue des modules (id, titre, niveau)src/content/registry.tsx: association modules ↔ sections, slides, playgrounds- Les MDX peuvent importer des composants réactifs (
mdx-components.tsxpour le mapping)
Des règles spécifiques sont décrites dans docs/ :
docs/content-guidelines.md: ton, longueur recommandée, pédagogiedocs/pedagogy.md: objectifs et limites (pas d'exécution serveur, priorisation Python, etc.)docs/security.md: contraintes CSP, exécutions côté client
Merci d'ouvrir une Pull Request pour toute amélioration de contenu ou de fonctionnalités. Chaque PR doit inclure :
- Description claire du changement
- Capture(s) ou preview (si visuel)
- Résultats des tests (lint + vitest)
Le projet cible un déploiement sur Vercel (cf. docs/vercel-deploy.md). Assurez-vous de :
- Configurer
NEXT_PUBLIC_SITE_URL - Activer l'Analytics Vercel
- Vérifier les en-têtes de sécurité (CSP déjà configurée dans
next.config.mjs)
Bonne exploration ✨