# localAppHub **Repository Path**: fgszt/local-app-hub ## Basic Information - **Project Name**: localAppHub - **Description**: AI Coding出来的新项目太多,需要一个管理的工具。 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-16 - **Last Updated**: 2026-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # localAppHub > **应用中文名为:星栈** > > 个人本地软件资产管理中心 —— 让本地开发的项目可以被发现、运行、访问和分享。 localAppHub 是一个桌面客户端(Tauri 2 + Vue 3 + TypeScript),用于统一管理本地已经开发完成或正在开发中的个人项目: ``` 扫描项目 → 识别项目 → 项目管理 → 一键启动 → 自动发现端口 → 公网分享 Demo ``` ## 核心功能 | 功能 | 说明 | | --- | --- | | 项目扫描 | 添加目录后自动扫描 Git / package.json / requirements.txt / pyproject.toml / docker-compose.yml / Cargo.toml / pom.xml | | 技术栈识别 | Node(Vue/React/Next/Nuxt/Angular/Vite/Express…)、Python(FastAPI/Flask/Streamlit/Gradio/Django)、Docker Compose、Rust、Java | | 项目工作台 | 卡片式工作台首页(非后台管理风格),支持搜索(Ctrl+K)、筛选(全部/运行中/未运行)、排序、网格/列表视图 | | 一键启动 | 进入项目目录执行启动命令,创建进程、实时捕获日志、自动检测端口 | | 自动端口检测 | 通过 netstat 关联 进程树 ↔ 端口,展示「运行服务」表(服务名/端口/进程/PID),并扫描本机全部监听端口 | | 启动前端口占用检查 | 固定端口项目启动前 `check_port` 检查默认端口,被占用时弹出可视化提示(显示占用进程名 / PID / 额外监听),可选择「取消」或知悉风险后「仍然启动」;端口空闲则直接正常启动 | | Demo 公网分享 | 内置 cloudflared,一键创建 Cloudflare Quick Tunnel,生成 `https://xxx.trycloudflare.com` 公网地址 + 二维码,手机直接访问 | | 打开终端 | 项目卡片一键打开系统终端(优先 Windows Terminal,回退 cmd),自动定位到项目目录 | | 待办任务清单 | 每个项目可维护一份任务清单:每条任务 = 一段指令 + 多张配图(图片持久化到应用数据目录),支持上移/下移排序、行内编辑、删除、点击缩略图放大查看 | | 分享管理 | share_links 表记录本地端口/公网地址/状态/时间,支持复制、二维码、打开、停止、删除 | | 项目详情 | 基础信息(路径/技术栈/Git 分支/启动命令)、运行信息(状态/端口/PID/本地地址)、运行日志、环境变量、分享设置 | ## 应用截图 项目工作台: ![项目工作台](docs/snapshot/01-projects-workspace.png) 一键分享(Cloudflare Quick Tunnel): ![一键分享](docs/snapshot/02-share-qrcode.png) 项目运行与日志: ![项目运行与日志](docs/snapshot/03-running-logs.png) ## 目录结构 ``` localAppHub/ ├── src/ # Vue3 前端(侧栏 / 工作台 / 详情面板 / 日志 / 分享 / 设置) ├── src-tauri/ # Rust 后端 │ ├── src/ │ │ ├── db.rs # SQLite(projects / runtimes / share_links / settings) │ │ ├── scanner.rs # 项目扫描与技术栈识别 │ │ ├── procman.rs # 进程管理:启动、日志捕获、端口检测、进程树终止 │ │ ├── tunnel.rs # cloudflared Quick Tunnel 管理 │ │ ├── commands.rs # Tauri command 层 │ │ └── ... │ └── binaries/cloudflared.exe # 内置 cloudflared(打包为应用资源) ├── bin/ # 原始 cloudflared 下载 ├── test-projects/demo-vite # 端到端测试项目(npm run dev → localhost:5173) ``` ## 开发与运行 ```bash # 安装前端依赖 npm install # 开发模式(首次会编译 Rust,需要几分钟) npm run tauri dev # 构建安装包(NSIS) npm run tauri build ``` 要求:Node 18+、Rust(MSVC 工具链)、Windows 10/11(含 WebView2)。macOS / Linux 同样可构建(进程/端口/打开浏览器逻辑已做跨平台分支)。 ## 测试流程 1. 启动应用后点击右上角「添加目录」,选择 `test-projects` 目录 2. 应用自动扫描发现 `demo-vite`,识别技术栈 Vue 3 + Vite、启动命令 `npm run dev`、默认端口 5173 3. 点击「启动」→ 进程创建、实时日志输出、自动发现 `localhost:5173` 4. 点击「分享」→ 调用内置 cloudflared 创建 Quick Tunnel 5. 生成 `https://xxxx.trycloudflare.com` 公网地址与二维码,手机扫码访问 > 注意:Quick Tunnel 需要可访问 Cloudflare 网络的互联网连接。 ### 关于框架 Host 检查 Vite / Next.js / CRA 等框架默认会阻止非 localhost 的 Host 头请求(Quick Tunnel 每次生成随机域名,项目侧无法预先配置)。localAppHub 在启动隧道时自动附加 `--http-host-header localhost:端口`,cloudflared 转发请求到本地服务时会把 Host 头重写为本地地址,因此**任何项目都无需修改自己的配置**即可被公网访问。 ## 数据存储 SQLite 数据库位于系统应用数据目录(Windows:`%APPDATA%/com.localapphub.app/hub.db`): - `projects`(id, name, path, framework, startup_command, created_at, updated_at …) - `runtimes`(id, project_id, pid, port, status, started_at …) - `share_links`(id, project_id, local_port, public_url, status, created_at) - `settings`(扫描目录、退出行为等)