# CRM Dashboard
> CRM dashboard with sales pipeline, contacts list, activities feed, and deal tracking
> 세일즈 파이프라인, 연락처 목록, 활동 피드, 딜 추적이 포함된 CRM 대시보드

**Category**: Dashboard | **Tags**: crm, sales, pipeline, contacts, deals | **Difficulty**: Intermediate

## Preview
```
+--------------------------------------------------+
|  CRM           Search...   [+ New Deal]  [Avatar] |
+--------------------------------------------------+
| Revenue $124K | Deals 47 | Win Rate 34% | Avg $8K |
+--------------------------------------------------+
|                                                    |
| Pipeline:                                          |
| Lead(12)  |  Qualified(8)  |  Proposal(5) | Won(3)|
| [card]    |  [card]        |  [card]      | [card]|
| [card]    |  [card]        |              |       |
|                                                    |
| Recent Activity:                                   |
| - Email sent to John @ Acme Corp    2h ago         |
| - Call completed with Sarah @ TechCo 4h ago        |
+--------------------------------------------------+
```

## Quick Start
```bash
# 1. Copy HTML to index.html
# 2. Replace sample deals/contacts with your CRM data
# 3. Wire up the pipeline stages to drag-and-drop (add Sortable.js)
```

## Full Code

```html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>CRM Dashboard</title>
  <script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-50 dark:bg-gray-900 text-gray-900 dark:text-gray-100 min-h-screen">

  <div class="max-w-7xl mx-auto px-4 py-6">
    <!-- Header -->
    <div class="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4 mb-6">
      <h1 class="text-2xl font-bold">Sales Pipeline</h1>
      <div class="flex gap-2">
        <input type="text" placeholder="Search deals..." class="px-4 py-2 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 w-48">
        <button class="px-4 py-2 bg-blue-600 text-white rounded-lg text-sm font-medium hover:bg-blue-700 transition">+ New Deal</button>
      </div>
    </div>

    <!-- KPI Row -->
    <div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
      <div class="bg-white dark:bg-gray-800 rounded-xl p-4 border border-gray-200 dark:border-gray-700">
        <div class="text-xs text-gray-500 uppercase tracking-wide">Pipeline Value</div>
        <div class="text-2xl font-bold mt-1">$124,500</div>
        <div class="text-xs text-green-600 mt-1">+18% this month</div>
      </div>
      <div class="bg-white dark:bg-gray-800 rounded-xl p-4 border border-gray-200 dark:border-gray-700">
        <div class="text-xs text-gray-500 uppercase tracking-wide">Active Deals</div>
        <div class="text-2xl font-bold mt-1">47</div>
        <div class="text-xs text-gray-400 mt-1">12 new this week</div>
      </div>
      <div class="bg-white dark:bg-gray-800 rounded-xl p-4 border border-gray-200 dark:border-gray-700">
        <div class="text-xs text-gray-500 uppercase tracking-wide">Win Rate</div>
        <div class="text-2xl font-bold mt-1">34%</div>
        <div class="text-xs text-green-600 mt-1">+3% vs last quarter</div>
      </div>
      <div class="bg-white dark:bg-gray-800 rounded-xl p-4 border border-gray-200 dark:border-gray-700">
        <div class="text-xs text-gray-500 uppercase tracking-wide">Avg Deal Size</div>
        <div class="text-2xl font-bold mt-1">$8,200</div>
        <div class="text-xs text-gray-400 mt-1">Median: $5,500</div>
      </div>
    </div>

    <!-- Pipeline Board -->
    <div class="flex gap-4 overflow-x-auto pb-4 mb-8">
      <!-- Lead -->
      <div class="min-w-[280px] flex-shrink-0">
        <div class="flex items-center justify-between mb-3">
          <h3 class="font-semibold text-sm">Lead <span class="text-gray-400">(12)</span></h3>
          <span class="text-xs text-gray-400">$34,200</span>
        </div>
        <div class="space-y-3">
          <div class="bg-white dark:bg-gray-800 rounded-lg p-4 border border-gray-200 dark:border-gray-700 cursor-grab hover:shadow-md transition">
            <div class="flex justify-between items-start mb-2">
              <h4 class="font-medium text-sm">Website Redesign</h4>
              <span class="text-xs font-bold text-blue-600">$12,000</span>
            </div>
            <p class="text-xs text-gray-500">Acme Corp</p>
            <div class="mt-3 flex items-center justify-between">
              <div class="flex items-center gap-1"><div class="w-5 h-5 bg-blue-500 rounded-full flex items-center justify-center text-white text-[9px] font-bold">JD</div><span class="text-xs text-gray-400">John</span></div>
              <span class="text-xs text-gray-400">3 days ago</span>
            </div>
          </div>
          <div class="bg-white dark:bg-gray-800 rounded-lg p-4 border border-gray-200 dark:border-gray-700 cursor-grab hover:shadow-md transition">
            <div class="flex justify-between items-start mb-2">
              <h4 class="font-medium text-sm">API Integration</h4>
              <span class="text-xs font-bold text-blue-600">$8,500</span>
            </div>
            <p class="text-xs text-gray-500">TechFlow Inc</p>
            <div class="mt-3 flex items-center justify-between">
              <div class="flex items-center gap-1"><div class="w-5 h-5 bg-emerald-500 rounded-full flex items-center justify-center text-white text-[9px] font-bold">SK</div><span class="text-xs text-gray-400">Sarah</span></div>
              <span class="text-xs text-gray-400">1 day ago</span>
            </div>
          </div>
        </div>
      </div>

      <!-- Qualified -->
      <div class="min-w-[280px] flex-shrink-0">
        <div class="flex items-center justify-between mb-3">
          <h3 class="font-semibold text-sm">Qualified <span class="text-gray-400">(8)</span></h3>
          <span class="text-xs text-gray-400">$42,000</span>
        </div>
        <div class="space-y-3">
          <div class="bg-white dark:bg-gray-800 rounded-lg p-4 border-l-4 border-l-blue-500 border border-gray-200 dark:border-gray-700 cursor-grab hover:shadow-md transition">
            <div class="flex justify-between items-start mb-2">
              <h4 class="font-medium text-sm">Cloud Migration</h4>
              <span class="text-xs font-bold text-blue-600">$25,000</span>
            </div>
            <p class="text-xs text-gray-500">GlobalBank Ltd</p>
            <div class="mt-2">
              <div class="flex gap-1 mb-1"><span class="px-1.5 py-0.5 bg-blue-100 text-blue-700 text-[10px] rounded">Enterprise</span><span class="px-1.5 py-0.5 bg-green-100 text-green-700 text-[10px] rounded">Hot</span></div>
            </div>
            <div class="mt-2 flex items-center justify-between">
              <div class="flex items-center gap-1"><div class="w-5 h-5 bg-purple-500 rounded-full flex items-center justify-center text-white text-[9px] font-bold">MP</div><span class="text-xs text-gray-400">Maya</span></div>
              <span class="text-xs text-gray-400">Today</span>
            </div>
          </div>
        </div>
      </div>

      <!-- Proposal -->
      <div class="min-w-[280px] flex-shrink-0">
        <div class="flex items-center justify-between mb-3">
          <h3 class="font-semibold text-sm">Proposal <span class="text-gray-400">(5)</span></h3>
          <span class="text-xs text-gray-400">$28,500</span>
        </div>
        <div class="space-y-3">
          <div class="bg-white dark:bg-gray-800 rounded-lg p-4 border-l-4 border-l-amber-500 border border-gray-200 dark:border-gray-700 cursor-grab hover:shadow-md transition">
            <div class="flex justify-between items-start mb-2">
              <h4 class="font-medium text-sm">Mobile App MVP</h4>
              <span class="text-xs font-bold text-blue-600">$18,000</span>
            </div>
            <p class="text-xs text-gray-500">HealthStart Co</p>
            <div class="mt-2"><div class="text-xs text-amber-600 font-medium">Proposal sent 2d ago</div></div>
            <div class="mt-2 flex items-center justify-between">
              <div class="flex items-center gap-1"><div class="w-5 h-5 bg-blue-500 rounded-full flex items-center justify-center text-white text-[9px] font-bold">JD</div><span class="text-xs text-gray-400">John</span></div>
              <span class="text-xs text-amber-500">Follow up tomorrow</span>
            </div>
          </div>
        </div>
      </div>

      <!-- Won -->
      <div class="min-w-[280px] flex-shrink-0">
        <div class="flex items-center justify-between mb-3">
          <h3 class="font-semibold text-sm">Won <span class="text-gray-400">(3)</span></h3>
          <span class="text-xs text-green-500">$19,800</span>
        </div>
        <div class="space-y-3">
          <div class="bg-white dark:bg-gray-800 rounded-lg p-4 border-l-4 border-l-green-500 border border-gray-200 dark:border-gray-700">
            <div class="flex justify-between items-start mb-2">
              <h4 class="font-medium text-sm">Dashboard Build</h4>
              <span class="text-xs font-bold text-green-600">$9,800</span>
            </div>
            <p class="text-xs text-gray-500">DataViz Solutions</p>
            <div class="mt-2"><span class="text-xs text-green-600 font-medium">Closed Mar 25</span></div>
          </div>
        </div>
      </div>
    </div>

    <!-- Activity Feed -->
    <div class="bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700">
      <div class="p-4 border-b border-gray-200 dark:border-gray-700"><h2 class="font-semibold">Recent Activity</h2></div>
      <div class="divide-y divide-gray-200 dark:divide-gray-700">
        <div class="px-4 py-3 flex items-start gap-3">
          <div class="w-8 h-8 bg-blue-100 dark:bg-blue-900/30 rounded-full flex items-center justify-center text-blue-600 text-sm flex-shrink-0 mt-0.5">&#9993;</div>
          <div class="flex-1"><p class="text-sm"><span class="font-medium">John</span> sent proposal to <span class="font-medium">HealthStart Co</span></p><p class="text-xs text-gray-400 mt-0.5">Mobile App MVP - $18,000</p></div>
          <span class="text-xs text-gray-400 flex-shrink-0">2h ago</span>
        </div>
        <div class="px-4 py-3 flex items-start gap-3">
          <div class="w-8 h-8 bg-green-100 dark:bg-green-900/30 rounded-full flex items-center justify-center text-green-600 text-sm flex-shrink-0 mt-0.5">&#9742;</div>
          <div class="flex-1"><p class="text-sm"><span class="font-medium">Sarah</span> completed call with <span class="font-medium">TechFlow Inc</span></p><p class="text-xs text-gray-400 mt-0.5">API Integration - Moved to Qualified</p></div>
          <span class="text-xs text-gray-400 flex-shrink-0">4h ago</span>
        </div>
        <div class="px-4 py-3 flex items-start gap-3">
          <div class="w-8 h-8 bg-purple-100 dark:bg-purple-900/30 rounded-full flex items-center justify-center text-purple-600 text-sm flex-shrink-0 mt-0.5">&#127942;</div>
          <div class="flex-1"><p class="text-sm"><span class="font-medium">Maya</span> closed deal with <span class="font-medium">DataViz Solutions</span></p><p class="text-xs text-gray-400 mt-0.5">Dashboard Build - $9,800 won</p></div>
          <span class="text-xs text-gray-400 flex-shrink-0">1d ago</span>
        </div>
      </div>
    </div>
  </div>

</body>
</html>
```

## Customization Guide
- **Pipeline stages**: Add/remove columns (e.g., "Negotiation", "Lost") by duplicating a column block
- **Deal cards**: Add fields like probability, next action, tags
- **Drag and drop**: Add Sortable.js for interactive pipeline management: `<script src="https://cdn.jsdelivr.net/npm/sortablejs"></script>`
- **Activity feed**: Connect to your CRM webhook events
- **Color coding**: Use border-left colors to indicate deal priority or stage
- **Revenue forecasting**: Add a weighted pipeline value (deal amount x probability)

## 2026 Trend Notes
- Kanban-style pipeline board is the standard CRM visualization pattern
- Horizontal scroll with `overflow-x-auto` handles many pipeline stages on mobile
- Deal cards with avatar, tags, and time indicators provide context at a glance
- Activity feed with icon types (email, call, win) follows the timeline pattern
- KPI row at the top gives immediate executive-level overview
