Skip to Content
Browse all templates at capricorn.build →

Pulse CRM Dashboard

Production-ready CRM dashboard template built with Next.js 16, React 19, and Tailwind CSS v4. Includes sales pipeline, lead management, customer CRUD, and a full auth flow.

Overview

Pulse is designed for SaaS founders, developers, and agencies who need a modern CRM dashboard with complete sales pipeline management, lead tracking, customer management, and team collaboration features — all with light and dark mode support.

Live Preview: View Demo 

Tech Stack

TechnologyVersionPurpose
Next.js16.1.6React framework (App Router)
React19.2.3UI library
TypeScript5.xType safety
Tailwind CSS4.xStyling
Framer Motion12.xAnimations & transitions
Recharts3.xCharts & data visualization
Phosphor Icons2.xIcon library
next-themes0.4.xLight/dark mode
clsx + tailwind-mergeClass name utilities

Quick Start

cd pulse-crm npm install npm run dev # Open http://localhost:3000

Pages Included (20+)

Auth Pages

PageRouteDescription
Login/loginEmail/password with social login (Google, GitHub, Facebook)
Sign Up/signupRegistration with terms acceptance
Forgot Password/forgot-passwordPassword reset request
Reset Password/reset-passwordNew password form
Verify Email/verify-emailEmail verification screen
Onboarding/onboarding4-step guided setup wizard

Dashboard Pages

PageRouteDescription
Overview/dashboard/overviewRevenue chart, stats, active deals, latest leads, activity feed
Leads/dashboard/leadsLead list with filtering, search, and status management
Lead Detail/dashboard/leads/[id]Individual lead view with drawer
Sales/dashboard/salesSales pipeline with deal stages and filtering
Sale Detail/dashboard/sales/[id]Individual deal view with drawer
Customers/dashboard/customersCustomer table with search, filter, sort, and pagination
Customer Detail/dashboard/customers/[id]Full customer profile
Edit Customer/dashboard/customers/[id]/editCustomer edit form
Add Customer/dashboard/customers/addNew customer form
Calendar/dashboard/calendarInteractive calendar view
Activity/dashboard/activityActivity log with filtering
Settings/dashboard/settingsApp settings page

Project Structure

pulse-crm/ ├── app/ │ ├── layout.tsx # Root layout (fonts, ThemeProvider) │ ├── page.tsx # Redirects to /login │ ├── (auth)/ # Auth route group │ │ ├── layout.tsx # Auth layout wrapper │ │ ├── login/page.tsx # Login page │ │ ├── signup/page.tsx # Registration page │ │ ├── forgot-password/page.tsx # Forgot password │ │ ├── reset-password/page.tsx # Reset password │ │ ├── verify-email/page.tsx # Email verification │ │ └── onboarding/page.tsx # 4-step onboarding wizard │ └── dashboard/ │ ├── layout.tsx # Dashboard layout (sidebar + header) │ ├── overview/page.tsx # Main dashboard │ ├── leads/ │ │ ├── page.tsx # Leads list │ │ └── [id]/page.tsx # Lead detail │ ├── sales/ │ │ ├── page.tsx # Sales pipeline │ │ └── [id]/page.tsx # Deal detail │ ├── customers/ │ │ ├── page.tsx # Customers table │ │ ├── [id]/page.tsx # Customer profile │ │ ├── [id]/edit/page.tsx # Edit customer │ │ └── add/page.tsx # Add customer │ ├── calendar/page.tsx # Calendar view │ ├── activity/page.tsx # Activity log │ └── settings/page.tsx # Settings ├── components/ │ ├── ui/ # Base UI primitives │ │ ├── Button.tsx │ │ ├── Input.tsx │ │ ├── Select.tsx │ │ ├── Textarea.tsx │ │ ├── Modal.tsx │ │ ├── Drawer.tsx │ │ ├── Dropdown.tsx │ │ ├── Badge.tsx │ │ ├── Avatar.tsx │ │ ├── Checkbox.tsx │ │ ├── Toggle.tsx │ │ ├── RadioGroup.tsx │ │ ├── TagInput.tsx │ │ ├── Progress.tsx │ │ ├── Toast.tsx │ │ ├── IconButton.tsx │ │ ├── ActionMenu.tsx │ │ ├── FormSection.tsx │ │ ├── DeleteConfirmModal.tsx │ │ └── Icons.tsx # Phosphor icon re-exports │ ├── dashboard/ # Dashboard-specific components │ │ ├── StatCard.tsx # Metric cards │ │ ├── RevenueChart.tsx # Revenue line/bar chart │ │ ├── ActiveDeals.tsx # Deals summary widget │ │ ├── LatestLeads.tsx # Recent leads widget │ │ ├── ActivityFeed.tsx # Activity timeline │ │ ├── PageHeader.tsx # Page title + breadcrumbs │ │ ├── PageHeaderActions.tsx # Header action buttons │ │ ├── FilterBar.tsx # Table filter controls │ │ ├── CustomersTable.tsx # Customers data table │ │ ├── CustomerDrawer.tsx # Customer detail drawer │ │ ├── LeadDrawer.tsx # Lead detail drawer │ │ ├── Pagination.tsx # Table pagination │ │ ├── ActivityRow.tsx # Activity list item │ │ ├── TableHeader.tsx # Sortable table header │ │ ├── TableFooter.tsx # Table footer with stats │ │ └── EmptyState.tsx # Empty state placeholder │ ├── features/ # Feature-specific components │ │ ├── ThemeProvider.tsx # Dark/light mode provider │ │ ├── CommandPalette.tsx # ⌘K command palette │ │ ├── NotificationsDropdown.tsx # Notifications panel │ │ ├── CalendarDropdown.tsx # Mini calendar widget │ │ ├── UpgradeCard.tsx # Sidebar upgrade CTA │ │ ├── AddLeadModal.tsx # Create new lead │ │ ├── ConvertLeadModal.tsx # Convert lead to customer │ │ ├── AddDealModal.tsx # Create new deal │ │ ├── DealDrawer.tsx # Deal detail drawer │ │ ├── FilterDealsModal.tsx # Deal filtering modal │ │ ├── MarkDealWonModal.tsx # Mark deal as won │ │ ├── MarkDealLostModal.tsx # Mark deal as lost │ │ ├── LogActivityModal.tsx # Log an activity │ │ ├── ScheduleMeetingModal.tsx # Schedule a meeting │ │ ├── CompleteMeetingModal.tsx # Complete meeting details │ │ ├── CreateTaskModal.tsx # Create a task │ │ ├── CreateInvoiceModal.tsx # Create an invoice │ │ └── ActivityDetailDrawer.tsx # Activity detail view │ └── layout/ # Layout components │ ├── Sidebar.tsx # Collapsible sidebar + mobile │ ├── Header.tsx # Top header bar │ ├── SearchBar.tsx # Global search (⌘K trigger) │ ├── HeaderContext.tsx # Header state context │ └── SidebarContext.tsx # Sidebar state context ├── hooks/ │ ├── useClickOutside.ts # Click outside handler │ └── usePageHeader.ts # Page header helper ├── lib/ │ ├── utils.ts # cn() utility │ └── data/ # Mock data │ ├── activities.ts # Activity records │ ├── calendar.ts # Calendar events │ ├── customers.ts # Customer records │ ├── leads.ts # Lead records │ └── sales.ts # Sales/deal records └── styles/ └── globals.css # Theme variables & Tailwind

Fonts

Pulse uses three Google Fonts loaded via next/font:

FontCSS VariableUsage
Figtree--font-figtreePrimary sans-serif (body text, UI)
Onest--font-onestHeadings & marketing copy
Instrument Serif--font-serifBrand logo & decorative text

Dark Mode

Pulse includes full dark mode support powered by next-themes:

// app/layout.tsx import { ThemeProvider } from "@/components/features"; <ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange > {children} </ThemeProvider>

The theme toggle is built into the dashboard header. All components use Tailwind’s dark: variant for styling.


Components

UI Components (20+)

Base primitives used throughout the application:

import { Button, Input, Select, Textarea, Modal, Drawer, Dropdown, Badge, Avatar, Checkbox, Toggle, RadioGroup, TagInput, Progress, Toast, IconButton, ActionMenu, FormSection, DeleteConfirmModal, } from "@/components/ui";

Dashboard Components

Widgets and data display components:

import { StatCard, RevenueChart, ActiveDeals, LatestLeads, ActivityFeed, PageHeader, FilterBar, CustomersTable, CustomerDrawer, LeadDrawer, Pagination, EmptyState, } from "@/components/dashboard";

Feature Components

Complex feature-specific components:

import { CommandPalette, NotificationsDropdown, AddLeadModal, ConvertLeadModal, AddDealModal, DealDrawer, LogActivityModal, ScheduleMeetingModal, CreateTaskModal, CreateInvoiceModal, } from "@/components/features";

Layout Components

import { Sidebar, MobileSidebar } from "@/components/layout"; import { Header } from "@/components/layout"; import { SearchBar } from "@/components/layout";

Icons

Pulse uses Phosphor Icons v2. Browse available icons at phosphoricons.com .

Icons are re-exported from components/ui/Icons.tsx for convenience:

import { MagnifyingGlassIcon, PlusIcon, ArrowRightIcon, CalendarBlankIcon, CurrencyDollarIcon, UsersThreeIcon, GearSixIcon, BellIcon, // ... and more } from "@/components/ui";

Data Layer

Pulse uses TypeScript mock data files in lib/data/ that simulate a real backend. Replace these with your actual API calls when connecting to a backend.

Leads (lib/data/leads.ts)

import { leads, leadStatusConfig, getLeadScoreStyle } from "@/lib/data/leads";

Sales/Deals (lib/data/sales.ts)

import { deals, dealStages, dealStatusConfig } from "@/lib/data/sales";

Customers (lib/data/customers.ts)

import { customers } from "@/lib/data/customers";

Activities (lib/data/activities.ts)

import { activities } from "@/lib/data/activities";

Calendar (lib/data/calendar.ts)

import { calendarEvents } from "@/lib/data/calendar";

Styling

Theme Variables (styles/globals.css)

@import "tailwindcss"; :root { --background: #ffffff; --foreground: #0a0a0a; } .dark { --background: #0a0a0a; --foreground: #fafafa; }

Tailwind v4 Theme (styles/globals.css)

@theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --font-sans: var(--font-figtree); --font-serif: var(--font-serif); --font-onest: var(--font-onest); }

Pulse uses Tailwind’s neutral color palette (neutral-50 through neutral-950) with blue accent colors for interactive elements.


Key Features

Onboarding Wizard

A 4-step guided setup flow:

  1. Profile Setup — Company name, size, role, and goals
  2. Invite Team — Add team members by email with role assignment
  3. Import Data — CSV upload and CRM migration options
  4. Preferences — Currency, fiscal year, notifications, and calendar integration

Command Palette

Press ⌘K (or Ctrl+K) to open the global command palette for quick navigation across the dashboard.

Auth Flow

Complete authentication screens including:

  • Login with social providers (Google, GitHub, Facebook)
  • Registration with password strength validation
  • Email verification
  • Forgot/reset password flow

Customization Checklist

  1. app/layout.tsx — Update metadata (title, description)
  2. styles/globals.css — Brand colors and theme variables
  3. lib/data/*.ts — Replace mock data with real API calls
  4. components/layout/Sidebar.tsx — Navigation items and branding
  5. components/layout/Header.tsx — Header branding
  6. app/(auth)/*.tsx — Auth pages branding and copy
  7. public/images/ — Replace placeholder images and logos

Deployment

Pulse works with any Next.js hosting:

npm run build npm start

Support


Quick Links:

Last updated on