# DreamCode **Repository Path**: linDream-StarSpark/dream-code ## Basic Information - **Project Name**: DreamCode - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-01 - **Last Updated**: 2026-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🌙 DreamCode(梦之代码) > 一个跑在安卓手机上的自托管 Web IDE。 > 用网页写 IDE 服务器,套个容器运行,手机本地访问,离线可用。 --- ## 一、项目简介 DreamCode 是一个**纯本地、自托管的 Web IDE**,运行在安卓手机内置的 Linux 容器中: - 🖥️ **IDE 服务器**:Node.js 编写的 Web 服务,跑在 proot 的 Ubuntu 容器里 - 🌐 **前端界面**:浏览器访问的 IDE 页面(编辑器 / 终端 / 文件树) - 📱 **安卓客户端**:WebView 套壳 App,点开就像原生应用 目标:**打开手机 → 点开 DreamCode → 写代码**,全程离线,不依赖任何云服务。 --- ## 二、总体架构 ``` ┌──────────────────────── 安卓手机 ────────────────────────┐ │ │ │ ┌────────────────── DreamCode App ──────────────────┐ │ │ │ │ │ │ │ ┌──────────┐ ┌────────────────────────┐ │ │ │ │ │ WebView │◄─HTTP──►│ 内置 proot 容器 │ │ │ │ │ │ IDE界面 │ 127.0.0.1│ ├─ proot 二进制 │ │ │ │ │ └──────────┘ │ │ (预编译二进制) │ │ │ │ │ │ ├─ Ubuntu rootfs │ │ │ │ │ │ └─ Node.js 服务器 │ │ │ │ │ └────────────────────────┘ │ │ │ └───────────────────────────────────────────────────┘ │ │ ▲ │ │ │ 装一个 App 全搞定,无需任何额外安装 │ └────────┴─────────────────────────────────────────────────┘ ``` ### 通信流程 ``` 浏览器页面 ──WSS/HTTP──► Node.js 服务器 ──► 文件系统 / 终端进程 │ │ │ Monaco 编辑器操作 ├─ fs API:list/read/write │ xterm.js 终端渲染 ├─ node-pty:bash 终端 │ └─ WebSocket:实时双向推送 ``` --- ## 三、技术选型 | 模块 | 技术 | 说明 | |------|------|------| | 后端框架 | **Node.js + Express** | 与前端共用 JS 语言 | | 实时通信 | **WebSocket (ws)** | 终端输出、文件变更推送 | | 代码编辑器 | **Monaco Editor** | VS Code 同款内核,MIT 开源 | | 终端模拟 | **xterm.js + node-pty** | 浏览器终端 + 服务器伪终端 | | 文件树 | 自研轻量组件 | MVP 阶段保持简单 | | 安卓客户端 | **Kotlin + WebView** | 一体化 App,内置全部运行环境 | | 容器引擎 | **proot(复用预编译二进制)** | 免交叉编译,直接打包进 App | | 系统环境 | **App 内置 Ubuntu 24.04 rootfs** | 首次启动自动解压,用户零配置 | | 版本管理 | **Git + Gitee** | dream-code 仓库 | --- ## 四、功能规划 ### ✅ MVP(第一版 · 必备) | 功能 | 说明 | |------|------| | 文件浏览 | 侧边栏文件树,点击打开 | | 代码编辑 | Monaco 编辑器,语法高亮 | | 保存/新建/删除 | 文件基本操作 | | 内置终端 | bash 终端,可执行命令 | | 多标签页 | 同时打开多个文件 | | 离线运行 | 手机本地启动,无需联网 | ### 🚀 进阶(第二版) | 功能 | 说明 | |------|------| | 智能提示 | 接入 LSP(语言服务器) | | 查找替换 | 文件内 / 跨文件搜索 | | 设置面板 | 主题、字号、快捷键 | | 端口转发 | 预览服务器运行效果 | | 代码运行 | 沙箱执行并显示输出 | ### 🌟 远期(第三版) | 功能 | 说明 | |------|------| | 协同编辑 | 多人实时编辑(OT/CRDT) | | 扩展系统 | 支持安装扩展 | | 云同步 | 工作区同步到网盘/私有云 | | Git 面板 | 图形化提交/推送 | --- ## 五、项目结构 ``` dreamcode/ ├── server/ # ★ IDE 服务器 (Node.js) │ ├── index.js # 入口:Express + WebSocket │ ├── routes/ │ │ ├── fs.js # 文件 API:list/read/write/rename │ │ └── auth.js # 简单 token 认证 │ ├── services/ │ │ ├── terminal.js # node-pty 终端会话 │ │ └── workspace.js # 工作区管理 │ └── package.json │ ├── web/ # ★ 前端页面 │ ├── index.html # IDE 布局 │ ├── editor.js # Monaco 集成 │ ├── terminal.js # xterm.js 终端 │ └── filetree.js # 文件树 │ ├── android/ # ★ 安卓一体化 App │ ├── app/src/main/java/.../MainActivity.kt # WebView + 容器管理 │ └── app/src/main/native/ │ ├── proot/ # proot 二进制 + 依赖库(预编译) │ └── rootfs/ # Ubuntu rootfs(首次启动解压) │ └── README.md # 本文件 ``` --- ## 六、开发计划 ``` M1(第 1 周) 环境与骨架 ├─ 初始化项目、安装 Node.js ├─ 搭建 Express 服务器 + 托管前端 └─ 完成首次提交推送 M2(第 2 周) 编辑器可用 ├─ Monaco 编辑器集成 ├─ 文件 API(列表/打开/保存) └─ 文件树 + 多标签页 M3(第 3 周) 终端与体验 ├─ node-pty 终端接入 ├─ 主题/设置 └─ 安卓 WebView 壳打包 M4(第 4 周) 打磨发布 ├─ 一键启动(App 内自动拉起容器) ├─ 稳定性与性能优化 └─ v1.0 发布 ``` --- ## 七、运行方式(规划) ```bash # 用户视角:装一个 DreamCode App,完事 # 1. 安装 DreamCode.apk # 2. 首次启动:自动解压 rootfs + 启动容器 # 3. 点开即进入 IDE(WebView 全屏展示) # App 内部流程(对用户透明): # ① 用内置 proot 二进制启动 Ubuntu rootfs # ② 容器内启动 Node.js 服务器 (127.0.0.1:8080) # ③ WebView 加载 http://127.0.0.1:8080 ``` ### proot 二进制的获取(开发备忘) 不自己编译,直接从 Termux 包仓库拿现成的 aarch64 包: ```bash # Termux 官方包仓库(aarch64) # https://packages.termux.dev/apt/termux-main/pool/main/p/proot/ # 需要的包: # proot_*.aarch64.deb → proot 主程序 # libtalloc_*.aarch64.deb → 依赖库 # libarchive_*.aarch64.deb → 依赖库 # # 做法:下载 deb → 解包提取 → 打包进 App 的 native/ 目录 # 优点:Termux 社区已做好交叉编译,直接用,无需本地编译环境 ``` --- ## 八、环境要求 - 安卓手机(arm64 / aarch64),Android 7.0+ - 只需安装 **DreamCode App**,无需 Root、无需额外安装 - App 内置:proot 二进制 + Ubuntu rootfs + Node.js 运行时 - 首次启动自动初始化容器(可离线,rootfs 打包在 App 内) - 全程离线可用,无需服务器 --- *DreamCode · 让手机成为你的代码工作台 🌙*