| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
可执行、可交互的技术学习平台 — 边做边学,所见即所得。
Innate Playground 是一个基于 Next.js 16 + Tauri v2 构建的桌面端交互式学习平台。它将教程内容与实时终端执行无缝结合,让学习者能够阅读教程、复制命令、一键运行,并立即在嵌入式终端中看到结果。
| 层级 | 技术 |
|---|---|
| 前端框架 | Next.js 16 (App Router) |
| 渲染引擎 | React 19 + TypeScript |
| 样式方案 | Tailwind CSS 4 + shadcn/ui |
| 组件库 | Radix UI primitives (via @innate/ui) |
| 图标 | Lucide React |
| 终端 | xterm.js + @xterm/addon-fit |
| 桌面框架 | Tauri v2 (Rust) |
| 状态管理 | Zustand |
| 内容渲染 | MDX (next-mdx-remote) + Shiki 代码高亮 |
| 字体 | Geist Sans + Geist Mono |
innate-executable/ ├── README.md # 本文件 ├── package.json # 集成入口脚本 ├── INTEGRATION.md # 集成策略文档 ├── APPSHELL_COMPARISON.md # AppShell 对比分析 ├── docs/ │ └── cargo-target-sharing.md # Cargo 目标共享架构 ├── playground/ # 原始项目(完整独立 monorepo) │ ├── package.json │ ├── pnpm-workspace.yaml │ ├── apps/ │ │ └── desktop/ # Next.js + Tauri 桌面应用 │ │ ├── package.json │ │ ├── Taskfile.yml # 任务运行器配置 │ │ ├── src/ # Next.js 前端源码 │ │ │ ├── app/ # App Router 路由 │ │ │ │ ├── page.tsx # 首页(推荐系列 + 最近教程) │ │ │ │ ├── layout.tsx # 根布局(字体 + 主题) │ │ │ │ ├── tutorials/ # 教程中心页 │ │ │ │ ├── series/ # 系列中心页 │ │ │ │ ├── tutorial/[id]/ # 教程详情页(MDX 渲染) │ │ │ │ ├── learn/ # 学习工作台(步骤式 UI) │ │ │ │ ├── settings/ # 设置页 │ │ │ │ └── admin/ # 管理后台 │ │ │ ├── components/ # 共享组件 │ │ │ │ ├── layout/ # 布局组件 │ │ │ │ │ ├── app-shell.tsx # 应用外壳(侧边栏 + 内容 + 终端) │ │ │ │ │ ├── app-sidebar.tsx # 可折叠导航侧边栏 │ │ │ │ │ ├── menu-bar.tsx # 顶部菜单栏(标签 + 搜索 + 主题) │ │ │ │ │ └── status-bar.tsx # 底部状态栏 │ │ │ │ ├── tutorial/ # 教程相关组件 │ │ │ │ │ ├── runnable-code-block.tsx # 可执行代码块 │ │ │ │ │ ├── shiki-code-block.tsx # 语法高亮代码块 │ │ │ │ │ ├── run-button.tsx # 运行按钮 │ │ │ │ │ └── platform-tabs.tsx # 平台标签页 │ │ │ │ ├── workspace/ # 工作台组件 │ │ │ │ └── terminal-panel.tsx # 可调整终端面板 │ │ │ ├── store/ # Zustand 状态管理 │ │ │ ├── lib/ # 工具函数与教程扫描器 │ │ │ └── styles/ # 全局样式 │ │ └── src-tauri/ # Rust 后端(Tauri) │ │ ├── src/ │ │ │ └── lib.rs # 主入口(PTY、平台检测、命令执行) │ │ ├── Cargo.toml │ │ └── tauri.conf.json │ └── packages/ │ ├── ui/ # 共享 UI 组件(基于 Radix + Tailwind) │ ├── utils/ # 工具函数 │ └── tsconfig/ # 共享 TypeScript 配置
| 路由 | 描述 | 主要功能 |
|---|---|---|
| / | 首页 | 展示推荐系列、最近教程、统计卡片、快捷操作 |
| /tutorials | 教程中心 | 所有教程的列表视图,支持搜索和系列筛选 |
| /series | 系列中心 | 所有学习系列的网格展示,含进度条 |
| /series/detail?id= | 系列详情 | 单个系列下的教程列表和整体进度 |
| /tutorial/[id] | 教程详情 | MDX 内容渲染、可执行代码块、完成标记 |
| /learn | 学习工作台 | 步骤式教程执行界面(原型阶段) |
| /settings | 设置 | 环境信息、API 密钥配置、关于 |
| /admin/series | 系列管理 | 创建/编辑系列和教程 |
| /admin/workspace | 工作区管理 | 导入本地教程目录 |
应用采用经典的三栏布局:
┌─────────────────────────────────────────────────────┐ │ Menu Bar (顶部导航栏 + 搜索 + 主题切换) │ ├──────────┬────────────────────────────┬──────────┤ │ │ │ │ │ Sidebar │ Main Content │ Terminal │ │ (可折叠) │ (路由页面) │ (可切换) │ │ │ │ │ ├──────────┴────────────────────────────┴──────────┤ │ Status Bar (底部状态栏) │ └─────────────────────────────────────────────────────┘
# 克隆后进入项目目录
cd apps/innate-executable/playground
# 安装依赖
pnpm installpnpm dev
# 或
cd apps/desktop && pnpm dev# 使用 Task(推荐)
cd apps/desktop
task dev # 启动 Next.js + Tauri 开发服务器
# 或使用 pnpm 脚本
pnpm desktop:devcd playground
pnpm install
pnpm dev # 仅 Next.js
pnpm --filter desktop tauri dev # 完整桌面端# 完整构建(前端 + Tauri + DMG)
cd apps/desktop
task default
# 仅前端
task build-frontend
# 仅 Tauri(使用共享 target)
task build-tauri
# 清理构建产物
task clean本项目作为 innate-desktop-mono monorepo 的子项目存在,同时保持完全独立运行能力。
通过根目录 .cargo/config.toml 设置统一 target-dir,两个 Tauri 项目共享编译产物:
[build]
target-dir = "target"空间节省:约 50-75% 的磁盘占用减少,增量编译缓存共享。
| 模式 | 命令 | 目标目录 | 适用场景 |
|---|---|---|---|
| 独立模式 | cd playground && pnpm dev | playground/apps/desktop/src-tauri/target/ | 独立开发、CI 隔离 |
| 共享模式 | cd apps/innate-executable && pnpm desktop:dev | target/(仓库根) | 日常开发、节省空间 |
| Monorepo | pnpm --filter @innate/desktop tauri dev | target/ | 跨项目工作流 |
详细架构参见 docs/cargo-target-sharing.md。
使用 Zustand 的 useAppStore 管理全局状态:
支持暗/亮主题切换:
在 Markdown 教程中,使用 {executable} 标记创建可执行代码块:
```bash {executable}
echo "Hello, Innate!"
```渲染后会显示"复制"和"执行"按钮,点击执行将命令发送到终端面板运行。
欢迎提交 Issue 和 PR。请确保:
[待定] 请参阅项目根目录 LICENSE 文件。
Built with ❤️ using Next.js, Tauri, and shadcn/ui.
| Back | FazBrowse Home | New Git URL |