ajoute les pages légales, la purge RGPD et sert polices et scripts depuis le portail

Pages /legal et /confidentialite réécrites d'après le système réel, purge
des classes archivées depuis 90 jours (prouvée par Pest), archivage côté
prof. Polices, xterm.js et CodeMirror ne sont plus chargés depuis Google
ni jsDelivr. Pages d'aperçu signalées, sans vrais établissements ni faux
chiffres. Journaux Laravel gardés 14 jours.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Adam Belkacemi 2026-10-09 21:07:25 +02:00
parent 0a5df89201
commit e4a6aaebb1
62 changed files with 822 additions and 238 deletions

View file

@ -5,8 +5,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Syllabus — Une vraie machine Linux pour chaque élève</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Archivo:wght@500;700;800;900&family=IBM+Plex+Mono:wght@400;600&display=swap" rel="stylesheet">
{{ Vite::fonts() }}
@vite(['resources/css/app.css', 'resources/js/app.js'])
<style>
.etoile { clip-path: polygon(50% 0, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%); }
@ -17,9 +16,9 @@
.curseur { animation: clignote 1s steps(1) infinite; }
@media (prefers-reduced-motion: reduce) { .flotte, .curseur { animation: none; } }
</style>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@xterm/xterm@5.5.0/css/xterm.css">
<script defer src="https://cdn.jsdelivr.net/npm/@xterm/xterm@5.5.0/lib/xterm.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/@xterm/addon-fit@0.10.0/lib/addon-fit.min.js"></script>
<link rel="stylesheet" href="{{ asset('vendor/xterm/xterm.css') }}">
<script defer src="{{ asset('vendor/xterm/xterm.js') }}"></script>
<script defer src="{{ asset('vendor/xterm/addon-fit.js') }}"></script>
<script defer src="{{ asset('js/paillasse-terminal.js') }}"></script>
<link rel="stylesheet" href="{{ asset('css/syllabus-theme.css') }}">
</head>
@ -40,7 +39,7 @@
</nav>
</header>
<main style="background:#fff"><section style="padding:112px 20px 72px;background:#fff"><div style="max-width:1000px;margin:0 auto"><p style="margin:0;font-size:15px;font-weight:700;color:#0b57d0;text-align:center">Cours · TP sur machine · suivi des élèves</p><h1 style="margin:20px 0 0;font-size:clamp(40px,6vw,72px);line-height:1.04;font-weight:800;letter-spacing:-0.03em;color:#0b1220;text-align:center;text-wrap:balance">Enseigner l’informatique, du lycée au master.</h1><p style="margin:24px auto 0;max-width:660px;font-size:20px;line-height:1.6;font-weight:500;color:#3c4043;text-align:center;text-wrap:pretty">Des cours gratuits, un vrai Linux pour chaque élève et toute la classe sur un écran. Dans le navigateur, rien à installer.</p><div style="margin-top:44px;display:flex;flex-direction:column;align-items:center;gap:14px"><a href="{{ route('register') }}" style="display:inline-flex;align-items:center;height:56px;padding:0 32px;border-radius:999px;background:#0b57d0;color:#fff;font-size:17px;font-weight:700;text-decoration:none">Créer une classe gratuite</a><p style="margin:0;font-size:14px;font-weight:600;color:#5f6368">Sans carte bancaire · élève ? <a href="{{ route('login') }}" style="color:#0b57d0;font-weight:700;text-decoration:none">rejoindre ma classe</a></p></div></div></section><section style="padding:0 20px 24px"><ul style="max-width:1000px;margin:0 auto;padding:28px 0;list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:16px 48px;border-top:1px solid #e3e5e8;border-bottom:1px solid #e3e5e8"><li style="text-align:center"><p style="margin:0;font-size:17px;font-weight:800;color:#0b1220">Hébergé en France</p><p style="margin:2px 0 0;font-size:13px;font-weight:600;color:#5f6368">Paris</p></li><li style="text-align:center"><p style="margin:0;font-size:17px;font-weight:800;color:#0b1220">RGPD</p><p style="margin:2px 0 0;font-size:13px;font-weight:600;color:#5f6368">données minimisées</p></li><li style="text-align:center"><p style="margin:0;font-size:17px;font-weight:800;color:#0b1220">20 cursus</p><p style="margin:2px 0 0;font-size:13px;font-weight:600;color:#5f6368">du lycée au master</p></li><li style="text-align:center"><p style="margin:0;font-size:17px;font-weight:800;color:#0b1220">443 seulement</p><p style="margin:2px 0 0;font-size:13px;font-weight:600;color:#5f6368">aucun port à ouvrir</p></li><li style="text-align:center"><p style="margin:0;font-size:17px;font-weight:800;color:#0b1220">0 €</p><p style="margin:2px 0 0;font-size:13px;font-weight:600;color:#5f6368">sans carte bancaire</p></li></ul></section><section style="padding:96px 20px"><div style="max-width:1120px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:56px 72px;align-items:center"><div style=""><p style="margin:0;font-size:15px;font-weight:700;color:#0b57d0">Pour l’élève</p><h2 style="margin:12px 0 0;font-size:clamp(30px,4vw,44px);line-height:1.1;font-weight:800;letter-spacing:-0.02em;color:#0b1220;text-wrap:balance">Un terminal Linux en 5 secondes.</h2><p style="margin:24px 0 0;max-width:660px;font-size:20px;line-height:1.6;font-weight:500;color:#3c4043;text-wrap:pretty">Chaque élève a sa propre machine Debian. Il clique, la console s’ouvre. Aucun poste du lycée à configurer.</p><p style="margin:28px 0 0"><a href="{{ route('labs.essai') }}" style="font-size:16px;font-weight:700;color:#0b57d0;text-decoration:none">Essayer un lab sans compte →</a></p></div><div><div style="border-radius:24px;overflow:hidden;background:#fff;border:1px solid #e3e5e8;box-shadow:0 1px 2px rgba(15,23,42,.06),0 24px 48px -24px rgba(15,23,42,.18)"><div style="padding:12px 16px;border-bottom:1px solid #1f2937;background:#0d1117;font:600 13px 'IBM Plex Mono',monospace;color:#9ca3af">eleve@lab-07 · Debian 12</div><pre style="margin:0;padding:20px;background:#0d1117;color:#e5e7eb;font:500 14px/1.7 'IBM Plex Mono',monospace;white-space:pre-wrap">eleve@lab-07:~$ ip -br addr
<main style="background:#fff"><section style="padding:112px 20px 72px;background:#fff"><div style="max-width:1000px;margin:0 auto"><p style="margin:0;font-size:15px;font-weight:700;color:#0b57d0;text-align:center">Cours · TP sur machine · suivi des élèves</p><h1 style="margin:20px 0 0;font-size:clamp(40px,6vw,72px);line-height:1.04;font-weight:800;letter-spacing:-0.03em;color:#0b1220;text-align:center;text-wrap:balance">Enseigner l’informatique, du lycée au master.</h1><p style="margin:24px auto 0;max-width:660px;font-size:20px;line-height:1.6;font-weight:500;color:#3c4043;text-align:center;text-wrap:pretty">Des cours gratuits, un vrai Linux pour chaque élève et toute la classe sur un écran. Dans le navigateur, rien à installer.</p><div style="margin-top:44px;display:flex;flex-direction:column;align-items:center;gap:14px"><a href="{{ route('register') }}" style="display:inline-flex;align-items:center;height:56px;padding:0 32px;border-radius:999px;background:#0b57d0;color:#fff;font-size:17px;font-weight:700;text-decoration:none">Créer une classe gratuite</a><p style="margin:0;font-size:14px;font-weight:600;color:#5f6368">Sans carte bancaire · élève ? <a href="{{ route('login') }}" style="color:#0b57d0;font-weight:700;text-decoration:none">rejoindre ma classe</a></p></div></div></section><section style="padding:0 20px 24px"><ul style="max-width:1000px;margin:0 auto;padding:28px 0;list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:16px 48px;border-top:1px solid #e3e5e8;border-bottom:1px solid #e3e5e8"><li style="text-align:center"><p style="margin:0;font-size:17px;font-weight:800;color:#0b1220">Hébergé en France</p><p style="margin:2px 0 0;font-size:13px;font-weight:600;color:#5f6368">Paris</p></li><li style="text-align:center"><p style="margin:0;font-size:17px;font-weight:800;color:#0b1220">RGPD</p><p style="margin:2px 0 0;font-size:13px;font-weight:600;color:#5f6368">données minimisées</p></li><li style="text-align:center"><p style="margin:0;font-size:17px;font-weight:800;color:#0b1220">6 cursus</p><p style="margin:2px 0 0;font-size:13px;font-weight:600;color:#5f6368">du lycée au BUT</p></li><li style="text-align:center"><p style="margin:0;font-size:17px;font-weight:800;color:#0b1220">443 seulement</p><p style="margin:2px 0 0;font-size:13px;font-weight:600;color:#5f6368">aucun port à ouvrir</p></li><li style="text-align:center"><p style="margin:0;font-size:17px;font-weight:800;color:#0b1220">0 €</p><p style="margin:2px 0 0;font-size:13px;font-weight:600;color:#5f6368">sans carte bancaire</p></li></ul></section><section style="padding:96px 20px"><div style="max-width:1120px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:56px 72px;align-items:center"><div style=""><p style="margin:0;font-size:15px;font-weight:700;color:#0b57d0">Pour l’élève</p><h2 style="margin:12px 0 0;font-size:clamp(30px,4vw,44px);line-height:1.1;font-weight:800;letter-spacing:-0.02em;color:#0b1220;text-wrap:balance">Un terminal Linux en 5 secondes.</h2><p style="margin:24px 0 0;max-width:660px;font-size:20px;line-height:1.6;font-weight:500;color:#3c4043;text-wrap:pretty">Chaque élève a sa propre machine Debian. Il clique, la console s’ouvre. Aucun poste du lycée à configurer.</p><p style="margin:28px 0 0"><a href="{{ route('labs.essai') }}" style="font-size:16px;font-weight:700;color:#0b57d0;text-decoration:none">Essayer un lab sans compte →</a></p></div><div><div style="border-radius:24px;overflow:hidden;background:#fff;border:1px solid #e3e5e8;box-shadow:0 1px 2px rgba(15,23,42,.06),0 24px 48px -24px rgba(15,23,42,.18)"><div style="padding:12px 16px;border-bottom:1px solid #1f2937;background:#0d1117;font:600 13px 'IBM Plex Mono',monospace;color:#9ca3af">eleve@lab-07 · Debian 12</div><pre style="margin:0;padding:20px;background:#0d1117;color:#e5e7eb;font:500 14px/1.7 'IBM Plex Mono',monospace;white-space:pre-wrap">eleve@lab-07:~$ ip -br addr
ens18 UP 10.20.7.14/24
eleve@lab-07:~$ ping -c1 10.20.7.1
64 bytes from 10.20.7.1: time=0.4 ms
@ -55,10 +54,10 @@ eleve@lab-07:~$ <span style="background:#e5e7eb;color:#0d1117"> </span></pre></d
<nav aria-label="Produit"><p style="margin:0;font-size:13px;font-weight:800;color:#0b1220">Produit</p><ul style="margin:14px 0 0;padding:0;list-style:none;display:grid;gap:10px"><li><a href="{{ route('fonctionnalites') }}" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Fonctionnalités</a></li><li><a href="{{ route('cours.index') }}" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Cours gratuits</a></li><li><a href="{{ route('labs.essai') }}" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Essayer un lab</a></li><li><a href="{{ route('tarifs') }}" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Tarifs</a></li></ul></nav><nav aria-label="Outils"><p style="margin:0;font-size:13px;font-weight:800;color:#0b1220">Outils</p><ul style="margin:14px 0 0;padding:0;list-style:none;display:grid;gap:10px"><li><a href="{{ route('ressource') }}?outil=cockpit" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Tableau de bord prof</a></li><li><a href="{{ route('ressource') }}?outil=labs" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">TP sur machine Linux</a></li><li><a href="{{ route('ressource') }}?outil=ide" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Éditeur de code</a></li><li><a href="{{ route('ressource') }}?outil=quiz" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Quiz flash</a></li><li><a href="{{ route('ressource') }}?outil=sujet" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Examens</a></li><li><a href="{{ route('ressource') }}?outil=bibliotheque" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Bibliothèque du prof</a></li></ul></nav><nav aria-label="Établissements"><p style="margin:0;font-size:13px;font-weight:800;color:#0b1220">Établissements</p><ul style="margin:14px 0 0;padding:0;list-style:none;display:grid;gap:10px"><li><a href="{{ route('etablissements') }}" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Équiper une classe</a></li><li><a href="{{ route('ressource') }}?outil=vie-scolaire" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Vie scolaire</a></li><li><a href="{{ route('ressource') }}?outil=espace-etablissement" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Licences et factures</a></li><li><a href="{{ route('ressource') }}?outil=integration" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Intégration et sécurité</a></li></ul></nav><nav aria-label="Syllabus"><p style="margin:0;font-size:13px;font-weight:800;color:#0b1220">Syllabus</p><ul style="margin:14px 0 0;padding:0;list-style:none;display:grid;gap:10px"><li><a href="{{ route('aide') }}" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Aide et tutoriels</a></li><li><a href="{{ route('legal') }}" style="font-size:14px;font-weight:500;color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Mentions légales et RGPD</a></li></ul></nav>
<p style="margin:0;align-self:start;font-size:14px;font-weight:600;color:#5f6368"><span style="color:#137333">●</span> Tous les services fonctionnent</p>
</div>
<div style="border-top:1px solid #e3e5e8"><ul aria-label="Engagements" style="max-width:1200px;margin:0 auto;padding:24px 20px;list-style:none;display:flex;flex-wrap:wrap;gap:12px 40px"><li style="font-size:14px;font-weight:700;color:#0b1220">Hébergé en France <span style="font-weight:500;color:#5f6368">· Paris</span></li><li style="font-size:14px;font-weight:700;color:#0b1220">RGPD <span style="font-weight:500;color:#5f6368">· données minimisées</span></li><li style="font-size:14px;font-weight:700;color:#0b1220">20 cursus <span style="font-weight:500;color:#5f6368">· du lycée au master</span></li><li style="font-size:14px;font-weight:700;color:#0b1220">0 € <span style="font-weight:500;color:#5f6368">· sans carte bancaire</span></li></ul>
<div style="border-top:1px solid #e3e5e8"><ul aria-label="Engagements" style="max-width:1200px;margin:0 auto;padding:24px 20px;list-style:none;display:flex;flex-wrap:wrap;gap:12px 40px"><li style="font-size:14px;font-weight:700;color:#0b1220">Hébergé en France</li><li style="font-size:14px;font-weight:700;color:#0b1220"><a href="{{ route('confidentialite') }}" style="color:#0b1220">Conforme au RGPD</a> <span style="font-weight:500;color:#5f6368">· données minimisées</span></li><li style="font-size:14px;font-weight:700;color:#0b1220">6 cursus <span style="font-weight:500;color:#5f6368">· du lycée au BUT</span></li><li style="font-size:14px;font-weight:700;color:#0b1220">0 € <span style="font-weight:500;color:#5f6368">· sans carte bancaire</span></li></ul>
</div>
<div style="border-top:1px solid #e3e5e8">
<div class="mx-auto flex max-w-7xl flex-wrap items-center justify-center gap-x-6 gap-y-2 px-5 py-4 lg:px-10"><nav aria-label="Informations légales"><ul class="flex flex-wrap justify-center gap-x-5 gap-y-1" style="margin:0;padding:0;list-style:none;font-size:14px;font-weight:500"><li><a href="{{ route('legal') }}#mentions" style="color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Mentions légales</a></li><li><a href="{{ route('legal') }}#cgu" style="color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">CGU</a></li><li><a href="{{ route('legal') }}#confidentialite" style="color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Confidentialité et RGPD</a></li><li><a href="{{ route('legal') }}#cookies" style="color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Cookies</a></li><li><a href="{{ route('legal') }}#sous-traitance" style="color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Sous-traitance</a></li></ul></nav></div>
<div class="mx-auto flex max-w-7xl flex-wrap items-center justify-center gap-x-6 gap-y-2 px-5 py-4 lg:px-10"><nav aria-label="Informations légales"><ul class="flex flex-wrap justify-center gap-x-5 gap-y-1" style="margin:0;padding:0;list-style:none;font-size:14px;font-weight:500"><li><a href="{{ route('legal') }}#mentions" style="color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Mentions légales</a></li><li><a href="{{ route('legal') }}#cgu" style="color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">CGU</a></li><li><a href="{{ route('confidentialite') }}#confidentialite" style="color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Confidentialité et RGPD</a></li><li><a href="{{ route('confidentialite') }}#cookies" style="color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Cookies</a></li><li><a href="{{ route('confidentialite') }}#sous-traitance" style="color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Sous-traitance</a></li><li><a href="{{ route('statut') }}" style="color:#5f6368;text-decoration:none" class="hover:text-[#0b57d0]">Statut du service</a></li></ul></nav></div>
</div>
</footer>