edubot / index.html
docto41's picture
Add 2 files
d3b0966 verified
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>EduBot - Plateforme de Cours Automatisée</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
body {
font-family: 'Poppins', sans-serif;
background-color: #f9fafb;
}
.gradient-bg {
background: linear-gradient(135deg, #48bb78 0%, #2f855a 100%);
}
.course-card {
transition: all 0.3s ease;
border-radius: 12px;
overflow: hidden;
}
.course-card:hover {
transform: translateY(-5px);
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
}
.progress-ring {
transition: stroke-dashoffset 0.5s;
transform: rotate(-90deg);
transform-origin: 50% 50%;
}
.loading-dots::after {
content: '.';
animation: dots 1.5s steps(5, end) infinite;
}
@keyframes dots {
0%, 20% { content: '.'; }
40% { content: '..'; }
60% { content: '...'; }
80%, 100% { content: ''; }
}
.auto-load-container {
position: relative;
min-height: 200px;
}
.auto-load-indicator {
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(90deg, #48bb78 0%, #38a169 100%);
opacity: 0;
transition: opacity 0.3s;
}
.auto-load-container.loading .auto-load-indicator {
opacity: 1;
animation: loadingPulse 2s infinite;
}
@keyframes loadingPulse {
0% { opacity: 0.5; }
50% { opacity: 1; }
100% { opacity: 0.5; }
}
.btn-primary {
background: linear-gradient(135deg, #48bb78 0%, #2f855a 100%);
color: white;
}
.btn-primary:hover {
background: linear-gradient(135deg, #38a169 0%, #2c7e5a 100%);
}
</style>
</head>
<body class="antialiased">
<div class="min-h-screen flex flex-col">
<!-- Header -->
<header class="gradient-bg text-white shadow-lg">
<div class="container mx-auto px-4 py-6">
<div class="flex justify-between items-center">
<div class="flex items-center space-x-3">
<i class="fas fa-robot text-2xl"></i>
<h1 class="text-2xl font-bold">Edu<span class="text-yellow-200">Bot</span></h1>
</div>
<nav class="hidden md:flex space-x-6 items-center">
<a href="#" class="hover:text-yellow-200 transition">Accueil</a>
<a href="#" class="hover:text-yellow-200 transition">Cours</a>
<a href="#" class="hover:text-yellow-200 transition">Parcours</a>
<a href="#" class="hover:text-yellow-200 transition">Équipe</a>
<button class="bg-white text-green-700 px-4 py-2 rounded-full font-medium hover:bg-gray-100 transition">
Connexion
</button>
</nav>
<button class="md:hidden text-xl">
<i class="fas fa-bars"></i>
</button>
</div>
</div>
</header>
<!-- Hero Section -->
<section class="gradient-bg text-white py-16">
<div class="container mx-auto px-4">
<div class="flex flex-col md:flex-row items-center">
<div class="md:w-1/2 mb-10 md:mb-0">
<h2 class="text-4xl md:text-5xl font-bold mb-6">Apprentissage <span class="text-yellow-200">Automatisé</span></h2>
<p class="text-xl mb-8">Découvrez des cours adaptatifs générés automatiquement par notre système intelligent.</p>
<div class="flex flex-col sm:flex-row gap-4">
<button class="bg-yellow-400 text-gray-900 px-6 py-3 rounded-full font-bold hover:bg-yellow-300 transition flex items-center justify-center">
<i class="fas fa-play mr-2"></i> Voir la démo
</button>
<button class="bg-white bg-opacity-20 px-6 py-3 rounded-full font-medium hover:bg-opacity-30 transition flex items-center justify-center">
<i class="fas fa-info-circle mr-2"></i> En savoir plus
</button>
</div>
</div>
<div class="md:w-1/2 flex justify-center">
<div class="relative">
<div class="w-64 h-64 md:w-80 md:h-80 bg-white bg-opacity-20 rounded-full flex items-center justify-center">
<i class="fas fa-robot text-6xl md:text-8xl text-white"></i>
</div>
<div class="absolute -bottom-5 -right-5 bg-yellow-400 text-gray-900 px-4 py-2 rounded-full font-bold shadow-lg">
IA <span class="loading-dots"></span>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Courses Section -->
<section class="py-16 bg-white">
<div class="container mx-auto px-4">
<div class="flex justify-between items-center mb-12">
<h2 class="text-3xl font-bold text-gray-800">Nos Cours Ribotisés</h2>
<div class="flex space-x-4">
<button id="filterAll" class="px-4 py-2 rounded-full bg-green-600 text-white font-medium">Tous</button>
<button id="filterTech" class="px-4 py-2 rounded-full bg-gray-200 text-gray-700 hover:bg-gray-300 transition">Technologie</button>
<button id="filterBusiness" class="px-4 py-2 rounded-full bg-gray-200 text-gray-700 hover:bg-gray-300 transition">Business</button>
<button id="filterDesign" class="px-4 py-2 rounded-full bg-gray-200 text-gray-700 hover:bg-gray-300 transition">Design</button>
</div>
</div>
<!-- Course Grid -->
<div id="courseGrid" class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-8 mb-12">
<!-- Courses will be loaded here automatically -->
</div>
<!-- Auto Load Container -->
<div id="autoLoadContainer" class="auto-load-container">
<div class="text-center py-8">
<div class="inline-block relative">
<svg class="w-16 h-16" viewBox="0 0 36 36">
<circle cx="18" cy="18" r="16" fill="none" stroke="#e6e6e6" stroke-width="2"></circle>
<circle class="progress-ring" cx="18" cy="18" r="16" fill="none" stroke="#48bb78" stroke-width="2" stroke-dasharray="100" stroke-dashoffset="100"></circle>
</svg>
<div class="absolute inset-0 flex items-center justify-center">
<i class="fas fa-sync-alt text-gray-500 animate-spin"></i>
</div>
</div>
<p class="mt-4 text-gray-600">Chargement des cours adaptés à vos besoins...</p>
</div>
<div class="auto-load-indicator"></div>
</div>
</div>
</section>
<!-- How It Works -->
<section class="py-16 bg-gray-50">
<div class="container mx-auto px-4">
<h2 class="text-3xl font-bold text-center text-gray-800 mb-16">Comment fonctionne notre système automatisé</h2>
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
<div class="bg-white p-8 rounded-xl shadow-md text-center">
<div class="w-20 h-20 gradient-bg rounded-full flex items-center justify-center text-white text-3xl mb-6 mx-auto">
<i class="fas fa-brain"></i>
</div>
<h3 class="text-xl font-bold mb-3">Analyse Intelligente</h3>
<p class="text-gray-600">Notre IA analyse vos préférences et votre historique d'apprentissage pour recommander les meilleurs contenus.</p>
</div>
<div class="bg-white p-8 rounded-xl shadow-md text-center">
<div class="w-20 h-20 gradient-bg rounded-full flex items-center justify-center text-white text-3xl mb-6 mx-auto">
<i class="fas fa-cogs"></i>
</div>
<h3 class="text-xl font-bold mb-3">Génération Automatique</h3>
<p class="text-gray-600">Les cours sont générés dynamiquement à partir de notre base de connaissances mise à jour en temps réel.</p>
</div>
<div class="bg-white p-8 rounded-xl shadow-md text-center">
<div class="w-20 h-20 gradient-bg rounded-full flex items-center justify-center text-white text-3xl mb-6 mx-auto">
<i class="fas fa-chart-line"></i>
</div>
<h3 class="text-xl font-bold mb-3">Adaptation Continue</h3>
<p class="text-gray-600">Le système s'ajuste en permanence en fonction de votre progression et des nouvelles tendances pédagogiques.</p>
</div>
</div>
</div>
</section>
<!-- Testimonials -->
<section class="py-16 bg-white">
<div class="container mx-auto px-4">
<h2 class="text-3xl font-bold text-center text-gray-800 mb-16">Ce que disent nos apprenants</h2>
<div class="grid grid-cols-1 md:grid-cols-2 gap-8">
<div class="bg-gray-50 p-8 rounded-xl">
<div class="flex items-center mb-6">
<div class="w-12 h-12 rounded-full bg-green-100 flex items-center justify-center text-green-600 text-xl font-bold mr-4">
JD
</div>
<div>
<h4 class="font-bold">Jean Dupont</h4>
<p class="text-gray-500 text-sm">Développeur Fullstack</p>
</div>
</div>
<p class="text-gray-700 mb-4">"Le système automatisé m'a permis de découvrir des cours parfaitement adaptés à mon niveau et à mes objectifs professionnels. Une révolution dans l'apprentissage en ligne !"</p>
<div class="flex text-yellow-400">
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
</div>
</div>
<div class="bg-gray-50 p-8 rounded-xl">
<div class="flex items-center mb-6">
<div class="w-12 h-12 rounded-full bg-blue-100 flex items-center justify-center text-blue-600 text-xl font-bold mr-4">
MS
</div>
<div>
<h4 class="font-bold">Marie Simon</h4>
<p class="text-gray-500 text-sm">Designer UX/UI</p>
</div>
</div>
<p class="text-gray-700 mb-4">"J'ai été impressionnée par la qualité des cours générés automatiquement. Les contenus sont toujours pertinents et parfaitement structurés. Je recommande vivement !"</p>
<div class="flex text-yellow-400">
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star"></i>
<i class="fas fa-star-half-alt"></i>
</div>
</div>
</div>
</div>
</section>
<!-- CTA -->
<section class="py-16 gradient-bg text-white">
<div class="container mx-auto px-4 text-center">
<h2 class="text-3xl md:text-4xl font-bold mb-6">Prêt à révolutionner votre apprentissage ?</h2>
<p class="text-xl mb-8 max-w-2xl mx-auto">Inscrivez-vous maintenant et laissez notre système intelligent vous guider vers les meilleurs contenus pédagogiques.</p>
<button class="bg-white text-green-700 px-8 py-4 rounded-full font-bold text-lg hover:bg-gray-100 transition shadow-lg">
Commencer gratuitement
</button>
</div>
</section>
<!-- Footer -->
<footer class="bg-gray-900 text-white py-12">
<div class="container mx-auto px-4">
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 mb-8">
<div>
<h4 class="text-xl font-bold mb-4 flex items-center">
<i class="fas fa-robot mr-2"></i> EduBot
</h4>
<p class="text-gray-400">La plateforme d'apprentissage automatisé nouvelle génération.</p>
</div>
<div>
<h4 class="text-lg font-semibold mb-4">Navigation</h4>
<ul class="space-y-2">
<li><a href="#" class="text-gray-400 hover:text-white transition">Accueil</a></li>
<li><a href="#" class="text-gray-400 hover:text-white transition">Cours</a></li>
<li><a href="#" class="text-gray-400 hover:text-white transition">Parcours</a></li>
<li><a href="#" class="text-gray-400 hover:text-white transition">Prix</a></li>
</ul>
</div>
<div>
<h4 class="text-lg font-semibold mb-4">Ressources</h4>
<ul class="space-y-2">
<li><a href="#" class="text-gray-400 hover:text-white transition">Blog</a></li>
<li><a href="#" class="text-gray-400 hover:text-white transition">Documentation</a></li>
<li><a href="#" class="text-gray-400 hover:text-white transition">FAQ</a></li>
<li><a href="#" class="text-gray-400 hover:text-white transition">Support</a></li>
</ul>
</div>
<div>
<h4 class="text-lg font-semibold mb-4">Contact</h4>
<ul class="space-y-2">
<li class="flex items-center">
<i class="fas fa-envelope text-gray-400 mr-2"></i>
<span class="text-gray-400">contact@edubot.com</span>
</li>
<li class="flex items-center">
<i class="fas fa-phone text-gray-400 mr-2"></i>
<span class="text-gray-400">+33 1 23 45 67 89</span>
</li>
<li class="flex items-center">
<i class="fas fa-map-marker-alt text-gray-400 mr-2"></i>
<span class="text-gray-400">Paris, France</span>
</li>
</ul>
</div>
</div>
<div class="pt-8 border-t border-gray-800 flex flex-col md:flex-row justify-between items-center">
<p class="text-gray-400 mb-4 md:mb-0">© 2023 EduBot. Tous droits réservés.</p>
<div class="flex space-x-4">
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-twitter"></i></a>
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-linkedin"></i></a>
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-github"></i></a>
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-youtube"></i></a>
</div>
</div>
</div>
</footer>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
// Sample course data
const courses = [
{
id: 1,
title: "Introduction à l'IA",
category: "tech",
description: "Découvrez les fondamentaux de l'intelligence artificielle et ses applications modernes.",
duration: "4h30",
level: "Débutant",
progress: 65,
image: "https://images.unsplash.com/photo-1620712943543-bcc4688e7485?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80",
active: true
},
{
id: 2,
title: "Marketing Digital Automatisé",
category: "business",
description: "Apprenez à automatiser vos campagnes marketing avec les dernières technologies.",
duration: "6h",
level: "Intermédiaire",
progress: 30,
image: "https://images.unsplash.com/photo-1460925895917-afdab827c52f?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80",
active: true
},
{
id: 3,
title: "UI/UX Design Adaptatif",
category: "design",
description: "Maîtrisez les principes du design adaptatif pour créer des interfaces utilisateur optimales.",
duration: "5h15",
level: "Avancé",
progress: 85,
image: "https://images.unsplash.com/photo-1541462608143-67571c6738dd?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80",
active: true
},
{
id: 4,
title: "Développement Web Moderne",
category: "tech",
description: "Apprenez à créer des sites web modernes avec les dernières technologies front-end.",
duration: "8h",
level: "Intermédiaire",
progress: 45,
image: "https://images.unsplash.com/photo-1547658719-da2b51169166?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80",
active: true
},
{
id: 5,
title: "Gestion de Projet Agile",
category: "business",
description: "Découvrez les méthodologies agiles pour une gestion de projet plus efficace.",
duration: "3h45",
level: "Débutant",
progress: 0,
image: "https://images.unsplash.com/photo-1551288049-bebda4e38f71?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80",
active: true
},
{
id: 6,
title: "Data Science pour Tous",
category: "tech",
description: "Introduction à la data science sans prérequis en programmation.",
duration: "7h",
level: "Débutant",
progress: 10,
image: "https://images.unsplash.com/photo-1551288049-bebda4e38f71?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80",
active: true
},
{
id: 7,
title: "Blockchain et Cryptomonnaies",
category: "tech",
description: "Comprendre les bases de la blockchain et son application dans les cryptomonnaies.",
duration: "5h",
level: "Intermédiaire",
progress: 20,
image: "https://images.unsplash.com/photo-1620891549027-942fdc95d3f5?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80",
active: true
},
{
id: 8,
title: "Growth Hacking",
category: "business",
description: "Techniques avancées pour accélérer la croissance de votre entreprise.",
duration: "4h30",
level: "Avancé",
progress: 75,
image: "https://images.unsplash.com/photo-1551434678-e076c223a692?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80",
active: true
}
];
// DOM elements
const courseGrid = document.getElementById('courseGrid');
const autoLoadContainer = document.getElementById('autoLoadContainer');
const filterAll = document.getElementById('filterAll');
const filterTech = document.getElementById('filterTech');
const filterBusiness = document.getElementById('filterBusiness');
const filterDesign = document.getElementById('filterDesign');
// Current filter
let currentFilter = 'all';
// Function to render courses
function renderCourses(filter = 'all') {
courseGrid.innerHTML = '';
const filteredCourses = filter === 'all'
? courses.filter(course => course.active)
: courses.filter(course => course.category === filter && course.active);
filteredCourses.forEach(course => {
const progressPercentage = course.progress;
const progressCircumference = 2 * Math.PI * 14;
const progressOffset = progressCircumference - (progressPercentage / 100) * progressCircumference;
const courseCard = document.createElement('div');
courseCard.className = 'course-card bg-white shadow-md';
courseCard.innerHTML = `
<div class="relative">
<img src="${course.image}" alt="${course.title}" class="w-full h-48 object-cover">
<div class="absolute top-2 right-2 bg-white bg-opacity-90 px-2 py-1 rounded-full text-xs font-medium">
${course.duration}
</div>
${course.active ? '<div class="absolute top-2 left-2 bg-green-500 text-white text-xs px-2 py-1 rounded-full">Actif</div>' : ''}
</div>
<div class="p-6">
<div class="flex justify-between items-start mb-2">
<h3 class="font-bold text-lg text-gray-800">${course.title}</h3>
<div class="text-xs px-2 py-1 rounded-full ${getLevelColor(course.level)}">
${course.level}
</div>
</div>
<p class="text-gray-600 text-sm mb-4">${course.description}</p>
<div class="flex items-center justify-between">
<div class="flex items-center">
<div class="relative w-8 h-8 mr-3">
<svg class="w-8 h-8" viewBox="0 0 36 36">
<circle cx="18" cy="18" r="14" fill="none" stroke="#e6e6e6" stroke-width="3"></circle>
<circle class="progress-ring" cx="18" cy="18" r="14" fill="none" stroke="#48bb78" stroke-width="3" stroke-dasharray="${progressCircumference}" stroke-dashoffset="${progressOffset}"></circle>
</svg>
<div class="absolute inset-0 flex items-center justify-center text-xs font-bold">
${progressPercentage}%
</div>
</div>
<span class="text-xs text-gray-500">Progression</span>
</div>
<button class="text-green-600 hover:text-green-800 transition">
<i class="fas fa-arrow-right"></i>
</button>
</div>
</div>
`;
courseGrid.appendChild(courseCard);
});
}
// Helper function for level colors
function getLevelColor(level) {
switch(level.toLowerCase()) {
case 'débutant': return 'bg-green-100 text-green-800';
case 'intermédiaire': return 'bg-blue-100 text-blue-800';
case 'avancé': return 'bg-purple-100 text-purple-800';
default: return 'bg-gray-100 text-gray-800';
}
}
// Filter event listeners
filterAll.addEventListener('click', () => {
currentFilter = 'all';
updateFilters();
simulateAutoLoad();
});
filterTech.addEventListener('click', () => {
currentFilter = 'tech';
updateFilters();
simulateAutoLoad();
});
filterBusiness.addEventListener('click', () => {
currentFilter = 'business';
updateFilters();
simulateAutoLoad();
});
filterDesign.addEventListener('click', () => {
currentFilter = 'design';
updateFilters();
simulateAutoLoad();
});
// Update filter buttons
function updateFilters() {
filterAll.className = 'px-4 py-2 rounded-full bg-gray-200 text-gray-700 hover:bg-gray-300 transition';
filterTech.className = 'px-4 py-2 rounded-full bg-gray-200 text-gray-700 hover:bg-gray-300 transition';
filterBusiness.className = 'px-4 py-2 rounded-full bg-gray-200 text-gray-700 hover:bg-gray-300 transition';
filterDesign.className = 'px-4 py-2 rounded-full bg-gray-200 text-gray-700 hover:bg-gray-300 transition';
switch(currentFilter) {
case 'all':
filterAll.className = 'px-4 py-2 rounded-full bg-green-600 text-white font-medium';
break;
case 'tech':
filterTech.className = 'px-4 py-2 rounded-full bg-green-600 text-white font-medium';
break;
case 'business':
filterBusiness.className = 'px-4 py-2 rounded-full bg-green-600 text-white font-medium';
break;
case 'design':
filterDesign.className = 'px-4 py-2 rounded-full bg-green-600 text-white font-medium';
break;
}
}
// Simulate auto-loading
function simulateAutoLoad() {
autoLoadContainer.classList.add('loading');
setTimeout(() => {
renderCourses(currentFilter);
autoLoadContainer.classList.remove('loading');
// Set up intersection observer for infinite scroll
setupObserver();
}, 1500);
}
// Infinite scroll observer
function setupObserver() {
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
// Simulate loading more courses
setTimeout(() => {
autoLoadContainer.classList.add('loading');
setTimeout(() => {
// In a real app, we would fetch more data here
autoLoadContainer.classList.remove('loading');
}, 1000);
}, 500);
}
});
}, { threshold: 0.1 });
observer.observe(autoLoadContainer);
}
// Initial render
updateFilters();
simulateAutoLoad();
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=docto41/edubot" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>