开源项目第192期:shadcn-admin — Vite + shadcn/ui 构建的后台管理界面参考集

引言

"每次做项目都要重新搭后台 UI,干脆把这些页面整理成一个可复用的参考集。"

这是「每日一个开源项目」系列的第 192 篇 。今天的项目是 shadcn-admin ------ satnaing 开源的后台管理界面参考集,基于 shadcn/ui + Vite + TanStack Router 构建。

13,900 颗 Star,MIT 许可。

先说清楚定位:README 里明确写着"This is not a starter project (template) though."------这不是一个开箱即用的脚手架,而是一套 UI 参考集合,展示如何用 shadcn/ui 组合出常见的后台管理界面。你可以直接 clone 来看效果、借鉴结构、复用组件,但它没有配好后端接口、没有业务逻辑,不能直接当项目模板用。

这个定位反而让它更有价值:干净、专注 UI、没有业务耦合。

你会学到什么

  • 为什么选 Vite + TanStack Router 而不是 Next.js
  • shadcn/ui 的底层逻辑:为什么它不是"组件库"
  • 项目包含的 10+ 页面和核心组件
  • RTL 支持的实现方式
  • 与 Ant Design / MUI 后台模板的差异

前提知识

  • 了解 React 基础
  • 用过 Tailwind CSS
  • 知道 shadcn/ui 是什么(或愿意了解)

先理解 shadcn/ui

shadcn/ui 经常被误解为"一个组件库",安装后 import 使用。它不是。

shadcn/ui 的模式是:把组件源码直接复制到你的项目里

bash 复制代码
npx shadcn@latest add button
# 执行后,Button 组件的完整源码出现在你的 src/components/ui/button.tsx
# 这个文件完全属于你,可以随意修改

底层是 Radix UI (提供无障碍交互逻辑)+ Tailwind CSS(提供样式)。你拿到的是可以直接编辑的源代码,不是封装好的黑盒。

这个模式的直接结果:样式完全可控,无障碍访问开箱即有,Bundle 里只有你实际用到的组件。

shadcn-admin 建立在这个基础上,因此整个项目的组件层都是透明可改的。


为什么是 Vite 而不是 Next.js

绝大多数后台管理模板用 Next.js。shadcn-admin 选择了 Vite + TanStack Router,理由很直接:

后台管理系统通常不需要 SSR。

大多数内部工具、管理后台都是需要登录才能访问的 SPA------没有 SEO 需求,没有首屏 SSR 加速的收益,反而带着 Next.js 的服务端复杂性(API Routes、Server Components、服务器部署需求)。

Vite 构建的纯前端 SPA:

  • 构建速度快(HMR 毫秒级)
  • 部署简单(静态文件,Netlify/Vercel/CDN 都行)
  • 没有 Node.js 服务器依赖
  • Bundle 更小

TanStack Router(前身是 React Router v6 的增强版)提供了类型安全的路由,在 TypeScript 项目里比 Next.js App Router 的文件路由更易控制。


页面结构

已认证路由(登录后可访问)

页面 内容
Dashboard 数据概览,统计卡片,图表,近期活动
Tasks 任务列表,过滤、排序、状态管理,DataTable 组件展示
Users 用户管理,搜索、分页、角色列表
Chats 即时消息界面,对话列表 + 聊天区
Apps 应用/集成管理页
Settings 多 Tab 设置:账户、通知、外观、显示、安全、快捷键
Help Center 帮助文档/FAQ 页

认证页面

  • 登录(Sign In)
  • 注册(Sign Up)
  • 忘记密码(Forgot Password)
  • OTP 验证
  • 另有 Clerk 认证集成版本(/clerk 路由下)

错误页面

  • 401 未授权
  • 403 禁止访问
  • 404 页面不存在
  • 500 服务器错误
  • 503 服务不可用

核心组件

侧边栏导航

使用 shadcn/ui 内置的 Sidebar 组件,可折叠,支持嵌套菜单,配合顶部 Header 构成完整的页面框架。

全局搜索(Command)

Cmd+K(macOS)/ Ctrl+K 呼出全局搜索命令面板,基于 shadcn/ui 的 <Command> 组件,支持键盘导航。这是后台系统里高频但经常被忽视的功能。

DataTable

基于 TanStack Table(前身 React Table)封装的数据表格:

  • 列排序
  • 多条件过滤
  • 分页控制
  • 行选择
  • 列显示/隐藏切换

Tasks 和 Users 页面都用这个组件,是后台开发最常用的复杂组件之一。

主题切换

亮色/暗色模式切换,使用 CSS 变量驱动,shadcn/ui 的标准方案。


RTL 支持

这是 shadcn-admin 区别于大多数同类项目的功能------对阿拉伯语、希伯来语、波斯语等从右到左书写语言的完整支持。

实现方式不是简单地加一个 dir="rtl" 属性,而是对多个 shadcn/ui 组件进行了针对性的定制修改:

专项 RTL 改造的组件alert-dialogcalendarcommanddialogdropdown-menuselecttablesheetsidebarswitch

这些组件在 RTL 模式下有方向性的 UI 元素(图标位置、下拉方向、动画方向等),需要单独处理。

注意 :如果后续用 npx shadcn add 更新这些组件,会覆盖 RTL 改动,需要手动合并。


安装和使用

bash 复制代码
git clone https://github.com/satnaing/shadcn-admin.git
cd shadcn-admin
pnpm install
pnpm run dev

Clerk 认证集成需要配置环境变量:

bash 复制代码
cp .env.example .env
# 填入 Clerk 的 PUBLISHABLE_KEY 和 SECRET_KEY

不用 Clerk 的话,项目里有不依赖 Clerk 的认证页面版本(/sign-in/sign-up 等),直接用就行。


shadcn-admin vs 常见后台模板

维度 shadcn-admin Ant Design Pro AdminLTE
UI 基础 Radix UI + Tailwind(无样式组件) Ant Design(重样式) Bootstrap
构建工具 Vite Umi.js Webpack
路由 TanStack Router Umi 路由 无(jQuery 时代)
RTL 深度支持 基础支持 有限支持
无障碍 Radix UI 原生保证 部分支持 基础
定制自由度 极高(组件源码在你项目里) 受限(import 黑盒) 受限
TypeScript 完整支持 完整支持
定位 UI 参考集合 生产脚手架 生产模板
Stars 13.9k 37k+ 11k+

项目地址与资源


总结

shadcn-admin 的价值在于它的定位选择:不做脚手架,做参考集

大多数后台模板追求开箱即用,代价是耦合了大量你不需要的东西------认证方案、状态管理、API 层、权限系统......一旦你的需求和模板的预设不同,改造成本比从零开始还高。

shadcn-admin 只给你 UI 层------精心实现的界面结构、组件组合方式、响应式布局,以及 RTL 等细节处理。业务逻辑自己决定怎么加。

Vite + TanStack Router 的技术选型让它比 Next.js 模板更轻,适合后台管理这类 SEO 不重要、部署简单优先的场景。shadcn/ui 的"源码归你"模式保证了定制自由度。

13,900 Stars 说明这个方向是对的:开发者要的不是又一个捆绑了一切的后台框架,而是一套干净的 UI 参考,自己决定怎么组合。


探索 PrimeSkills ------ 精选 AI Agent 与技能的市场,每一个都经过真实企业工作流验证,去掉浮夸,留下真正有用的。

欢迎访问我的个人主页,发现更多有价值的见解和有趣的产品。

相关推荐
fthux2 小时前
装闭 RenoPit 源码解析(14):Demo模式、健康检查与Docker部署
人工智能·ai·开源·github·open source·renopit
TunerT_TQ2 小时前
Meta React 源码静态评测:从 4540 个源文件看 React Compiler 的工程化演进
meta·开源·github
越千年3 小时前
A 股行情插件开源了,还带老板模式
开源·工具
梦梦代码精4 小时前
基于UniApp+Vue3+ThinkPHP 8,这套知识付费系统的架构设计有点东西
java·低代码·docker·uni-app·开源·php
tedcloud1235 小时前
book-to-skill 怎么部署?把技术书和项目文档变成 AI Agent 可复用知识
linux·运维·服务器·人工智能·开源
zhonyu鱼6 小时前
Kodi:开源免费的家庭影院与媒体中心,打造私人电影库
开源·开源软件·媒体
孔明click338 小时前
Sa-Token v1.46.0 发布 🚀,来看看有没有令你心动的功能!
java·sa-token·开源·springboot·权限认证
zhonyu鱼8 小时前
Home Assistant:开源的智能家居自动化平台,统一控制全屋设备
开源·自动化·智能家居
省长9 小时前
Sa-Token v1.46.0 发布 🚀,来看看有没有令你心动的功能!
java·后端·开源