CLI tool
thinkjs/thinkjs avatar
thinkjs/thinkjs

ThinkJS: the ES2015-era Node framework, still ticking in a monorepo

Use full ES2015+ features to develop Node.js applications, Support TypeScript.

5,267 stars614 forksJavaScriptMIT

At a glance

What is it?
ThinkJS is an MIT-licensed Node.js web framework whose founding pitch was using full ES2015+ features, now with TypeScript support, scaffolded through the think-cli command line and started with npm start on port 8360. Its last tagged release is v3.2.13 from December 2020, but the repository survives as a pnpm monorepo of think-prefixed packages requiring Node 20, with pushes as recent as August 2026.
Who is it for?
Use ThinkJS when maintaining an existing application built on its conventions, or when a Chinese-language documentation set is an advantage for the team, since the docs and community materials are strongest there. Start a new project on Express, NestJS or another currently released framework instead, because the newest tagged ThinkJS release dates to 2020 and the ecosystem momentum has moved on.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 55 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A framework pitched on language features

ThinkJS opens with a one-line identity, use full ES2015+ features to develop Node.js applications, support TypeScript, and the sentence is a period artifact worth decoding. In the mid-2010s, when this framework appeared, much of the Node ecosystem still ran ES5-era JavaScript, and frameworks that embraced ES2015's classes, generators, modules and async patterns advertised that as the feature. The TypeScript addition extended the same promise as the language matured. Today, when every Node runtime speaks modern JavaScript natively, the pitch has dissolved into the baseline, and the README's brevity, a single sentence between the title and the install command, reads as a framework whose introduction wrote itself a decade ago and was never needed again, since the documentation site at thinkjs.org carries the real manual in English and Chinese editions.

think-cli scaffolds, npm start runs

The documented workflow is four commands, and they describe the whole life of a new application. Install the command line globally:

sh
npm install -g think-cli

Generate a project:

sh
thinkjs new demo

Then the standard pair inside the new directory:

sh
npm install
sh
npm start

The separation is worth noticing, the framework itself is a dependency of the generated project while the scaffolding tool is a separate global install, so project creation and project evolution are decoupled. The startup output is documented too, log lines showing the server address, the framework version, the environment and the worker count, the operational transparency a framework of this generation considered part of the contract.

Port 8360 and a startup log to match

The example console message in the README fixes the framework's small defaults in place, Server running at http://127.0.0.1:8360, with the log line beneath reporting ThinkJS version 3.0.0-alpha1, Environment: development and Workers: 1. Three details travel with that snippet. The default port 8360 rather than the more common 3000 or 8080 is a fingerprint users recognize the framework by. The environment flag in the startup log signals that development and production modes are a first-class distinction rather than an environment variable convention layered on later. And the Workers count reveals a multi-process model at the core, the framework prepared to run multiple workers, with one as the development default, an architectural commitment to cluster-style operation from the first command.

A pnpm monorepo of think-prefixed packages

The repository's current shape tells a different story than its README. It is a pnpm workspace with the framework decomposed into packages under a packages directory, and the root package.json's test script reveals the module names through its filters, think-cache-memcache, think-memcache and think-mongo are excluded from the default test run, which means cache backends, a memcache adapter and a MongoDB adapter exist as sibling packages. That decomposition is the classic evolution of a framework into a kit, core plus pluggable data and cache layers, and it happened here with modern tooling, pnpm 11, ESLint 10 with flat configuration, c8 for coverage, and an engines floor of Node 20.19, a thoroughly 2020s build system wrapped around a framework whose last release tag predates it.

Released in 2020, pushed in 2026

The maintenance calendar deserves plain statement. The tagged releases stop at v3.2.13 on 2020-12-16, preceded years earlier by the 2.1.x line of 2016, yet the repository's last push came on 2026-08-07, nearly six years of activity after the last release. The combination reads as maintenance without releases, dependency refreshes, tooling migrations like the pnpm and ESLint work visible in the tree, and issue triage on a framework whose API has been stable enough that a release was never forced. For an evaluator this is neither abandoned nor shipping, it is a stable core with a quiet pulse, and the practical consequence is that the published npm artifacts reflect 2020 while the repository reflects 2026, a gap to verify before depending on either.

Two languages, one documentation home

ThinkJS carries a bilingual identity in its bones, the README exists in English and in Simplified Chinese, linked side by side, and the documentation site at thinkjs.org serves an English edition while the Chinese materials anchor the project's home community. The framework emerged from the Chinese Node.js scene, where its ES2015-first pitch found its audience first, and the enduring Chinese-language resources, tutorials and community answers remain one of its practical assets. For an English-only team this means the documentation site is the reliable entry, while the deepest troubleshooting threads may live in Chinese, a fact worth knowing before committing, and for a Chinese-speaking team the reverse holds, the framework remains one of the documented-in-your-language options.

What adopting it means today

Honest placement matters for a framework in this position. ThinkJS is not competing with the current generation of Node frameworks for new projects, and the README does not even make that argument anymore. What it offers is continuity, an existing application's conventions kept working, a monorepo that still builds under current Node, and a documentation set that answers the questions its own abstractions raise. The adapters glimpsed in the test filters, cache, memcache, mongo, indicate where the framework staked its ground, the data-facing plumbing of server-rendered and API applications. Anyone starting fresh should weigh the 2020 release boundary directly against frameworks shipping today, and anyone maintaining should watch the repository rather than the release list, since that is where the motion is.

Editorial conclusion

Use ThinkJS when maintaining an existing application built on its conventions, or when a Chinese-language documentation set is an advantage for the team, since the docs and community materials are strongest there. Start a new project on Express, NestJS or another currently released framework instead, because the newest tagged ThinkJS release dates to 2020 and the ecosystem momentum has moved on. Verify first which version line your code targets, keep in mind the modern monorepo requires Node 20 or newer for development while the runtime story of older releases differs, and rely on thinkjs.org rather than the minimal README for anything beyond the first start.

Frequently asked questions

What is ThinkJS?

ThinkJS is an MIT-licensed Node.js web framework built around full ES2015+ features with TypeScript support, scaffolded through the think-cli command line tool and documented at thinkjs.org in English and Chinese. Its default development server runs on port 8360.

How do you create a ThinkJS application?

Install the scaffolding tool globally with npm install -g think-cli, generate a project with thinkjs new demo, then run npm install and npm start inside the generated directory. The console reports the server address, framework version, environment and worker count at startup.

Is ThinkJS still maintained?

The last tagged release is v3.2.13 from 2020-12-16, but the repository was still pushed on 2026-08-07, with the framework restructured as a pnpm monorepo requiring Node 20 or newer for development. It is best described as stable and quietly maintained rather than actively releasing.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. thinkjs/thinkjs on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/thinkjs-thinkjs.svg)](https://hysenlabs.com/projects/thinkjs-thinkjs)