gesco-2 / index.html
elsecond's picture
Add 2 files
d521517 verified
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Système de Gestion Scolaire - RDC</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>
.sidebar {
transition: all 0.3s ease;
}
.sidebar.collapsed {
width: 70px;
}
.sidebar.collapsed .nav-text {
display: none;
}
.sidebar.collapsed .logo-text {
display: none;
}
.main-content {
transition: all 0.3s ease;
}
.sidebar.collapsed + .main-content {
margin-left: 70px;
}
.active-nav {
background-color: #3b82f6;
color: white !important;
}
.active-nav i {
color: white !important;
}
.dropdown-content {
display: none;
transition: all 0.3s ease;
}
.show-dropdown {
display: block;
}
.chart-container {
position: relative;
height: 300px;
}
.notification-badge {
position: absolute;
top: -5px;
right: -5px;
}
.fade-in {
animation: fadeIn 0.3s ease-in-out;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
</style>
</head>
<body class="bg-gray-100 font-sans">
<div class="flex h-screen overflow-hidden">
<!-- Sidebar -->
<div class="sidebar bg-blue-800 text-white w-64 flex flex-col">
<!-- Logo -->
<div class="p-4 flex items-center justify-between border-b border-blue-700">
<div class="flex items-center">
<i class="fas fa-graduation-cap text-2xl mr-3"></i>
<span class="logo-text text-xl font-bold">EduRDC</span>
</div>
<button id="toggleSidebar" class="text-white focus:outline-none">
<i class="fas fa-bars"></i>
</button>
</div>
<!-- User Profile -->
<div class="p-4 flex items-center border-b border-blue-700">
<img src="https://randomuser.me/api/portraits/men/1.jpg" alt="Profile" class="w-10 h-10 rounded-full mr-3">
<div class="nav-text">
<div class="font-medium">Admin User</div>
<div class="text-xs text-blue-200">Administrateur</div>
</div>
</div>
<!-- Navigation -->
<nav class="flex-1 overflow-y-auto">
<div class="p-2">
<div class="mb-2 nav-text text-xs uppercase text-blue-300 px-4 py-2">Menu Principal</div>
<a href="#" class="nav-item flex items-center px-4 py-3 text-blue-100 hover:bg-blue-700 rounded-lg mb-1 active-nav">
<i class="fas fa-tachometer-alt mr-3"></i>
<span class="nav-text">Tableau de Bord</span>
</a>
<div class="dropdown">
<a href="#" class="nav-item flex items-center justify-between px-4 py-3 text-blue-100 hover:bg-blue-700 rounded-lg mb-1" id="studentsDropdown">
<div class="flex items-center">
<i class="fas fa-users mr-3"></i>
<span class="nav-text">Élèves</span>
</div>
<i class="fas fa-chevron-down text-xs"></i>
</a>
<div class="dropdown-content pl-8">
<a href="#" class="block px-4 py-2 text-sm text-blue-100 hover:bg-blue-700 rounded-lg mb-1">Inscription</a>
<a href="#" class="block px-4 py-2 text-sm text-blue-100 hover:bg-blue-700 rounded-lg mb-1">Liste des élèves</a>
<a href="#" class="block px-4 py-2 text-sm text-blue-100 hover:bg-blue-700 rounded-lg mb-1">Suivi des présences</a>
</div>
</div>
<div class="dropdown">
<a href="#" class="nav-item flex items-center justify-between px-4 py-3 text-blue-100 hover:bg-blue-700 rounded-lg mb-1" id="gradesDropdown">
<div class="flex items-center">
<i class="fas fa-book mr-3"></i>
<span class="nav-text">Notes & Bilans</span>
</div>
<i class="fas fa-chevron-down text-xs"></i>
</a>
<div class="dropdown-content pl-8">
<a href="#" class="block px-4 py-2 text-sm text-blue-100 hover:bg-blue-700 rounded-lg mb-1">Saisie des notes</a>
<a href="#" class="block px-4 py-2 text-sm text-blue-100 hover:bg-blue-700 rounded-lg mb-1">Bulletins</a>
<a href="#" class="block px-4 py-2 text-sm text-blue-100 hover:bg-blue-700 rounded-lg mb-1">Statistiques</a>
</div>
</div>
<div class="dropdown">
<a href="#" class="nav-item flex items-center justify-between px-4 py-3 text-blue-100 hover:bg-blue-700 rounded-lg mb-1" id="financeDropdown">
<div class="flex items-center">
<i class="fas fa-money-bill-wave mr-3"></i>
<span class="nav-text">Gestion Financière</span>
</div>
<i class="fas fa-chevron-down text-xs"></i>
</a>
<div class="dropdown-content pl-8">
<a href="#" class="block px-4 py-2 text-sm text-blue-100 hover:bg-blue-700 rounded-lg mb-1">Facturation</a>
<a href="#" class="block px-4 py-2 text-sm text-blue-100 hover:bg-blue-700 rounded-lg mb-1">Suivi des paiements</a>
<a href="#" class="block px-4 py-2 text-sm text-blue-100 hover:bg-blue-700 rounded-lg mb-1">Rapports financiers</a>
</div>
</div>
<a href="#" class="nav-item flex items-center px-4 py-3 text-blue-100 hover:bg-blue-700 rounded-lg mb-1">
<i class="fas fa-chart-bar mr-3"></i>
<span class="nav-text">Statistiques</span>
</a>
<a href="#" class="nav-item flex items-center px-4 py-3 text-blue-100 hover:bg-blue-700 rounded-lg mb-1">
<i class="fas fa-envelope mr-3"></i>
<span class="nav-text">Communication</span>
<span class="ml-auto bg-red-500 text-white text-xs font-bold px-2 py-1 rounded-full notification-badge">3</span>
</a>
<div class="mt-4 nav-text text-xs uppercase text-blue-300 px-4 py-2">Administration</div>
<a href="#" class="nav-item flex items-center px-4 py-3 text-blue-100 hover:bg-blue-700 rounded-lg mb-1">
<i class="fas fa-cog mr-3"></i>
<span class="nav-text">Paramètres</span>
</a>
<a href="#" class="nav-item flex items-center px-4 py-3 text-blue-100 hover:bg-blue-700 rounded-lg mb-1">
<i class="fas fa-question-circle mr-3"></i>
<span class="nav-text">Support</span>
</a>
</div>
</nav>
<!-- Collapse Button -->
<div class="p-4 border-t border-blue-700">
<button id="logoutBtn" class="w-full flex items-center justify-center px-4 py-2 bg-blue-700 hover:bg-blue-600 rounded-lg text-white">
<i class="fas fa-sign-out-alt mr-2"></i>
<span class="nav-text">Déconnexion</span>
</button>
</div>
</div>
<!-- Main Content -->
<div class="main-content flex-1 flex flex-col overflow-hidden ml-64">
<!-- Top Navigation -->
<header class="bg-white shadow-sm">
<div class="flex items-center justify-between px-6 py-4">
<h1 class="text-2xl font-bold text-gray-800">Tableau de Bord</h1>
<div class="flex items-center space-x-4">
<div class="relative">
<button id="notificationBtn" class="p-2 rounded-full hover:bg-gray-100 relative">
<i class="fas fa-bell text-gray-600"></i>
<span class="absolute top-0 right-0 bg-red-500 text-white text-xs font-bold px-1.5 py-0.5 rounded-full">5</span>
</button>
<div id="notificationDropdown" class="hidden absolute right-0 mt-2 w-80 bg-white rounded-md shadow-lg py-1 z-50 border border-gray-200">
<div class="px-4 py-2 border-b border-gray-200">
<h3 class="font-medium text-gray-800">Notifications</h3>
</div>
<div class="max-h-60 overflow-y-auto">
<a href="#" class="block px-4 py-3 hover:bg-gray-100 border-b border-gray-100">
<div class="flex items-start">
<div class="flex-shrink-0 bg-blue-100 p-2 rounded-full">
<i class="fas fa-user-graduate text-blue-600"></i>
</div>
<div class="ml-3">
<p class="text-sm font-medium text-gray-900">Nouvelle inscription</p>
<p class="text-xs text-gray-500">Un nouvel élève s'est inscrit en CM2</p>
</div>
</div>
</a>
<a href="#" class="block px-4 py-3 hover:bg-gray-100 border-b border-gray-100">
<div class="flex items-start">
<div class="flex-shrink-0 bg-green-100 p-2 rounded-full">
<i class="fas fa-money-bill-wave text-green-600"></i>
</div>
<div class="ml-3">
<p class="text-sm font-medium text-gray-900">Paiement reçu</p>
<p class="text-xs text-gray-500">M. Kabasele a payé les frais de scolarité</p>
</div>
</div>
</a>
<a href="#" class="block px-4 py-3 hover:bg-gray-100">
<div class="flex items-start">
<div class="flex-shrink-0 bg-yellow-100 p-2 rounded-full">
<i class="fas fa-exclamation-triangle text-yellow-600"></i>
</div>
<div class="ml-3">
<p class="text-sm font-medium text-gray-900">Absence non justifiée</p>
<p class="text-xs text-gray-500">3 élèves absents sans justification</p>
</div>
</div>
</a>
</div>
<div class="px-4 py-2 border-t border-gray-200">
<a href="#" class="text-sm font-medium text-blue-600 hover:text-blue-800">Voir toutes les notifications</a>
</div>
</div>
</div>
<div class="relative">
<button id="userMenuBtn" class="flex items-center space-x-2 focus:outline-none">
<img src="https://randomuser.me/api/portraits/men/1.jpg" alt="Profile" class="w-8 h-8 rounded-full">
<span class="hidden md:inline-block font-medium">Admin User</span>
<i class="fas fa-chevron-down text-xs"></i>
</button>
<div id="userMenuDropdown" class="hidden absolute right-0 mt-2 w-48 bg-white rounded-md shadow-lg py-1 z-50 border border-gray-200">
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">Mon Profil</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">Paramètres</a>
<div class="border-t border-gray-200"></div>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">Déconnexion</a>
</div>
</div>
</div>
</div>
</header>
<!-- Main Content Area -->
<main class="flex-1 overflow-y-auto p-6 bg-gray-50">
<!-- Stats Cards -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-6">
<div class="bg-white rounded-lg shadow p-6">
<div class="flex items-center">
<div class="p-3 rounded-full bg-blue-100 text-blue-600 mr-4">
<i class="fas fa-users text-xl"></i>
</div>
<div>
<p class="text-sm font-medium text-gray-500">Élèves inscrits</p>
<p class="text-2xl font-bold text-gray-800">1,248</p>
<p class="text-xs text-green-500">+12% depuis le mois dernier</p>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow p-6">
<div class="flex items-center">
<div class="p-3 rounded-full bg-green-100 text-green-600 mr-4">
<i class="fas fa-chalkboard-teacher text-xl"></i>
</div>
<div>
<p class="text-sm font-medium text-gray-500">Enseignants</p>
<p class="text-2xl font-bold text-gray-800">48</p>
<p class="text-xs text-green-500">+2 nouveaux cette année</p>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow p-6">
<div class="flex items-center">
<div class="p-3 rounded-full bg-purple-100 text-purple-600 mr-4">
<i class="fas fa-money-bill-wave text-xl"></i>
</div>
<div>
<p class="text-sm font-medium text-gray-500">Recettes mensuelles</p>
<p class="text-2xl font-bold text-gray-800">12,450,000 FC</p>
<p class="text-xs text-red-500">-5% par rapport au mois dernier</p>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow p-6">
<div class="flex items-center">
<div class="p-3 rounded-full bg-yellow-100 text-yellow-600 mr-4">
<i class="fas fa-graduation-cap text-xl"></i>
</div>
<div>
<p class="text-sm font-medium text-gray-500">Taux de réussite</p>
<p class="text-2xl font-bold text-gray-800">87%</p>
<p class="text-xs text-green-500">+3% par rapport à l'année dernière</p>
</div>
</div>
</div>
</div>
<!-- Charts and Tables -->
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-6">
<!-- Student Distribution Chart -->
<div class="bg-white rounded-lg shadow p-6 lg:col-span-2">
<div class="flex justify-between items-center mb-4">
<h2 class="text-lg font-semibold text-gray-800">Répartition des élèves par niveau</h2>
<div class="flex space-x-2">
<button class="px-3 py-1 text-xs bg-blue-100 text-blue-600 rounded-full">Année 2023-2024</button>
<button class="px-3 py-1 text-xs bg-gray-100 text-gray-600 rounded-full">Comparer</button>
</div>
</div>
<div class="chart-container">
<canvas id="studentDistributionChart"></canvas>
</div>
</div>
<!-- Recent Payments -->
<div class="bg-white rounded-lg shadow p-6">
<div class="flex justify-between items-center mb-4">
<h2 class="text-lg font-semibold text-gray-800">Paiements récents</h2>
<a href="#" class="text-sm text-blue-600 hover:text-blue-800">Voir tout</a>
</div>
<div class="space-y-4">
<div class="flex items-center">
<div class="p-2 rounded-full bg-green-100 text-green-600 mr-3">
<i class="fas fa-money-bill-wave"></i>
</div>
<div class="flex-1">
<p class="text-sm font-medium">M. Kabasele</p>
<p class="text-xs text-gray-500">Terminale A - 150,000 FC</p>
</div>
<span class="text-xs bg-green-100 text-green-800 px-2 py-1 rounded-full">Payé</span>
</div>
<div class="flex items-center">
<div class="p-2 rounded-full bg-green-100 text-green-600 mr-3">
<i class="fas fa-money-bill-wave"></i>
</div>
<div class="flex-1">
<p class="text-sm font-medium">Mme. Ngalula</p>
<p class="text-xs text-gray-500">4ème - 120,000 FC</p>
</div>
<span class="text-xs bg-green-100 text-green-800 px-2 py-1 rounded-full">Payé</span>
</div>
<div class="flex items-center">
<div class="p-2 rounded-full bg-yellow-100 text-yellow-600 mr-3">
<i class="fas fa-money-bill-wave"></i>
</div>
<div class="flex-1">
<p class="text-sm font-medium">M. Tshibangu</p>
<p class="text-xs text-gray-500">CM2 - 100,000 FC</p>
</div>
<span class="text-xs bg-yellow-100 text-yellow-800 px-2 py-1 rounded-full">En attente</span>
</div>
<div class="flex items-center">
<div class="p-2 rounded-full bg-red-100 text-red-600 mr-3">
<i class="fas fa-money-bill-wave"></i>
</div>
<div class="flex-1">
<p class="text-sm font-medium">Mme. Mbayo</p>
<p class="text-xs text-gray-500">6ème - 120,000 FC</p>
</div>
<span class="text-xs bg-red-100 text-red-800 px-2 py-1 rounded-full">En retard</span>
</div>
</div>
</div>
</div>
<!-- Recent Activities and Quick Actions -->
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
<!-- Recent Activities -->
<div class="bg-white rounded-lg shadow p-6 lg:col-span-2">
<div class="flex justify-between items-center mb-4">
<h2 class="text-lg font-semibold text-gray-800">Activités récentes</h2>
<a href="#" class="text-sm text-blue-600 hover:text-blue-800">Voir tout</a>
</div>
<div class="space-y-4">
<div class="flex items-start">
<div class="p-2 rounded-full bg-blue-100 text-blue-600 mr-3">
<i class="fas fa-user-plus"></i>
</div>
<div>
<p class="text-sm font-medium">Nouvelle inscription</p>
<p class="text-xs text-gray-500">Jean Kabasele s'est inscrit en Terminale A</p>
<p class="text-xs text-gray-400">Il y a 2 heures</p>
</div>
</div>
<div class="flex items-start">
<div class="p-2 rounded-full bg-green-100 text-green-600 mr-3">
<i class="fas fa-check-circle"></i>
</div>
<div>
<p class="text-sm font-medium">Paiement validé</p>
<p class="text-xs text-gray-500">M. Tshilombo a payé les frais de scolarité via Mobile Money</p>
<p class="text-xs text-gray-400">Aujourd'hui, 10:45</p>
</div>
</div>
<div class="flex items-start">
<div class="p-2 rounded-full bg-yellow-100 text-yellow-600 mr-3">
<i class="fas fa-exclamation-triangle"></i>
</div>
<div>
<p class="text-sm font-medium">Absence non justifiée</p>
<p class="text-xs text-gray-500">3 élèves absents en 5ème sans justification</p>
<p class="text-xs text-gray-400">Aujourd'hui, 08:30</p>
</div>
</div>
<div class="flex items-start">
<div class="p-2 rounded-full bg-purple-100 text-purple-600 mr-3">
<i class="fas fa-book"></i>
</div>
<div>
<p class="text-sm font-medium">Notes saisies</p>
<p class="text-xs text-gray-500">M. Kabongo a saisi les notes de mathématiques pour la 4ème</p>
<p class="text-xs text-gray-400">Hier, 16:20</p>
</div>
</div>
</div>
</div>
<!-- Quick Actions -->
<div class="bg-white rounded-lg shadow p-6">
<h2 class="text-lg font-semibold text-gray-800 mb-4">Actions rapides</h2>
<div class="grid grid-cols-2 gap-4">
<a href="#" class="p-4 bg-blue-50 rounded-lg text-center hover:bg-blue-100 transition">
<i class="fas fa-user-plus text-blue-600 text-xl mb-2"></i>
<p class="text-sm font-medium">Nouvel élève</p>
</a>
<a href="#" class="p-4 bg-green-50 rounded-lg text-center hover:bg-green-100 transition">
<i class="fas fa-money-bill-wave text-green-600 text-xl mb-2"></i>
<p class="text-sm font-medium">Enregistrer paiement</p>
</a>
<a href="#" class="p-4 bg-purple-50 rounded-lg text-center hover:bg-purple-100 transition">
<i class="fas fa-book text-purple-600 text-xl mb-2"></i>
<p class="text-sm font-medium">Saisir notes</p>
</a>
<a href="#" class="p-4 bg-yellow-50 rounded-lg text-center hover:bg-yellow-100 transition">
<i class="fas fa-envelope text-yellow-600 text-xl mb-2"></i>
<p class="text-sm font-medium">Envoyer message</p>
</a>
<a href="#" class="p-4 bg-red-50 rounded-lg text-center hover:bg-red-100 transition">
<i class="fas fa-file-pdf text-red-600 text-xl mb-2"></i>
<p class="text-sm font-medium">Générer rapport</p>
</a>
<a href="#" class="p-4 bg-indigo-50 rounded-lg text-center hover:bg-indigo-100 transition">
<i class="fas fa-cog text-indigo-600 text-xl mb-2"></i>
<p class="text-sm font-medium">Paramètres</p>
</a>
</div>
</div>
</div>
</main>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
// Toggle Sidebar
document.getElementById('toggleSidebar').addEventListener('click', function() {
document.querySelector('.sidebar').classList.toggle('collapsed');
});
// Toggle Dropdowns
const dropdowns = ['studentsDropdown', 'gradesDropdown', 'financeDropdown'];
dropdowns.forEach(id => {
document.getElementById(id).addEventListener('click', function(e) {
e.preventDefault();
const dropdownContent = this.nextElementSibling;
dropdownContent.classList.toggle('show-dropdown');
// Rotate chevron
const chevron = this.querySelector('.fa-chevron-down');
chevron.classList.toggle('transform');
chevron.classList.toggle('rotate-180');
});
});
// Toggle Notification Dropdown
document.getElementById('notificationBtn').addEventListener('click', function() {
document.getElementById('notificationDropdown').classList.toggle('hidden');
document.getElementById('notificationDropdown').classList.toggle('fade-in');
});
// Toggle User Menu Dropdown
document.getElementById('userMenuBtn').addEventListener('click', function() {
document.getElementById('userMenuDropdown').classList.toggle('hidden');
document.getElementById('userMenuDropdown').classList.toggle('fade-in');
});
// Close dropdowns when clicking outside
document.addEventListener('click', function(e) {
if (!e.target.closest('#notificationBtn') && !e.target.closest('#notificationDropdown')) {
document.getElementById('notificationDropdown').classList.add('hidden');
}
if (!e.target.closest('#userMenuBtn') && !e.target.closest('#userMenuDropdown')) {
document.getElementById('userMenuDropdown').classList.add('hidden');
}
});
// Chart.js - Student Distribution
const ctx = document.getElementById('studentDistributionChart').getContext('2d');
const studentDistributionChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['CP1', 'CP2', 'CE1', 'CE2', 'CM1', 'CM2', '6ème', '5ème', '4ème', '3ème', '2nde', '1ère', 'Tle'],
datasets: [{
label: 'Nombre d\'élèves',
data: [120, 115, 110, 105, 100, 95, 90, 85, 80, 75, 70, 65, 60],
backgroundColor: [
'rgba(59, 130, 246, 0.7)',
'rgba(59, 130, 246, 0.7)',
'rgba(59, 130, 246, 0.7)',
'rgba(59, 130, 246, 0.7)',
'rgba(59, 130, 246, 0.7)',
'rgba(59, 130, 246, 0.7)',
'rgba(16, 185, 129, 0.7)',
'rgba(16, 185, 129, 0.7)',
'rgba(16, 185, 129, 0.7)',
'rgba(16, 185, 129, 0.7)',
'rgba(139, 92, 246, 0.7)',
'rgba(139, 92, 246, 0.7)',
'rgba(139, 92, 246, 0.7)'
],
borderColor: [
'rgba(59, 130, 246, 1)',
'rgba(59, 130, 246, 1)',
'rgba(59, 130, 246, 1)',
'rgba(59, 130, 246, 1)',
'rgba(59, 130, 246, 1)',
'rgba(59, 130, 246, 1)',
'rgba(16, 185, 129, 1)',
'rgba(16, 185, 129, 1)',
'rgba(16, 185, 129, 1)',
'rgba(16, 185, 129, 1)',
'rgba(139, 92, 246, 1)',
'rgba(139, 92, 246, 1)',
'rgba(139, 92, 246, 1)'
],
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: true
}
},
plugins: {
legend: {
display: false
}
}
}
});
// Set active nav item
const navItems = document.querySelectorAll('.nav-item');
navItems.forEach(item => {
item.addEventListener('click', function(e) {
if (!this.classList.contains('dropdown')) {
navItems.forEach(i => i.classList.remove('active-nav'));
this.classList.add('active-nav');
}
});
});
</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=elsecond/gesco-2" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>