GeaStack 的示例应用与工具仓库,同时也是模拟器、嵌入式目标、GeaOS、Apple 平台、VS Code/Cursor 扩展和市场演示共用的应用画廊。每个示例都是独立小包,在 package.json 里带有 gea 清单。以 apps/watch 为例,进入目录后依次执行 npm install、npm run check 和 npm run build 即可跑通检查。
正文
GeaStack 的示例应用与工具。
本仓库是应用画廊,供模拟器、嵌入式目标、GeaOS、Apple 目标、VS Code/Cursor 扩展以及营销演示使用。每个示例都是一个小型包,在 package.json 中包含 gea 清单。
这里有什么
| 路径 | 用途 |
| --- | --- |
| apps/* | Gea 应用,多为面向 web、ESP32 和/或 GeaOS 的 TSX 应用。 |
| apps/*/package.json | 应用清单、目标兼容性、脚本与启动器元数据。 |
| tools/dialer-browser | 拨号工作流用的轻量浏览器端辅助工具。 |
| package.json | 示例集合的工作区标记。 |
| docs | 目录与贡献指南。 |
快速开始
检查单个示例,运行以下命令: cd apps/watch npm install npm run check npm run build
部分示例带有测试(多为布局或设备设置),在应用文件夹内用 npm test 运行。
Web 循环由模拟器驱动(独立仓库 geastack/simulator)。其脚本从应用项目根目录读取应用,根目录取自 GEA_APPS_ROOT(本仓库或你自己的)。没有默认值,需设置该变量或传 --app-dir。两处代码 checkout 无需相邻。
cd /path/to/simulator
GEAAPPSROOT=/path/to/examples ./targets/web/dev-web.mjs watch # 开发循环
GEAAPPSROOT=/path/to/examples ./targets/web/build-web.sh watch # 构建 web
./targets/web/dev-web.mjs --app-dir /path/to/examples/apps/watch # 或指定单个应用
通过 Gea CLI 烧录兼容开发板:
npx gea flash watch --board
文档
- docs/EXAMPLE-CATALOG.md:示例分类、目标兼容性与清单使用方式。
- docs/DEVELOPMENT.md:如何新增、测试与维护示例应用。
应用清单基础
每个可构建应用都应在 package.json 中带有 gea 字段:
{
"gea": {
"id": "watch",
"name": "Watch",
"entry": "index.tsx",
"runtime": "gea",
"targets": {
"web": true,
"esp32": true,
"geaos": true
}
}
}
该清单被模拟器、嵌入式开发板脚本、GeaOS、Apple 目标与 IDE 扩展读取,请保持其准确。
维护须知
- 示例保持小巧聚焦,一个好示例清晰证明一种行为。
- 示例内优先用共享框架 API,而非针对特定目标的 hack。
- 含复杂逻辑、物理或解析的示例需添加测试。
- 应用新增、重命名、隐藏或变更目标兼容性时,更新目录文档。
许可证
MIT(见 LICENSE),可基于此构建闭源产品。唯一采用不同许可证的 GeaStack 代码是嵌入式板支持(targets 与 @geastack/chips,仅 GPL-3.0):经其发布闭源固件需商业许可。商业条款、支持与托管构建请联系 contact@geastack.com。
评论
社区对这款 TypeScript 转 C++ 的嵌入式框架大多抱有兴趣并探讨技术细节,少数人质疑其因 AI 包装而可能是虚假项目。
认为核心是将 TypeScript 编译为 C++ 并适合嵌入式
- 评论指出项目本质是把 TypeScript 编译成 C++ 并带平台绑定,适合嵌入式应用,其仓库文档还提到早期实现因生成代码时装箱不可或缺而无法彻底消除装箱。(认可度:较多人) > 早期实现无法彻底消除装箱,因为在代码生成器中装箱起着不可或缺的作用(@tarcon)
质疑项目真实性怀疑是虚晃一招
- 有读者因项目中 AI 痕迹过重,认为可能是空中楼阁,并询问是否有人实际验证过可用。(认可度:少数人) > 其中大量使用 AI 让人觉得纯粹是虚假项目,有人确认过这东西真实可用吗(@slopinthebag)
关注内存占用与图形音频实现
- 开发者关心实际资源消耗与底层支撑,如简单窗口的内存对比 Qt、Tauri,以及图形音频的实现方式。(认可度:少数人) > 一个简单的 hello world 窗口会消耗多少内存,与 Qt、Tauri 相比呢(@realysy)
认为文档应明确不支持的 TypeScript 特性
- 另一类似工具作者分享,用户最大痛点是缺乏不支持特性的文档,例如 eval、unknown、any 在静态编译下显然不可行,明确边界才能避坑。(认可度:少数人) > 用户最抱怨的是没说明不支持哪些 TypeScript 特性,比如 eval 或未知类型显然不可能(@jeswin)
认为项目不错并保持关注
- 部分读者觉得有趣,表示会留意未来使用。(认可度:少数人) > 挺好的,我会保持关注以便后续采用(@elendilm)