# skyroc
**Repository Path**: sjgk_dl/skyroc
## Basic Information
- **Project Name**: skyroc
- **Description**: Skyroc 是一个基于 React 19 + TypeScript 的跨端前端工程化 monorepo:既提供开箱即用的 Web 中后台模板(Admin / RuoYi 对接版)和 Expo
移动端业务模板,也把请求、状态、日志、主题、双端 UI 组件库等能力沉淀为边界清晰的 workspace 包。
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://admin.skyroc.me/
- **GVP Project**: No
## Statistics
- **Stars**: 25
- **Forks**: 13
- **Created**: 2024-08-22
- **Last Updated**: 2026-08-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
> [!TIP]
> 想先看效果,打开 [Admin 在线预览](https://admin.skyroc.me/)、[Web UI 文档](https://web-ui-docs.skyroc.me/) 或 [Native UI 文档](https://native-ui.skyroc.me/);想直接开发,Web 后台从 [`apps/admin`](./apps/admin) 开始,移动端从 [`apps/expo-templete`](./apps/expo-templete) 开始。
## ✨ 为什么是 Skyroc
- 🧱 **分层解耦** — 应用只负责装配与业务,稳定能力进入 Core、Web Kit、Native UI 等独立包。
- 🌐 **跨端复用** — 请求、状态、日志、调度、类型和工具收敛平台差异,可被 Web、React Native 与未来小程序复用。
- 🎨 **双端设计系统** — `@skyroc/web-ui` 与 `@skyroc/native-ui` 共用设计令牌,各自保留符合平台习惯的实现。
- 🔧 **统一工程化** — pnpm catalog 管理版本,Turborepo 编排任务,oxlint、oxfmt、Vitest 与 Playwright 统一质量流程。
- 📦 **开箱即用** — `skyroc-admin` 提供干净骨架,`admin-example` 展示完整能力,`pnpm create:admin` 可以创建新应用。
- 📱 **移动端模板** — `expo-templete` 是可直接 fork 的 Expo 业务模板,登录态、网络层、主题、国际化、深链与原生打包脚本都已就位。
Web Admin、Web UI、React Native / Expo 组件库和 Expo 业务模板都已经落地;小程序目录仍作为后续扩展预留。
## 🚀 在线体验与文档
| 内容 | 说明 | 入口 |
| ------------------- | ---------------------------- | ------------------------------------------------------- |
| **Skyroc Admin** | 当前 v3 管理端 | [在线预览](https://admin.skyroc.me/) |
| **RuoYi Plus Fast** | RuoYi / FastAPI 全栈管理端 | [在线预览](http://47.98.185.172:8080/) |
| **Admin 文档** | 路由、菜单、权限、请求与主题 | [admin-docs.skyroc.me](https://admin-docs.skyroc.me/) |
| **Web UI 文档** | Web 组件 API 与设计系统 | [web-ui-docs.skyroc.me](https://web-ui-docs.skyroc.me/) |
| **Native UI 文档** | Native 组件 API 与真实 Demo | [native-ui.skyroc.me](https://native-ui.skyroc.me/) |
历史版本与文档
| 版本 | 技术栈 | 在线预览 | 文档 |
| -------------- | ----------------------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------- |
| **v3(当前)** | React 19 · Vite 8 · TanStack Router · Jotai · Ant Design 6 | [admin.skyroc.me](https://admin.skyroc.me/) | [Admin Docs](https://admin-docs.skyroc.me/) |
| **v2** | React 19 · Vite 6 · React Router 7 · Redux Toolkit · Ant Design 5 | [admin-v2.skyroc.me](https://admin-v2.skyroc.me/home) | [v2 Docs](https://admin-v2-docs.skyroc.me/) |
| **v1** | React 18 · Vite 5 · React Router 6 · Redux Toolkit · Ant Design 5 | [admin-v1.skyroc.me](https://admin-v1.skyroc.me/) | [v1 Docs](https://admin-docsv1.skyroc.me/) |
## 🧭 选择你的入口
| 目标 | 应用 | 启动命令 |
| -------------------- | ---------------------------------------------------------- | ------------------------------------------ |
| 基于干净骨架开发后台 | [`apps/admin`](./apps/admin) | `pnpm --filter skyroc-admin dev` |
| 查看完整后台能力 | [`apps/admin-example`](./apps/admin-example) | `pnpm --filter admin-example dev` |
| 对接 RuoYi / FastAPI | [`apps/ruoyi-plus-fast`](./apps/ruoyi-plus-fast) | `pnpm --filter ruoyi-plus-fast dev` |
| 开发 Expo 业务 App | [`apps/expo-templete`](./apps/expo-templete) | `pnpm --filter expo-templete start` |
| 开发 Web 组件 | [`apps/web-ui-playground`](./apps/web-ui-playground) | `pnpm --filter skyroc-ui-playground dev` |
| 开发 Native 组件 | [`apps/native-ui-playground`](./apps/native-ui-playground) | `pnpm --filter native-ui-playground start` |
## 🏗️ 架构设计
Skyroc 不是把所有代码堆进一个 Admin 应用,而是让应用成为轻量装配层,让基础能力可以独立理解、测试和演进。
```text
┌────────────────────────────────────────────────────────────────────┐
│ Applications │
│ admin · admin-example · ruoyi-plus-fast · expo-templete │
│ Web / Native Playground │
│ 负责:业务页面、路由装配、服务适配与应用配置 │
└──────────────────────────────┬─────────────────────────────────────┘
│ depends on
┌──────────────────────────────▼─────────────────────────────────────┐
│ Platform │
│ packages/web/* · packages/native/* │
│ 负责:布局、主题、UI、i18n、通知、运行时与构建预设 │
└──────────────────────────────┬─────────────────────────────────────┘
│ depends on
┌──────────────────────────────▼─────────────────────────────────────┐
│ Foundation │
│ packages/@core/* · packages/hooks · packages/primitives/* │
│ 负责:请求、状态、日志、调度、色彩、类型与通用工具 │
└────────────────────────────────────────────────────────────────────┘
internal/* ── 为各 workspace 提供 TypeScript、测试、Lint 与 UnoCSS 配置
```
### 架构约束
1. 应用层负责业务与装配,不复制共享包已经提供的能力。
2. Web 与 Native 的 UI、主题和平台 API 分开维护。
3. 跨端包把平台差异收敛在明确的子路径或适配器中。
4. 公共类型保持单一来源;设计令牌由 `@skyroc/tailwind-plugin` 统一生成,再按平台输出。
5. 调整包布局或依赖方向前,先阅读 [`packages/ARCHITECTURE.md`](./packages/ARCHITECTURE.md)。
### 包命名约定
| 命名 | 适用范围 | 示例 |
| ------------------- | ------------------------------------ | -------------------------------------------------- |
| `@skyroc/<能力>` | 跨端基础设施、共享能力或平台无关原语 | `@skyroc/utils`、`@skyroc/service`、`@skyroc/form`、`@skyroc/uno-config` |
| `@skyroc/web-*` | Web 布局、主题、UI 与运行时能力 | `@skyroc/web-ui`、`@skyroc/web-admin-vite` |
| `@skyroc/native-*` | React Native / Expo 专属能力 | `@skyroc/native-ui` |
| `@skyroc/expo-*` | Expo 原生模块(含自定义原生代码) | `@skyroc/expo-bluetooth`、`@skyroc/expo-wechat` |
## 📦 Workspace 包地图
| 分层 | 包 |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **跨端内核** | `@skyroc/utils` · `@skyroc/axios` · `@skyroc/service` · `@skyroc/core-state` · `@skyroc/logger` · `@skyroc/color` · `@skyroc/tailwind-plugin` · `@skyroc/scripts` · `create-skyroc` |
| **共享与原语** | `@skyroc/hooks` · `@skyroc/form` |
| **Web Kit** | admin shell(`packages/web/admin`,经 `@shell/*` 别名引用)· `@skyroc/web-admin-vite` · `@skyroc/web-admin-devtools` |
| **UI** | `@skyroc/web-ui` · `@skyroc/native-ui`(admin 侧复合组件已并入 shell 的 `ui/`) |
| **原生模块** | `@skyroc/expo-bluetooth` · `@skyroc/expo-wechat` |
| **内部配置** | `@skyroc/config` · `@skyroc/tsconfig` · `@skyroc/uno-config` |
查看全部包的职责
### 🧬 跨端内核 — `packages/@core/*`
| 包名 | 职责 |
| ------------------------- | --------------------------------------------------------------------------------- |
| `@skyroc/utils` | 平台无关工具集合,通过 `./web`、`./path`、`./cn`、`./crypto` 等子路径隔离特定能力 |
| `@skyroc/axios` | 类型安全的 Axios 客户端,提供重试、转换管道、请求取消与后端响应处理 |
| `@skyroc/service` | 请求与 TanStack Query 基础设施,通过适配器接入鉴权、导航和消息反馈 |
| `@skyroc/core-state` | Jotai 状态封装与可注入存储的跨端状态能力 |
| `@skyroc/logger` | 基于 LogLayer 的 Web、React Native、小程序日志与存储适配 |
| `@skyroc/color` | 基于 colord / culori 的色彩工具与 OKLCH、Ant Design 调色板生成 |
| `@skyroc/tailwind-plugin` | 设计令牌唯一来源,生成 Web / Native 的 Tailwind v4 主题变量与预设 |
| `create-skyroc` | `packages/@core/create-skyroc` | `pnpm create skyroc` 入口,薄壳调用 `@skyroc/scripts` 的 create-admin |
| `@skyroc/scripts` | 创建应用、同步模板、提交、清理、发布与 changelog 等仓库 CLI |
### 🔗 共享能力与原语
| 包名 | 位置 | 职责 |
| --------------- | -------------------------------- | ------------------------------------------------------- |
| `@skyroc/hooks` | `packages/hooks` | 平台无关 React Hooks,并以 `./web` 隔离浏览器 Hooks |
| `@skyroc/form` | `packages/primitives/filed-form` | 类型安全字段管理、路径级订阅与 Standard Schema 校验原语 |
> 零运行时的 TypeScript 工具类型在 `@skyroc/utils/type`,三端组件共用的主题 / 尺寸 / 方向
> 类型在 `@skyroc/tailwind-plugin/ui`。原先的 `@skyroc/type-utils` 与 `@skyroc/ui-types`
> 两个包已分别并入这两处。
### 🧩 Web 工程套件 — `packages/web/*`
| 包名 | 职责 |
| -------------------------------- | ----------------------------------------------------------------- |
| `packages/web/admin`(shell) | 后台应用壳源码目录:布局、主题、i18n、通知、运行时、全局样式与全局类型。不发布,仓库内经 `@shell/*` 别名共享,`sa create-admin` 生成独立项目时整目录复制进 `src/framework` |
| `@skyroc/web-admin-vite` | Vite、React Compiler、TanStack Router、UnoCSS、自动导入等构建预设 |
| `@skyroc/web-admin-devtools` | 开发环境的 Router、Query、Jotai 调试面板 |
### 🎨 UI 组件库与原生模块
| 包名 | 位置 | 职责 |
| ------------------------ | --------------------------- | -------------------------------------------------------------- |
| `@skyroc/web-ui` | `packages/web/ui/shadcn` | 基于 Radix UI 与 Tailwind CSS 的 Web 基础组件和 primitives API |
| `@skyroc/native-ui` | `packages/native/ui` | 基于 React Native、Expo 与 Uniwind 的 Native 组件库 |
| `@skyroc/expo-bluetooth` | `packages/native/bluetooth` | 蓝牙可用性的 Expo 模块封装:状态查询、权限申请与开启引导 |
| `@skyroc/expo-wechat` | `packages/native/wechat` | 微信开放平台 SDK 的 Expo 模块封装:登录授权与九种分享 |
### 🛠️ 内部工程配置 — `internal/*`
| 包名 | 职责 |
| ------------------ | ---------------------------------------------- |
| `@skyroc/config` | Vitest、Oxlint 等共享开发配置 |
| `@skyroc/tsconfig` | 各 workspace 复用的 TypeScript 基础配置 |
| `@skyroc/uno-config` | Admin 主题、shortcuts 与设计变量的 UnoCSS 预设 |
## ⚡ 快速开始
### 环境要求
- Node.js 20 或更高版本
- pnpm 10.4.1,建议通过 Corepack 使用仓库锁定版本
- Native 开发还需要 Expo、iOS 或 Android 本地环境
```bash
git clone https://github.com/Ohh-889/skyroc-admin.git
cd skyroc-admin
corepack enable
pnpm install
pnpm --filter skyroc-admin dev
```
### 启动移动端模板
```bash
pnpm --filter expo-templete doctor # 环境自检:工具链 / .env / ANDROID_HOME / xcode-select
pnpm --filter expo-templete ios # 首次需要 development build,Expo Go 跑不起来
pnpm --filter expo-templete start # 之后改 JS 只要起 dev server
```
模板的环境变量、打包脚本与目录约定见 [`apps/expo-templete/README.md`](./apps/expo-templete/README.md)。
### 创建新的 Admin 应用
```bash
# 在当前 monorepo 的 apps/ 下创建应用
pnpm create:admin my-admin
# 创建可以脱离 monorepo 独立安装的工程
pnpm sa create-admin my-admin --target /path/to/projects/my-admin
```
更多参数见 [`@skyroc/scripts` 文档](./packages/@core/scripts/README.md#sa-create-admin)。
## 🗂️ 仓库结构
```text
skyroc-admin/
├── apps/
│ ├── admin/ # 精简 Admin 模板
│ ├── admin-example/ # 完整功能示例
│ ├── ruoyi-plus-fast/ # RuoYi / FastAPI 管理端
│ ├── expo-templete/ # Expo 业务 App 模板
│ ├── web-ui-playground/ # Web UI 演示场
│ └── native-ui-playground/ # Expo / Native UI 演示场
├── packages/
│ ├── @core/ # 跨端运行时基础
│ ├── shared/ # 共享类型与轻量能力
│ ├── hooks/ # 跨端 React Hooks
│ ├── primitives/ # 平台无关原语
│ ├── web/ # Web Kit 与 Web UI
│ └── native/ # React Native UI 与 Expo 原生模块
├── docs/ # 六个独立文档站
├── design/ # 产品设计、决策与原型
├── internal/ # 内部共享配置
└── scripts/ # 仓库级辅助脚本
```
## 🧰 主要技术栈
| 范围 | 技术 |
| ---------- | ---------------------------------------------------------------------- |
| **Web** | React 19、Vite 8、TanStack Router、TanStack Query、Jotai、Ant Design 6 |
| **Native** | React Native、Expo SDK 57、expo-router、Uniwind、Tailwind CSS 4 |
| **UI** | Radix UI、Ant Design、`@skyroc/web-ui`、`@skyroc/native-ui` |
| **工程** | TypeScript 6、pnpm workspace、Turborepo、oxlint、oxfmt |
| **测试** | Vitest、Testing Library、Playwright |
| **文档** | Next.js、Fumadocs |
依赖版本以 [`package.json`](./package.json)、[`pnpm-workspace.yaml`](./pnpm-workspace.yaml) 和锁文件为准。
## 🛠️ 常用命令
| 命令 | 用途 |
| ----------------------------------- | ------------------------------ |
| `pnpm dev` / `pnpm build` | Turborepo 编排全仓开发 / 构建 |
| `pnpm typecheck` / `pnpm lint` | TypeScript 检查 / oxlint |
| `pnpm format` / `pnpm format:check` | oxfmt 格式化 / 仅检查 |
| `pnpm test` / `pnpm test:e2e` | Vitest / Playwright |
| `pnpm create:admin ` | 从内置模板创建 Admin 应用 |
| `pnpm sync:admin-template` | 将 `apps/admin` 同步到内置模板 |
| `pnpm clean` | 清理 workspace 构建产物 |
开发单个 workspace 时优先使用 `pnpm --filter `,减少无关任务和输出。
## 🤝 参与项目
- 贡献流程:[`CONTRIBUTING.md`](./CONTRIBUTING.md)
- 仓库级开发约定:[`AGENTS.md`](./AGENTS.md)
- Web 专属约定:[`packages/web/AGENTS.md`](./packages/web/AGENTS.md)
- Native / Uniwind 约定:[`packages/native/AGENTS.md`](./packages/native/AGENTS.md)
- 问题反馈:[GitHub Issues](https://github.com/Ohh-889/skyroc-admin/issues)
- 代码贡献:[Pull Requests](https://github.com/Ohh-889/skyroc-admin/pulls)
提交遵循 [Conventional Commits](https://www.conventionalcommits.org/),并保持单次提交职责清晰。
## 🙏 致谢
> Skyroc 由 [Soybean Admin](https://github.com/soybeanjs/soybean-admin) 演进而来。感谢原项目的优秀设计,也感谢所有提供基础能力的开源社区。
| 领域 | 开源生态 |
| ------------- | --------------------------------------------------------------------------------------------------------------- |
| 基础框架 | [React](https://react.dev/) · [TanStack](https://tanstack.com/) · [Jotai](https://jotai.org/) |
| UI 与设计 | [Ant Design](https://ant.design/) · [Radix UI](https://www.radix-ui.com/) · [shadcn/ui](https://ui.shadcn.com/) |
| Native 跨端 | [Expo](https://expo.dev/) · [Uniwind](https://docs.uniwind.dev/) |
| Monorepo 工程 | [Turborepo](https://turbo.build/) |
## 📄 License
基于 [MIT License](./LICENSE) 开源,可自由用于个人和商业项目。
由 [Ohh-889](https://github.com/Ohh-889) 维护 · [GitHub](https://github.com/Ohh-889/skyroc-admin) · [Gitee](https://gitee.com/sjgk_dl/react-admin) · [admin.skyroc.me](https://admin.skyroc.me/)
如果这个项目对你有帮助,欢迎点一个 ⭐️