Bootstrap Simple Admin Template Free Codepen →

<div class="container-fluid px-0"> <div class="row g-0"> <!-- SIDEBAR - The admin navigation story begins --> <div class="col-md-3 col-lg-2 admin-sidebar"> <div class="sidebar-brand d-flex align-items-center"> <i class="bi bi-stars"></i> <span>AdminStory</span> </div> <div class="mt-4"> <a href="#" class="nav-link-custom active d-block" id="nav-dashboard"> <i class="bi bi-speedometer2"></i> Dashboard </a> <a href="#" class="nav-link-custom d-block" id="nav-analytics"> <i class="bi bi-graph-up"></i> Analytics </a> <a href="#" class="nav-link-custom d-block" id="nav-orders"> <i class="bi bi-bag-check"></i> Orders </a> <a href="#" class="nav-link-custom d-block" id="nav-customers"> <i class="bi bi-people"></i> Customers </a> <a href="#" class="nav-link-custom d-block" id="nav-settings"> <i class="bi bi-gear"></i> Settings </a> </div> <div class="position-absolute bottom-0 start-0 p-3 d-none d-lg-block" style="opacity:0.6;"> <small class="text-white-50"><i class="bi bi-dot"></i> v2.0 · Bootstrap Admin</small> </div> </div>

// --- simple interactive "story" navigation: highlight active link & small dynamic content update (cosmetic) const navLinks = document.querySelectorAll('.nav-link-custom'); const mainTitle = document.querySelector('.greeting-highlight'); const subtitleEl = document.querySelector('.text-secondary-emphasis');

<!-- Orders Table: A crucial part of the admin story --> <div class="story-card card mb-5"> <div class="card-header bg-transparent border-bottom d-flex flex-wrap justify-content-between align-items-center"> <h5 class="fw-semibold mb-0"><i class="bi bi-receipt"></i> Latest Orders & Story Insights</h5> <a href="#" class="btn btn-sm btn-outline-primary rounded-pill">View all <i class="bi bi-arrow-right-short"></i></a> </div> <div class="card-body p-0"> <div class="table-responsive"> <table class="table table-hover align-middle mb-0 table-custom"> <thead> <tr><th>Order ID</th><th>Customer</th><th>Product</th><th>Amount</th><th>Status</th><th>Story moment</th></tr> </thead> <tbody> <tr><td>#OR-9842</td><td><i class="bi bi-person-circle me-1"></i> Michael Chen</td><td>Analytics Pro</td><td>$249.00</td><td><span class="badge bg-success bg-opacity-10 text-success px-3 py-1 rounded-pill">Completed</span></td><td><i class="bi bi-trophy"></i> First-time buyer</td></tr> <tr><td>#OR-9843</td><td><i class="bi bi-person-circle me-1"></i> Jessica Walsh</td><td>Bootstrap UI Kit</td><td>$89.00</td><td><span class="badge bg-warning bg-opacity-15 text-warning px-3 py-1 rounded-pill">Pending</span></td><td><i class="bi bi-hourglass-split"></i> Awaiting payment</td></tr> <tr><td>#OR-9845</td><td><i class="bi bi-person-circle me-1"></i> David Kim</td><td>Admin Template</td><td>$149.00</td><td><span class="badge bg-success bg-opacity-10 text-success px-3 py-1 rounded-pill">Shipped</span></td><td><i class="bi bi-truck"></i> On the way</td></tr> <tr><td>#OR-9847</td><td><i class="bi bi-person-circle me-1"></i> Sophia Rodriguez</td><td>Data Story Pack</td><td>$399.00</td><td><span class="badge bg-primary bg-opacity-10 text-primary px-3 py-1 rounded-pill">Processing</span></td><td><i class="bi bi-arrow-repeat"></i> Review stage</td></tr> <tr><td>#OR-9850</td><td><i class="bi bi-person-circle me-1"></i> Liam O'Sullivan</td><td>Chart.js Pro</td><td>$59.00</td><td><span class="badge bg-success bg-opacity-10 text-success px-3 py-1 rounded-pill">Completed</span></td><td><i class="bi bi-gift"></i> Referral bonus</td></tr> </tbody> </table> </div> </div> <div class="card-footer bg-transparent small text-secondary"> 📖 The admin story unfolds: more than 230 orders processed this month. </div> </div> bootstrap simple admin template free codepen

navLinks.forEach(link => link.addEventListener('click', (e) => e.preventDefault(); const id = link.getAttribute('id'); if (id) setActive(id); ); );

<footer class="mt-5 pt-3 pb-2 text-center text-secondary small"> <i class="bi bi-bootstrap-fill me-1"></i> Bootstrap Simple Admin Template | Free Story Edition — Crafted for CodePen & modern dashboards </footer> </div> </div> </div> Here\'s your latest performance & narrative

<!-- Story section: CHARTS + RECENT ACTIVITIES (narrative core) --> <div class="row g-4 mb-5"> <div class="col-lg-7"> <div class="story-card card h-100 p-3"> <div class="card-header bg-transparent border-0 pt-2 pb-0 d-flex justify-content-between align-items-center"> <h5 class="fw-semibold mb-0"><i class="bi bi-bar-chart-steps me-2"></i> Weekly Performance Story</h5> <span class="badge bg-light text-dark">Last 7 days</span> </div> <div class="card-body"> <canvas id="revenueChart" height="200" style="max-height: 240px; width: 100%"></canvas> </div> <div class="card-footer bg-transparent border-top-0 text-muted small"> 📈 Sales narrative: Strong mid-week growth driven by summer campaign. </div> </div> </div> <div class="col-lg-5"> <div class="story-card card h-100 p-3"> <div class="card-header bg-transparent border-0 pt-2 pb-0"> <h5 class="fw-semibold mb-0"><i class="bi bi-clock-history me-2"></i> Recent Story Events</h5> </div> <div class="card-body p-0 pt-2"> <ul class="list-group list-group-flush"> <li class="list-group-item d-flex align-items-center border-0 ps-0 pt-2 pb-2"> <i class="bi bi-check-circle-fill text-success me-3"></i> <div><strong>New user registration</strong> — +342 signups today</div> </li> <li class="list-group-item d-flex align-items-center border-0 ps-0 pt-2 pb-2"> <i class="bi bi-cart-check text-primary me-3"></i> <div><strong>Order #2369</strong> completed — High-value purchase</div> </li> <li class="list-group-item d-flex align-items-center border-0 ps-0 pt-2 pb-2"> <i class="bi bi-megaphone-fill text-warning me-3"></i> <div><strong>Marketing story</strong> — Email campaign launched</div> </li> <li class="list-group-item d-flex align-items-center border-0 ps-0 pt-2 pb-2"> <i class="bi bi-star-fill text-info me-3"></i> <div><strong>Product feedback</strong> — 4.8★ average rating</div> </li> <li class="list-group-item d-flex align-items-center border-0 ps-0 pt-2 pb-2"> <i class="bi bi-person-check-fill text-secondary me-3"></i> <div><strong>Support ticket resolved</strong> — 98% satisfaction</div> </li> </ul> </div> </div> </div> </div>

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <title>Bootstrap Simple Admin | Dashboard Story</title> <!-- Bootstrap 5 + Icons + Fonts --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"> <!-- Google Fonts: Inter for clean modern feel --> <link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,300;14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet"> <!-- Chart.js CDN (lightweight, beautiful analytics) --> <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script> <style> * font-family: 'Inter', sans-serif; body background: #f4f7fc; overflow-x: hidden; /* SIDEBAR STORY: elegant glassmorphism style */ .admin-sidebar background: linear-gradient(145deg, #0f2b3d 0%, #1a3a4f 100%); min-height: 100vh; box-shadow: 8px 0 20px rgba(0,0,0,0.06); transition: all 0.2s ease; .sidebar-brand font-size: 1.6rem; font-weight: 700; letter-spacing: -0.3px; color: white; border-bottom: 1px solid rgba(255,255,255,0.15); padding: 1.2rem 1rem; .sidebar-brand i font-size: 1.8rem; margin-right: 10px; background: rgba(255,255,255,0.2); padding: 8px; border-radius: 14px; .nav-link-custom color: #e0edf5; padding: 0.75rem 1rem; margin: 0.3rem 0.8rem; border-radius: 16px; transition: all 0.2s; font-weight: 500; .nav-link-custom i width: 28px; font-size: 1.25rem; margin-right: 10px; .nav-link-custom:hover, .nav-link-custom.active background: rgba(255,255,255,0.2); color: white; transform: translateX(4px); /* main content cards & storytelling */ .story-card border: none; border-radius: 28px; background: white; box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05), 0 8px 10px -6px rgba(0, 0, 0, 0.02); transition: transform 0.2s, box-shadow 0.2s; .story-card:hover transform: translateY(-3px); box-shadow: 0 20px 30px -12px rgba(0, 0, 0, 0.1); .stats-icon width: 54px; height: 54px; border-radius: 20px; display: flex; align-items: center; justify-content: center; font-size: 1.8rem; .bg-soft-primary background-color: #eef2ff; color: #2c5f8a; .bg-soft-success background-color: #e3f7ec; color: #2b7e3a; .bg-soft-warning background-color: #fff3e0; color: #c97e0a; .bg-soft-info background-color: #e1f0fa; color: #1f6e8c; .table-custom th font-weight: 600; background-color: #f9fbfd; border-bottom-width: 1px; color: #1e2f3e; .badge-soft padding: 0.35rem 0.85rem; border-radius: 40px; font-weight: 500; footer border-top: 1px solid #e2edf2; color: #5f7f90; @media (max-width: 768px) .admin-sidebar min-height: auto; margin-bottom: 1rem; .sidebar-brand text-align: center; .greeting-highlight background: linear-gradient(135deg, #1e4663, #0f2f44); -webkit-background-clip: text; background-clip: text; color: transparent; </style> </head> <body> Here\'s your latest performance & narrative.'

function setActive(activeId) navLinks.forEach(link => link.classList.remove('active'); if (link.id === activeId) link.classList.add('active'); ); // Change story context based on section (just a playful narrative effect) if (activeId === 'nav-dashboard') if (mainTitle) mainTitle.innerHTML = '✨ Admin Dashboard — A Simple Bootstrap Story'; if (subtitleEl) subtitleEl.innerHTML = 'Welcome back, Olivia. Here\'s your latest performance & narrative.'; else if (activeId === 'nav-analytics') if (mainTitle) mainTitle.innerHTML = '📊 Analytics Story — Deep Data Insights'; if (subtitleEl) subtitleEl.innerHTML = 'Exploring growth metrics and conversion chapters.'; // scroll to chart for better experience document.querySelector('.story-card canvas')?.scrollIntoView( behavior: 'smooth', block: 'center' ); else if (activeId === 'nav-orders') if (mainTitle) mainTitle.innerHTML = '📦 Orders Chronicle — Transaction Stories'; if (subtitleEl) subtitleEl.innerHTML = 'Manage your latest orders and fulfillment narrative.'; document.querySelector('.table-responsive')?.scrollIntoView( behavior: 'smooth', block: 'start' ); else if (activeId === 'nav-customers') if (mainTitle) mainTitle.innerHTML = '👥 Customer Journey — People Behind the Story'; if (subtitleEl) subtitleEl.innerHTML = 'Discover your community: 1,429 new faces this month.'; // display small alert-like story const tempMsg = document.createElement('div'); tempMsg.className = 'alert alert-light story-card mt-2 d-flex align-items-center'; tempMsg.innerHTML = '<i class="bi bi-emoji-smile fs-4 me-2"></i> Customer story: Engagement rate +12% this week!'; const container = document.querySelector('.row.g-4.mb-5').parentNode; const existingAlert = document.querySelector('.temp-story-alert'); if(existingAlert) existingAlert.remove(); tempMsg.classList.add('temp-story-alert'); container.insertBefore(tempMsg, document.querySelector('.row.g-4.mb-5').nextSibling); setTimeout(() => if(tempMsg) tempMsg.style.opacity = '0'; setTimeout(() => tempMsg?.remove(), 800); , 3000); else if (activeId === 'nav-settings') if (mainTitle) mainTitle.innerHTML = '⚙️ Settings & Preferences — Tailor Your Story'; if (subtitleEl) subtitleEl.innerHTML = 'Customize your admin experience and theme narrative.';