Skyroc

June 4, 2026 · View on GitHub

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-adminskyroc-admin干净的中后台起手模板,页面精简(首页/登录/异常),适合二次开发pnpm --filter skyroc-admin dev(端口 9527)skyroc-admin.com
admin-exampleadmin-example含完整 demo 页面的示例应用,覆盖插件/管理/交互/图表等场景pnpm --filter admin-example dev(端口 9528)skyroc-admin.com
web-ui-playgroundskyroc-ui-playground@skyroc/web-ui 组件库交互式 playgroundpnpm --filter skyroc-ui-playground devui-play.skyroc.me

版本历史

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

文档站点

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

文档站说明在线地址
project-docs项目总览、整体架构与开发指南project-docs.skyroc.me
admin-docsapps/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-stateJotai 状态管理封装,跨平台支持
@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-antdAnt Design 复合组件,面向管理系统场景
@skyroc/web-ui-compose基于 UI primitives 的无状态复合组件

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

包名职责
@skyroc/web-admin-layouts可复用后台应用壳——菜单、权限、路由页签、布局状态
@skyroc/materials插槽式 AdminLayout 与多风格 PageTab 物料组件
@skyroc/web-admin-themeAnt Design 主题工具——配置、预设、hooks、CSS 变量、暗黑/系统主题检测
@skyroc/adapter-antd-themeAnt Design 主题适配——基于 OKLCH 色彩空间的自定义算法
@skyroc/web-admin-i18n后台国际化运行时与语言切换 UI
@skyroc/web-admin-viteVite 构建辅助与插件预设,可配置的 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-pluginTailwind 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-configUnoCSS 预设配置——主题快捷方式与设计令牌

技术栈

分类技术版本
框架React19.1.0
构建Vite^8.0.14
构建编排Turborepo^2.7.1
包管理pnpm10.4.1
语言TypeScript^6.0.3
路由TanStack Router^1.140.0
数据TanStack Query^5.90.12
状态Jotai^2.16.0
UIAnt 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
国际化i18next25.7.2
图表ECharts^6.0.0
HTTPAxios^1.7.9
代码质量oxlint^1.60.0
格式化oxfmt^0.45.0
单元测试Vitest^4.0.18
E2E 测试Playwright^1.59.1
MockMSW^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:adminCLI 脚手架创建新 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 · Adminapps/admin + apps/admin-example,完整中后台能力
✅ 已就绪Web · UI 组件库@skyroc/web-ui,Radix UI + Tailwind 组件库
🚧 规划中React Native / Expopackages/native/*,复用 @core/* 跨端内核;@skyroc/logger 已支持 RN 日志
🗓️ 规划中小程序 / Mini Programpackages/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 协议开源,永久免费使用。


联系

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