Skip to content

Ohh-889/skyroc-admin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,468 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Skyroc

License React TypeScript Vite pnpm Turborepo

一个跨端、分层、可复用的现代前端工程化平台。

中后台(Admin)是它的首个落地产物,React Native / 小程序 正在路上。


概述

Skyroc 不是一个"后台管理系统",而是一整套**「分层、跨端、可复用」的前端基础设施**。

你看到的应用(apps/*)只是一层薄壳,负责装配与业务页面;真正的能力沉淀在数十个 @skyroc/* workspace 包中——从平台无关的跨端内核(@core/*)、到 Web 工程套件(web/*)、再到 UI 组件库(@skyroc/web-ui),形成清晰的分层依赖关系。

Web 端已成熟稳定,跨端扩展(React Native / Expo、小程序)正在规划演进中。

为什么选择这套架构

  • 🧱 分层解耦 — Core 内核平台无关,Web Kit 按需组装,应用只写业务;层与层之间边界清晰,可独立演进
  • 🌐 跨端复用@core/* 系列严禁依赖 DOM/Web API,可在 Web、React Native、小程序之间共享状态、工具、请求、日志等核心逻辑
  • 🔧 统一工程化 — pnpm catalog 全局锁定依赖版本,Turborepo 任务缓存与并行编排,oxlint + oxfmt 毫秒级质量检查
  • 📦 开箱即用skyroc-admin 作为干净的起手模板,admin-example 内置完整功能 demo,pnpm create:admin 一键生成新项目

架构分层

┌──────────────────────────────────────────────────────────────────┐
│  Applications         apps/admin · apps/admin-example            │  业务薄壳
└──────────────────────────────────────────────────────────────────┘
                                ▲ 依赖
┌──────────────────────────────────────────────────────────────────┐
│  Web Kit              packages/web/*(布局 / 主题 / UI / Vite)   │  Web 工程层
└──────────────────────────────────────────────────────────────────┘
                                ▲ 依赖
┌──────────────────────────────────────────────────────────────────┐
│  Adapter              @skyroc/adapter-*(Ant Design / Tailwind)  │  UI 适配层
└──────────────────────────────────────────────────────────────────┘
                                ▲ 依赖
┌──────────────────────────────────────────────────────────────────┐
│  Core                 packages/@core/*(platform-agnostic)       │  跨端内核
│                       ↕ 可被 Web / React Native / 小程序 共享     │
└──────────────────────────────────────────────────────────────────┘

包命名约定

前缀 适用范围 约束
@skyroc/utils / @skyroc/axios / ... (非前缀) 跨平台 禁止依赖 DOM / Web API
@skyroc/web-* 仅 Web 应用 可依赖 DOM / 浏览器 API
@skyroc/adapter-* UI 库适配层 依赖特定 UI 库(如 Ant Design)

应用(apps/)

应用 包名 说明 启动 在线预览
skyroc-admin skyroc-admin 干净的中后台起手模板,页面精简(首页/登录/异常),适合二次开发 pnpm --filter skyroc-admin dev(端口 9527) skyroc-admin.com
admin-example admin-example 含完整 demo 页面的示例应用,覆盖插件/管理/交互/图表等场景 pnpm --filter admin-example dev(端口 9528) skyroc-admin.com
web-ui-playground skyroc-ui-playground @skyroc/web-ui 组件库交互式 playground pnpm --filter skyroc-ui-playground dev ui-play.skyroc.me

版本历史

版本 技术栈 在线预览 文档 仓库
v3(当前) React 19 · Vite 8 · TanStack Router · Jotai · Antd 6 skyroc-admin.com admin-docs.skyroc.me GitHub · Gitee
v2 React 19 · Vite 6 · React Router V7 · Redux Toolkit · Antd 5 admin-v2.skyroc.me admin-v2-docs.skyroc.me
v1 React 18 · Vite 5 · React Router V6 · Redux Toolkit · Antd 5 admin-v1.skyroc.me admin-docsv1.skyroc.me

文档站点

项目提供 5 个独立文档站点,均位于 docs/,基于 Next.js + Fumadocs 构建,部署于 Cloudflare:

文档站 说明 在线地址
project-docs 项目总览、整体架构与开发指南 project-docs.skyroc.me
admin-docs apps/admin 的路由、菜单、权限与请求服务 admin-docs.skyroc.me
core-docs @core/* 基础设施层各包的用途与边界 core-docs.skyroc.me
web-kit-docs 应用壳、主题、布局材料与 Ant Design 适配 web-kit-docs.skyroc.me
web-ui-docs @skyroc/web-ui 组件库 API 与设计系统 web-ui-docs.skyroc.me

本地启动任一文档站:

pnpm --filter <docs-package-name> dev

包列表

🧬 跨端内核(packages/@core/*

包名 职责
@skyroc/utils 平台无关工具函数,含 ./web 子路径提供浏览器专用工具(下载、窗口、BOM)
@skyroc/axios 类型安全的 Axios 客户端——重试、转换管道、请求取消、Token 刷新、后端响应适配
@skyroc/service 平台无关的请求与查询基础设施,适配器模式接入 UI、鉴权、导航与 React Query
@skyroc/core-state Jotai 状态管理封装,跨平台支持
@skyroc/logger 跨平台日志系统(基于 LogLayer),支持 Web / React Native / 小程序
@skyroc/scheduler 协作式任务调度器——统一初始化、周期任务与监听器管理
@skyroc/color 色彩工具与调色板生成(基于 colord / culori,OKLCH 算法,Ant Design 色阶)
@skyroc/types 全局类型定义,跨平台支持
@skyroc/type-utils 高级 TypeScript 工具类型(表单路径、类型变换等)
@skyroc/scripts 项目 CLI——changelog、release、git-commit、cleanup 等自动化脚本

🎨 UI 组件库(packages/web/ui/*

包名 职责
@skyroc/web-ui 基于 Radix UI + Tailwind CSS 的现代 React 组件库(类 shadcn/ui 风格)
@skyroc/web-ui-antd Ant Design 复合组件,面向管理系统场景
@skyroc/web-ui-compose 基于 UI primitives 的无状态复合组件

🧩 Web 工程套件(packages/web/*

包名 职责
@skyroc/web-admin-layouts 可复用后台应用壳——菜单、权限、路由页签、布局状态
@skyroc/materials 插槽式 AdminLayout 与多风格 PageTab 物料组件
@skyroc/web-admin-theme Ant Design 主题工具——配置、预设、hooks、CSS 变量、暗黑/系统主题检测
@skyroc/adapter-antd-theme Ant Design 主题适配——基于 OKLCH 色彩空间的自定义算法
@skyroc/web-admin-i18n 后台国际化运行时与语言切换 UI
@skyroc/web-admin-vite Vite 构建辅助与插件预设,可配置的 admin 应用构建套件
@skyroc/web-admin-runtime 启动插件运行时辅助(bootstrap plugins)
@skyroc/web-admin-notification 可复用通知 Provider / hooks / Header 动作
@skyroc/web-admin-devtools 仅开发态加载的 devtools 面板(可配置)
@skyroc/web-admin-styles 全局共享 CSS 资源
@skyroc/tailwind-plugin Tailwind CSS 主题插件——OKLCH 设计令牌、反馈色、侧边栏调色板与设计系统预设

🔗 共享与原语(shared / primitives / hooks

包名 职责
@skyroc/ui-tokens 跨平台设计令牌——颜色、间距、圆角、字体,零运行时依赖
@skyroc/ui-types 跨平台共享 UI 类型定义
@skyroc/form 类型安全的高级表单处理库(filed-form),支持字段管理与验证
@skyroc/hooks 平台无关 React Hooks 核心,含 ./web 子路径提供浏览器专用 hooks

🛠️ 工程配置(internal/*

包名 职责
@skyroc/config 共享开发配置(Vitest、Oxlint 等)
@skyroc/tsconfig 共享 TypeScript 基础配置
@sa/uno-config UnoCSS 预设配置——主题快捷方式与设计令牌

技术栈

分类 技术 版本
框架 React 19.1.0
构建 Vite ^8.0.14
构建编排 Turborepo ^2.7.1
包管理 pnpm 10.4.1
语言 TypeScript ^6.0.3
路由 TanStack Router ^1.140.0
数据 TanStack Query ^5.90.12
状态 Jotai ^2.16.0
UI Ant Design ^6.1.0
UI @skyroc/web-ui(Radix UI + Tailwind) workspace
样式 UnoCSS ^66.5.10
样式 Tailwind CSS ^4.1.18
动画 Motion ^12.23.26
国际化 i18next 25.7.2
图表 ECharts ^6.0.0
HTTP Axios ^1.7.9
代码质量 oxlint ^1.60.0
格式化 oxfmt ^0.45.0
单元测试 Vitest ^4.0.18
E2E 测试 Playwright ^1.59.1
Mock MSW ^2.7.0
包打包 tsdown ^0.18.2

快速开始

环境要求

  • Node.js >= 20
  • pnpm >= 8.7(推荐使用仓库锁定的 pnpm@10.4.1

安装

# 克隆仓库
git clone https://github.com/Ohh-889/skyroc-admin.git
cd skyroc-admin

# 安装所有依赖(一次性安装整个 monorepo)
pnpm install

启动开发

# 启动全量 dev(所有 apps 与 packages 的 dev 任务)
pnpm dev

# 仅启动主后台应用(端口 9527)
pnpm --filter skyroc-admin dev

# 仅启动示例应用(端口 9528)
pnpm --filter admin-example dev

构建

# 构建全部包与应用
pnpm build

# 仅构建主应用
pnpm --filter skyroc-admin build

创建新 Admin 项目

# 通过 CLI 脚手架基于当前模板创建新项目
pnpm create:admin

常用脚本

命令 说明
pnpm dev 启动所有应用/包的开发模式
pnpm build 构建全部包与应用
pnpm lint 运行 oxlint 代码检查
pnpm format 使用 oxfmt 格式化代码
pnpm format:check 校验代码格式(CI 用)
pnpm typecheck 全量 TypeScript 类型检查
pnpm test 运行单元测试(Vitest)
pnpm test:e2e 运行端到端测试(Playwright)
pnpm test:ui 启动 Vitest UI
pnpm clean 清理所有构建产物
pnpm create:admin CLI 脚手架创建新 admin 项目
pnpm sync:admin-template 同步 admin 模板变更

项目结构

skyroc-admin/
├── apps/                               # 业务应用(薄壳)
│   ├── admin/                          # skyroc-admin:干净的起手模板
│   ├── admin-example/                  # 含完整 demo 页面的示例应用
│   └── web-ui-playground/              # @skyroc/web-ui 组件 playground
│
├── packages/
│   ├── @core/                          # 跨端内核(platform-agnostic)
│   │   ├── utils/                      # @skyroc/utils
│   │   ├── axios/                      # @skyroc/axios
│   │   ├── service/                    # @skyroc/service
│   │   ├── state/                      # @skyroc/core-state
│   │   ├── logger/                     # @skyroc/logger(Web/RN/小程序)
│   │   ├── scheduler/                  # @skyroc/scheduler
│   │   ├── color/                      # @skyroc/color(OKLCH)
│   │   ├── types/                      # @skyroc/types
│   │   ├── type-utils/                 # @skyroc/type-utils
│   │   └── scripts/                    # @skyroc/scripts(CLI 工具)
│   │
│   ├── web/                            # Web 工程套件
│   │   ├── admin-layouts/              # @skyroc/web-admin-layouts
│   │   ├── materials/                  # @skyroc/materials
│   │   ├── admin-theme/                # @skyroc/web-admin-theme
│   │   ├── antd-theme/                 # @skyroc/adapter-antd-theme
│   │   ├── admin-i18n/                 # @skyroc/web-admin-i18n
│   │   ├── admin-vite/                 # @skyroc/web-admin-vite
│   │   ├── admin-runtime/              # @skyroc/web-admin-runtime
│   │   ├── admin-notification/         # @skyroc/web-admin-notification
│   │   ├── admin-devtools/             # @skyroc/web-admin-devtools
│   │   ├── admin-styles/               # @skyroc/web-admin-styles
│   │   ├── tailwind-plugin/            # @skyroc/tailwind-plugin
│   │   └── ui/
│   │       ├── shadcn/                 # @skyroc/web-ui(Radix + Tailwind)
│   │       ├── antd/                   # @skyroc/web-ui-antd
│   │       └── compose/                # @skyroc/web-ui-compose
│   │
│   ├── shared/                         # 跨端共享
│   │   ├── ui-tokens/                  # @skyroc/ui-tokens(设计令牌)
│   │   └── ui-types/                   # @skyroc/ui-types
│   │
│   ├── primitives/
│   │   └── filed-form/                 # @skyroc/form(类型安全表单)
│   │
│   ├── hooks/                          # @skyroc/hooks
│   │
│   ├── native/      ⬅ 规划中           # React Native 专用包
│   └── miniapp/     ⬅ 规划中           # 小程序专用包
│
├── docs/                               # 文档站点(Next.js + Fumadocs)
│   ├── project-docs/
│   ├── admin-docs/
│   ├── core-docs/
│   ├── web-kit-docs/
│   └── web-ui-docs/
│
└── internal/                           # 内部共享配置
    ├── tsconfig/                        # @skyroc/tsconfig
    ├── uno-config/                      # @sa/uno-config
    └── config/                          # @skyroc/config

路线图

状态 说明
✅ 已就绪 Web · Admin apps/admin + apps/admin-example,完整中后台能力
✅ 已就绪 Web · UI 组件库 @skyroc/web-ui,Radix UI + Tailwind 组件库
🚧 规划中 React Native / Expo packages/native/*,复用 @core/* 跨端内核;@skyroc/logger 已支持 RN 日志
🗓️ 规划中 小程序 / Mini Program packages/miniapp/*@skyroc/logger 已支持小程序日志能力

跨端扩展的核心优势:@skyroc/service(请求/查询)、@skyroc/core-state(Jotai 状态)、@skyroc/utils@skyroc/color 等内核包均不依赖 DOM,可直接被 Native / 小程序 端复用。


特别鸣谢

本项目基于 Soybean 开发的优秀开源项目 Soybean Admin 演进而来,在此特别感谢 Soybean 为中后台开发领域做出的开源贡献。如果你喜欢这类项目,也请给 Soybean Admin 点个 star ⭐️。

同时感谢以下优秀开源项目:


如何贡献

欢迎任何形式的贡献,包括功能扩展、Bug 修复、文档改进或错别字纠正。

  1. Fork 项目
  2. 创建特性分支 git checkout -b feature/your-feature
  3. 提交变更(使用 pnpm commit 生成符合 Conventional Commits 规范的提交信息)
  4. 推送并开启 Pull Request

提交 PR 前请运行:

pnpm lint        # 代码检查
pnpm typecheck   # 类型检查
pnpm test        # 单元测试

开源协议

本项目基于 MIT 协议开源,永久免费使用。


联系

如果这个项目对你有帮助,请给我们一个 ⭐️!

About

react-admin基于Antd,功能强大且丰富,页面美观,代码优雅

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors