# TvT.js: a Vue 3 and Three.js workspace for 3D project delivery

> An Apache-2.0 Web 3D ecosystem from ICEGL that treats scene work as an engineering pipeline, with spec directories and delivery tooling sitting beside the Vue source.

**hawk86104/three-vue-tres** — 🎉一款让你的三维可视化项目快速落地的开源框架，天然具备良好的跨平台与🎊国产化适配能力 支持低代码编辑器、Web / 小程序 / App 全端部署，永久免费商用。 融合数字孪生、三维可视化（WebGL / WebGPU / three.js / tres.js / tvt.js），并扩展 AI 能力（Skills / OpenSpec），助力智能化场景快速构建 🚀

- Repository: https://github.com/hawk86104/three-vue-tres
- Website: https://hawk86104.github.io
- Stars: 2,422 · Forks: 194
- Language: JavaScript
- License: Apache-2.0
- Published: 2026-10-06 · Updated: 2026-10-06 · Language: en
- Canonical page: https://hysenlabs.com/projects/hawk86104-three-vue-tres

## What TvT.js is: a workspace, not an importable library

The English README calls TvT.js an AI-collaborative open-source Web 3D ecosystem from ICEGL, built on Three.js, Vue 3, TresJS and Fes.js, and aimed at digital twins, industrial visualisation, online 3D editors and plugin-based project delivery. The name in package.json is TvT.js at version 1.0.0, licensed Apache-2.0 and published with public access. That combination reads like a project scaffold rather than a dependency you install.

The tree supports that reading. There is a `src/` directory, an `index.html`, a `tsconfig.json`, an `AGENTS.md`, a `preview/` folder, `README_zh.md` beside the English readme, and mirrors on Gitee, GitCode and Bilibili, which is the arrangement of a project that expects to be cloned and run rather than added to a dependency list. The repository topics are cesium, three and webgl.

What you are not getting is a documented component API. The README does not describe exported components, props or a versioned public interface, and the manifest's dependency section is not a curated library surface. If you were hoping to install a Vue component library and compose your own scene, the mismatch will show up in the first hour.

## The dev server comes from Fes.js, and there are four of them

Build tooling is Fes.js throughout, and the script names in package.json show it. The two you actually run day to day are dev and build:

```json
  "scripts": {
    "dev": "fes dev",
    "build": "fes build",
    "test:unit": "fes test:unit",
```

The interesting part is what surrounds them. There are pre.dev and pre.dev.one scripts, and matching pre.build and pre.build.one, all driven by a FES_ENV variable:

```json
    "pre.dev": "cross-env FES_ENV=predev fes dev",
```

Those look like alternate runtime modes rather than lifecycle hooks, which fits a tool aimed at delivering projects in more than one configuration. There is a `both` script that runs dev and pre.dev concurrently, so you can have two servers up at once, presumably to check that something works in both modes. A separate `pre.build.icegl` sets both the memory limit and FES_APP_ONLINE_API, which is the hosted variant.

The one detail worth noting before you install anything is `postinstall`:

```json
    "postinstall": "patch-package"
```

That runs patch-package on every install, and the repository has a `patches/` directory to hold the patch files it expects. The manifest also asks for Node 18.18 or newer:

```json
  "engines": {
    "node": ">=18.18"
  },
```

So the honest first step is `yarn install` and then `yarn dev`, with the understanding that your node_modules state depends on patches being applied.

## The dependency upgrade that defines the current generation

The README states that from mid-October 2025 the project upgraded its core dependencies, naming Vue 3, Tres V5, Fes V4, Cientos V4 and a Three.js move from the r17x line to r18x. That sentence carries more weight than it looks like it does, because it tells you there are two incompatible generations of this project and that tutorials, sample code and plugins written for the older one will not simply run.

The README is explicit about where the old version lives: a legacy V4 branch named tres-v4_fes-v3, hosted on Gitee, plus a separate migration guide for anyone moving up from V4. The manifest corroborates the versions in the dependency list, where devDependencies pin @fesjs/plugin-icon at 5.0.0-beta.0 and @fesjs/utils at 4.0.0-beta.0. Both are beta builds, which is worth factoring into any decision about production use.

Three.js itself appears at r180 through the TypeScript types at @types/three 0.180.0, consistent with the r18x claim. Note also that the package manager of record is yarn, since the repository ships a yarn.lock, and there is a .npmrc as well, so both paths have been considered at some point.

## openspec/, skills/ and AGENTS.md as repository structure

The README's own summary of the workflow is a chain: requirement, spec constraints, AI-assisted implementation, scene validation, then plugin or source code delivery. What makes that more than a slogan is that the corresponding directories exist in the tree. There is an `openspec/` directory, a `skills/` directory, and an `AGENTS.md` at the root, alongside the usual `.github/` directory.

The README describes the `openspec/` baseline as capturing framework rules, plugin contracts, runtime modes and integration boundaries, with larger changes handled through the same mechanism. In practice that means the constraints on how a scene should be structured are written into the repository rather than left in a wiki, which is a defensible choice for a framework whose stated problem is that 3D projects stall between a demo and a deliverable.

The same instinct shows in the tooling. `pluginMaker/` sits at the root with a plugin.marker script pointing at `node pluginMaker/index.cjs`, and the README's delivery step explicitly offers a plugin or source code as the end state. That is a different contract from a library: you receive something built for this framework's plugin model, and how portable that is depends on details the English README does not spell out.

## Where the README stops and the docs take over

The English README is short, and it stops at the point where a team would need specifics. It names the stack and the pipeline, points at the AI collaboration guide hosted on the ICEGL documentation site, and explains the V4 migration path. It does not document component APIs, scene graph conventions, build configuration beyond the script names, or how the FES_ENV modes differ from one another.

That division is normal for a project of this type and it is not a criticism of the README, which is clearly a signpost rather than a manual. The practical consequence is that adopting TvT.js means committing to reading the documentation site and the `openspec/` directory, and the `.env`, `.env.predev` and `.env.predev.one` files, before you can predict what a given mode does.

One thing the README settles cleanly is licensing. It states the project is permanently open-source and free for commercial use, and package.json carries Apache-2.0, which is a permissive licence with an explicit patent grant and no copyleft obligation on your own code. For a framework you intend to build commercial deliverables on, that is the clearest part of the story.

## Choosing between TvT.js and a plain Vue 3 plus Three.js setup

The honest comparison is with assembling the same stack yourself. Vue 3 and Three.js are both available on their own, TresJS provides the Vue component layer over Three.js without a full project opinion, and Fes.js is a build tool you could adopt or not. Assembling that yourself gives you a dependency list you control and no generation problem when the framework upgrades everything at once.

What TvT.js adds is the parts nobody enjoys writing twice: the dev and build wiring already configured, the alternate runtime modes expressed as scripts, patch-package wired into postinstall, and a plugin delivery path with a `pluginMaker/` behind it. If your team is doing digital twin or industrial visualisation work and expects to deliver more than one such project, that setup work is real and having it solved once is worth something.

The repository is not archived and the last push was on 2026-09-10, with 2 open issues, which suggests a small active surface rather than a broad community. It also has no GitHub releases at all, so there is no version history to consult and no changelog in the tree beyond a dependency upgrade note in the README.

## Conclusion

TvT.js is worth a look if your team ships 3D visualisation work repeatedly and wants a starting workspace that already encodes Vue 3, TresJS and a Fes.js build, because that scaffolding is the real product here. It is a poor fit if you wanted an importable component library to drop into an existing app, since the repository publishes itself under a private-style name with no dependency entry point visible in the manifest. Two things to settle first: the README's mid-October 2025 upgrade moved Vue, Tres, Fes, Cientos and Three.js at once, so check which generation any tutorial you follow targets, and note that the repository carries no GitHub releases, so the commit log is the only version history. Start with `yarn install` and `yarn dev`, then read `openspec/` before writing scene code, because that directory is where the framework's own rules are written down.

## FAQ

### What is TvT.js and what is it built on?

TvT.js is an Apache-2.0 Web 3D ecosystem published by ICEGL, built on Three.js, Vue 3, TresJS and Fes.js, aimed at digital twins, industrial visualisation, online 3D editors and plugin-based project delivery. It ships as a project workspace with dev and build scripts rather than as a documented component library.

### How do I install and run TvT.js locally?

Clone the repository and use yarn, since the project ships a yarn.lock. Node 18.18 or newer is required, and postinstall runs patch-package against the patches directory, so the installed dependencies depend on those patches applying. Then run yarn dev for the standard dev server or yarn pre.dev for the predev environment.

### What is the difference between the V4 and the current version of TvT.js?

From mid-October 2025 the core dependencies moved together: Vue 3, Tres V5, Fes V4, Cientos V4, and Three.js from the r17x line to r18x. The older generation is preserved on a legacy branch named tres-v4_fes-v3 on Gitee, and the README points at a separate migration guide for teams coming from V4.

## Sources

- [hawk86104/three-vue-tres on GitHub](https://github.com/hawk86104/three-vue-tres)
- [Issues](https://github.com/hawk86104/three-vue-tres/issues)
- [License: Apache-2.0](https://github.com/hawk86104/three-vue-tres/blob/master/LICENSE)
- [Project website](https://hawk86104.github.io)
- [README](https://github.com/hawk86104/three-vue-tres/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/hawk86104-three-vue-tres
