This project delivers a production‑ready online learning admin platform with a premium 3D graduation‑cap brand system, dark/light theming, and fully responsive UX, backed by a hosted REST API wired to a MySQL database (host: sql207.infinityfree.com, user: if0_40314195, password: QClTpJOogkd, database: if0_40314195_learning_platform) for real‑time reads/writes across users, courses, enrollments, assignments, submissions, certificates, payments, and analytics; the dashboard surfaces KPIs (users, courses, enrollments, revenue), popularity and revenue trends, while management views provide search, sort, pagination, status/date filters, safe CRUD with confirmation modals, mobile‑first tables, non‑overlapping hamburger navigation, and a reliable SQL query tool with result export; accessibility is enforced via high‑contrast tokens, keyboard focus, ARIA labels, and overlay fixes (no persistent blur), performance is optimized with lazy loading and minified assets, and deployment ships with schema.sql, optional seed data, health checks, structured logging, and CORS, ensuring a polished, secure, and demo‑ready experience end to end.
fee3420
verified
| <html lang="en" class="dark"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>EduSphere Admin Dashboard</title> | |
| <link rel="stylesheet" href="style.css"> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> | |
| <script src="https://unpkg.com/feather-icons"></script> | |
| <script> | |
| tailwind.config = { | |
| theme: { | |
| extend: { | |
| colors: { | |
| primary: { | |
| 500: '#6366f1', | |
| }, | |
| secondary: { | |
| 500: '#8b5cf6', | |
| } | |
| } | |
| } | |
| } | |
| } | |
| </script> | |
| </head> | |
| <body class="bg-gray-50 dark:bg-gray-900 min-h-screen"> | |
| <custom-navbar></custom-navbar> | |
| <div class="flex"> | |
| <custom-sidebar></custom-sidebar> | |
| <main class="flex-1 p-6"> | |
| <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-6"> | |
| <!-- Stats Cards --> | |
| <div class="bg-white dark:bg-gray-800 rounded-lg shadow p-6"> | |
| <div class="flex items-center justify-between"> | |
| <div> | |
| <p class="text-gray-500 dark:text-gray-400">Total Students</p> | |
| <h3 class="text-2xl font-bold text-gray-800 dark:text-white">1,248</h3> | |
| </div> | |
| <div class="p-3 rounded-full bg-primary-500/10 text-primary-500"> | |
| <i data-feather="users"></i> | |
| </div> | |
| </div> | |
| <p class="text-green-500 text-sm mt-2">+12% from last month</p> | |
| </div> | |
| <div class="bg-white dark:bg-gray-800 rounded-lg shadow p-6"> | |
| <div class="flex items-center justify-between"> | |
| <div> | |
| <p class="text-gray-500 dark:text-gray-400">Active Courses</p> | |
| <h3 class="text-2xl font-bold text-gray-800 dark:text-white">36</h3> | |
| </div> | |
| <div class="p-3 rounded-full bg-secondary-500/10 text-secondary-500"> | |
| <i data-feather="book"></i> | |
| </div> | |
| </div> | |
| <p class="text-green-500 text-sm mt-2">+2 new this month</p> | |
| </div> | |
| <div class="bg-white dark:bg-gray-800 rounded-lg shadow p-6"> | |
| <div class="flex items-center justify-between"> | |
| <div> | |
| <p class="text-gray-500 dark:text-gray-400">Revenue</p> | |
| <h3 class="text-2xl font-bold text-gray-800 dark:text-white">$24,780</h3> | |
| </div> | |
| <div class="p-3 rounded-full bg-green-500/10 text-green-500"> | |
| <i data-feather="dollar-sign"></i> | |
| </div> | |
| </div> | |
| <p class="text-green-500 text-sm mt-2">+8% from last month</p> | |
| </div> | |
| <div class="bg-white dark:bg-gray-800 rounded-lg shadow p-6"> | |
| <div class="flex items-center justify-between"> | |
| <div> | |
| <p class="text-gray-500 dark:text-gray-400">Certificates Issued</p> | |
| <h3 class="text-2xl font-bold text-gray-800 dark:text-white">423</h3> | |
| </div> | |
| <div class="p-3 rounded-full bg-yellow-500/10 text-yellow-500"> | |
| <i data-feather="award"></i> | |
| </div> | |
| </div> | |
| <p class="text-green-500 text-sm mt-2">+15% from last month</p> | |
| </div> | |
| </div> | |
| <!-- Charts Section --> | |
| <div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-6"> | |
| <div class="bg-white dark:bg-gray-800 rounded-lg shadow p-6"> | |
| <div class="flex items-center justify-between mb-4"> | |
| <h2 class="text-lg font-semibold text-gray-800 dark:text-white">Enrollment Trends</h2> | |
| <div class="flex space-x-2"> | |
| <button class="px-3 py-1 text-sm bg-gray-100 dark:bg-gray-700 rounded">Monthly</button> | |
| <button class="px-3 py-1 text-sm text-gray-500 dark:text-gray-400">Yearly</button> | |
| </div> | |
| </div> | |
| <div class="h-64"> | |
| <!-- Chart placeholder --> | |
| <div class="flex items-center justify-center h-full bg-gray-100 dark:bg-gray-700 rounded"> | |
| <p class="text-gray-500">Chart will appear here</p> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="bg-white dark:bg-gray-800 rounded-lg shadow p-6"> | |
| <div class="flex items-center justify-between mb-4"> | |
| <h2 class="text-lg font-semibold text-gray-800 dark:text-white">Course Popularity</h2> | |
| <div class="flex space-x-2"> | |
| <button class="px-3 py-1 text-sm bg-gray-100 dark:bg-gray-700 rounded">By Enrollments</button> | |
| <button class="px-3 py-1 text-sm text-gray-500 dark:text-gray-400">By Revenue</button> | |
| </div> | |
| </div> | |
| <div class="h-64"> | |
| <!-- Chart placeholder --> | |
| <div class="flex items-center justify-center h-full bg-gray-100 dark:bg-gray-700 rounded"> | |
| <p class="text-gray-500">Chart will appear here</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Recent Activity --> | |
| <div class="bg-white dark:bg-gray-800 rounded-lg shadow overflow-hidden"> | |
| <div class="px-6 py-4 border-b border-gray-200 dark:border-gray-700"> | |
| <h2 class="text-lg font-semibold text-gray-800 dark:text-white">Recent Activity</h2> | |
| </div> | |
| <div class="divide-y divide-gray-200 dark:divide-gray-700"> | |
| <!-- Activity Item --> | |
| <div class="p-4 hover:bg-gray-50 dark:hover:bg-gray-700"> | |
| <div class="flex items-center"> | |
| <div class="flex-shrink-0"> | |
| <img class="h-10 w-10 rounded-full" src="http://static.photos/people/200x200/1" alt=""> | |
| </div> | |
| <div class="ml-4"> | |
| <p class="text-sm font-medium text-gray-900 dark:text-white">Sarah Johnson enrolled in <span class="text-primary-500">Advanced JavaScript</span></p> | |
| <p class="text-sm text-gray-500 dark:text-gray-400">2 hours ago</p> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- More activity items --> | |
| <div class="p-4 hover:bg-gray-50 dark:hover:bg-gray-700"> | |
| <div class="flex items-center"> | |
| <div class="flex-shrink-0"> | |
| <i data-feather="award" class="h-10 w-10 p-2 rounded-full bg-yellow-500/10 text-yellow-500"></i> | |
| </div> | |
| <div class="ml-4"> | |
| <p class="text-sm font-medium text-gray-900 dark:text-white">Certificate issued to <span class="text-primary-500">Michael Chen</span></p> | |
| <p class="text-sm text-gray-500 dark:text-gray-400">5 hours ago</p> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="p-4 hover:bg-gray-50 dark:hover:bg-gray-700"> | |
| <div class="flex items-center"> | |
| <div class="flex-shrink-0"> | |
| <i data-feather="dollar-sign" class="h-10 w-10 p-2 rounded-full bg-green-500/10 text-green-500"></i> | |
| </div> | |
| <div class="ml-4"> | |
| <p class="text-sm font-medium text-gray-900 dark:text-white">Payment received from <span class="text-primary-500">Emma Rodriguez</span></p> | |
| <p class="text-sm text-gray-500 dark:text-gray-400">1 day ago</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="px-6 py-3 bg-gray-50 dark:bg-gray-700 text-center"> | |
| <a href="#" class="text-sm font-medium text-primary-500 hover:text-primary-700 dark:hover:text-primary-400">View all activity</a> | |
| </div> | |
| </div> | |
| </main> | |
| </div> | |
| <script src="components/navbar.js"></script> | |
| <script src="components/sidebar.js"></script> | |
| <script src="script.js"></script> | |
| <script>feather.replace();</script> | |
| <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script> | |
| </body> | |
| </html> |