图表以 SVG 路径直接绘制,不引入图表库
pulse-nextjs-dashboard-template — Next.js 后台模板
作者 haider484991
Pulse 是一个基于 Next.js 与 Tailwind CSS 的免费后台仪表盘模板,用 SVG 手绘图表替代图表库,并附带可排序表格、登录界面外壳与深色模式。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 2
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
两个数据系列的颜色经过色觉缺陷与对比度校验,深色模式使用独立色值
表格支持排序与搜索,排序状态通过 aria-sort 暴露
登录页为纯 UI 外壳,明确标注不执行真实认证
静态导出,可部署到任意静态托管
站点配置与数据分别集中在 config/site.ts 和 lib/data.ts
模板详细介绍
Pulse 是一个面向后台数据界面的 React 仪表盘模板,采用 Next.js App Router 与静态导出(output: "export"),样式使用 Tailwind CSS,全部代码为 TypeScript。页面结构由侧边栏加顶栏组成,在 lg 断点以下折叠为覆盖式抽屉。
图表部分不依赖 Recharts、Chart.js 或 D3,而是根据数据计算 SVG 路径直接绘制。折线图提供悬停十字准线与提示框、多系列图例,以及“以表格查看”的切换入口,使数据在不看图时也能读取。表格支持排序与搜索,排序状态通过 aria-sort 暴露给屏幕阅读器,宽表格在自身容器内横向滚动。
配色方面,两个数据系列的颜色在明暗两种模式下都经过色觉缺陷与对比度校验,深色模式使用单独选定的色值而非简单反转。状态徽章同时使用颜色与文字,统计卡片的增减量附带箭头图标和屏幕阅读器标签。
登录页 components/LoginForm.tsx 是纯 UI 外壳,模板本身为静态导出,无法验证密码,需要自行接入 Auth.js、Clerk 或 Supabase Auth 等认证服务。若加入真实会话,应将受保护路由移出静态导出,因为客户端重定向不构成访问控制。
站点名称、导航和当前用户配置集中在 config/site.ts,图表与表格数据集中在 lib/data.ts 并带有类型定义,替换为真实 API 数据主要涉及该文件。新增页面需创建 app/<route>/page.tsx,用 Shell 组件包裹并加入 siteConfig.nav。
适合你的项目吗?
适用场景
- 需要快速搭建后台数据看板界面原型的项目
- 希望避免引入图表库、控制前端依赖体积的仪表盘
- 需要可排序、可搜索数据表格的管理界面
- 需要无障碍支持(色觉缺陷、屏幕阅读器)的数据展示页面
适合人群
- 使用 Next.js 与 Tailwind CSS 的前端项目
- 需要静态部署的后台仪表盘
- 对图表依赖体积敏感的数据界面
- 需要自行接入认证服务的后台模板起点
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
克隆仓库后执行 npm install 与 npm run dev,默认在 http://localhost:3000 启动
- 2
站点名称、导航与用户信息在 config/site.ts 中修改,图表与表格数据在 lib/data.ts 中替换
- 3
登录页为 UI 外壳,需自行接入 Auth.js、Clerk 或 Supabase Auth 等认证服务
- 4
若加入真实会话,应将受保护路由移出静态导出,客户端重定向不构成访问控制
- 5
执行 npm run build 生成 /out 目录,可部署到任意静态托管
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 登录页仅为 UI 外壳,不执行真实认证;如需登录功能,必须自行接入 Auth.js、Clerk 或 Supabase Auth 等外部认证服务。
- 若加入真实会话,必须将受保护路由移出静态导出配置,因为客户端重定向不构成访问控制。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
Wire `handleSubmit` to Auth.js, Clerk, or Supabase Auth.
README 原文
https://github.com/haider484991/pulse-nextjs-dashboard-template/blob/main/LICENSEhttps://github.com/haider484991/pulse-nextjs-dashboard-template/blob/main/README.mdif you add real sessions, move the protected routes off `output: "export"`
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-13。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 85 / 100
- 技术栈
- Next.js · React
- 网站类型
- 后台
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-08-21
- 截图检查日期
- 2026-10-13
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: [email protected] · 2026-10-13
查看当时使用的来源资料
SHA-256: 91d61d89876cb48b793197b96d994a5ea30dfdc993f178a07acc4c5400575a21
2026-10-13T11:26:47.579Z
来源文件 / 仓库# 📊 Pulse — Free React Admin Dashboard Template
**A production-ready admin dashboard built with Next.js 15, TypeScript, and Tailwind CSS v4.** Charts with no chart library, a sortable data table, an auth shell, and a dark mode that was designed rather than inverted.
**[Live demo →](https://pixelandoak-pulse.pages.dev)**
**[Template page →](https://pixelandoak.com/templates/react-dashboard-template/)**

## Charts with zero dependencies
Most dashboard templates pull in Recharts, Chart.js, or D3 — 40–120kB of JavaScript to draw a line. Pulse draws its charts as SVG paths computed from the data. **No chart library. Total JS for the whole dashboard: ~109kB including React.**
You get a real chart, not a compromise:
- **Crosshair + tooltip** on hover, with values for both series
- **Legend** always present for two or more series, so colour is never the only channel carrying meaning
- **`<table>` fallback** behind a "View as table" toggle — the data is reachable without seeing the chart
- **Recessive grid**, 2px strokes, 8px markers with a surface ring so they stay legible over the line
## The colours are validated, not chosen by eye
This is the part almost every template gets wrong. The two series hues were checked against a colour-vision-deficiency model and a contrast model **before** being used, in both light and dark mode:
| Check | Light | Dark |
| --- | --- | --- |
| CVD separation (protan) | ΔE 24.7 | ΔE 26.8 |
| Normal-vision separation | ΔE 33.6 | ΔE 31.8 |
| Contrast vs surface | ≥ 3:1 ✅ | ≥ 3:1 ✅ |
Roughly 1 in 12 men has some form of colour blindness. A blue/orange pair that clears these thresholds is readable by all of them; the red/green pair most dashboards ship with is not.
**Dark mode is selected, not flipped.** The dark series colours are different hex values (`#3987e5` / `#d95926`), re-stepped for the dark surface — not the light colours shown on a dark background, which is what an automatic inversion gives you and why so many dark dashboards look muddy.
If you change `--series-1` or `--series-2` in `app/globals.css`, re-validate the pair rather than trusting your eye.
## Everything else
- 📐 **App shell** — sidebar + topbar, collapsing to an overlay drawer below `lg` (the layout most admin templates get wrong on phones)
- 🔢 **Sortable, searchable table** — `aria-sort` announced to screen readers, wide tables scroll in their own container so the page never scrolls sideways
- 🔐 **Auth shell** — a real login UI, honestly labelled as UI-only. See below
- 🏷️ **Status badges** — colour *and* text, never colour alone; status hues are reserved and can't be mistaken for a data series
- 📈 **Stat tiles** — deltas ship an arrow glyph plus a screen-reader label, so direction never depends on red vs green
- 🌙 **Real dark mode** — class strategy, localStorage, OS detection, no flash
- 📦 **Static export** — deploys free to any static host
## A note on the login page
`components/LoginForm.tsx` is a UI shell **on purpose**. This template is a static export: it cannot verify a password, and a login screen that appears to authenticate but doesn't is worse than none at all.
Wire `handleSubmit` to Auth.js, Clerk, or Supabase Auth. And when you do: if you add real sessions, move the protected routes off `output: "export"` — a client-side redirect is not access control, it is a speed bump.
## Quick start
```bash
git clone https://github.com/haider484991/pulse-nextjs-dashboard-template.git my-dashboard
```
```bash
cd my-dashboard && npm install && npm run dev
```
Open [http://localhost:3000](http://localhost:3000).
## Make it yours
Product name, navigation, and the signed-in user live in **`config/site.ts`**. All chart and table data lives in **`lib/data.ts`**, typed:
```ts
export type Point = { label: string; revenue: number; expenses: number };
export const monthly: Point[] = [
{ label: "Jan", revenue: 42_000, expenses: 31_000 },
// …
];
```
Every component is typed against those shapes, so swapping the mock data for your API is a one-file change.
To add a page: create `app/<route>/page.tsx`, wrap it in `<Shell current="/<route>/" title="…">`, and add an entry to `siteConfig.nav`.
## Deploy
```bash
npm run build
```
Emits `/out`:
```bash
npx wrangler pages deploy out
```
Netlify, Vercel, GitHub Pages, and any static host work identically.
## Tech
Next.js 15 (App Router, static export) · React 19 · TypeScript · Tailwind CSS v4 · **no chart library, no table library, no UI library.**
## License
MIT — free for personal and commercial use. Attribution appreciated but not required.
---
Built by [Pixel & Oak](https://pixelandoak.com/templates/react-dashboard-template/) — web design and AI development studio.
More free templates: [Nova (blog)](https://github.com/haider484991/nova-nextjs-blog-template) · [LaunchPad (SaaS)](https://github.com/haider484991/launchpad-nextjs-saas-template) · [Table & Fork (restaurant)](https://github.com/haider484991/tablefork-nextjs-restaurant-template) · [Lumen (photography)](https://github.com/haider484991/lumen-nextjs-photography-template) · [Ignite (startup)](https://github.com/haider484991/ignite-nextjs-startup-template)
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

next-shadcn-dashboard-starter
Free, open source, AI-friendly admin dashboard template built with Next.js 16, shadcn/ui, Tailwind CSS, and Ty…
Next.js · 后台

Studio Admin · Radix UI
Modern Admin Dashboard Template built with Shadcn UI and Next.js 16
Next.js · 后台

free-nextjs-admin-dashboard
TailAdmin is a Next.js and Tailwind CSS free, open-source admin dashboard template. Provides developers with t…
Next.js · 后台

materio-mui-nextjs-admin-template-free
An enterprise-grade Next.js admin dashboard template. Made with developer experience first: Next.js v14 (App R…
Next.js · 后台

nextjs-postgres-nextauth-tailwindcss-template
Admin dashboard template.
Next.js · 后台

shadcn-dashboard-landing-template
Accelerate your development with a sleek, open-source admin dashboard and landing page built on Vite-React, Ne…
Next.js · 后台
