TabBuilder
Project generator for VS Code, the terminal and JetBrains IDEs
- Problem
- Starting a project means the same scaffolding every time — directory layout, config, entry points. Editor ecosystems make it worse: tooling written for one IDE has to be rebuilt from scratch for the next, so the same generator gets written three times and drifts apart three ways.
- Architecture
- One generation engine in Node.js, three thin clients. The engine owns the pipeline; filesystem access and user interaction sit behind interfaces so nothing in the core imports an editor API. Clients supply their own implementations of those interfaces: the VS Code extension talks to it in-process, the CLI wraps it directly, and the JetBrains plugin drives it as a child process over a line-delimited JSON protocol on stdio.
- Distribution
- VS Code extensionv3.2stable
- CLI (npm)stable
- JetBrains pluginbeta
- Scope
- 11 frameworks across 5 languages.
- Engineering
- Extracted the generation logic into a shared Core consumed by all three clients, abstracting filesystem and UI access behind interfaces so the engine has no dependency on the VS Code API — which removed the need to maintain three parallel copies of the same pipeline.
- Built framework support as Strategy implementations over a six-stage generation pipeline, so adding a framework does not require touching the pipeline itself.
- Ported the tool to IntelliJ by writing only the UI layer in Kotlin and driving the existing Node.js engine over an NDJSON protocol on stdio, reusing the generation logic instead of reimplementing it for the platform.
- Rebuilt the CLI experience on custom @inquirer/core prompts — split-screen wizard, live progress checklist — so terminal and editor users get the same flow.
- Built with
- Node.js
- JavaScript
- Kotlin
- VS Code Extension API
- IntelliJ Platform SDK
- NDJSON over stdio
- @inquirer/core
- npm
- monorepo