Scafffolder: Structure Generator
Instantly scaffold complete project folder structures and starter files for popular frameworks — from the Command Palette or by right-clicking a folder in the Explorer.

Built for developers who want a consistent, barebones project skeleton in seconds. Powered by a JSON template system you can extend without touching any TypeScript code.

Features
- One-command generation — scaffold a complete project skeleton for 15 popular frameworks.
- Explorer context menu — right-click any folder and generate, export, or favorite from the context menu.
- Pluggable JSON templates — add new frameworks by dropping in a single JSON file. No code changes required.
- Configurable output — toggle README,
.gitignore, .env.example, and starter files independently.
- Preview before you commit — review the tree before files are created.
- Undo support — undo the last generated structure.
- Favorites & recents — pin templates you use often and jump back to recent ones.
- Export / import — capture an existing project's structure as a reusable template, or load custom templates from disk.
- Template variables —
{{projectName}}, {{author}}, {{date}}, {{year}}, and user-defined {{var:name}} tokens are replaced automatically.
- Reveal after creation — the generated project is revealed in the Explorer with an option to open it in a new window.
Supported Templates
| Template |
Language |
| Express.js |
JavaScript |
| Node.js (Generic) |
JavaScript |
| React (Vite + TypeScript) |
TypeScript |
| Next.js (App Router) |
TypeScript |
| NestJS |
TypeScript |
| Vue (Vite + TypeScript) |
TypeScript |
| Svelte (Vite + TypeScript) |
TypeScript |
| Vanilla Vite (TypeScript) |
TypeScript |
| ASP.NET Core Web API |
C# |
| Python Flask |
Python |
| Python FastAPI |
Python |
| Django |
Python |
| Java Spring Boot |
Java |
| Go (net/http) |
Go |
| Laravel |
PHP |
Getting Started
- Open a workspace folder in VS Code.
- Trigger Project Structure Generator: Create Project Structure via:
- the Command Palette (
Ctrl/Cmd+Shift+P), or
- right-clicking a folder in the Explorer and choosing Project Structure Generator: Create Project Structure.
- Pick a template from the QuickPick list.
- Enter a project name.
- If the template defines custom variables (
{{var:name}}), you'll be prompted for each.
- Review the preview dialog and confirm.
- The folder structure and starter files are created inside the selected folder, which is then revealed in the Explorer.
Commands
| Command ID |
Title |
projectStructureGenerator.generate |
Create Project Structure |
projectStructureGenerator.generate.undo |
Undo Last Generation |
projectStructureGenerator.exportTemplate |
Export Current Structure as Template |
projectStructureGenerator.importTemplate |
Import Custom Template |
projectStructureGenerator.toggleFavorite |
Toggle Favorite Template |
Settings
| Setting |
Default |
Description |
projectStructureGenerator.generateReadme |
true |
Generate README.md |
projectStructureGenerator.generateGitignore |
true |
Generate .gitignore |
projectStructureGenerator.generateEnvExample |
true |
Generate .env.example |
projectStructureGenerator.generateStarterFiles |
true |
Generate starter source files |
projectStructureGenerator.openReadmeAfterCreation |
false |
Open README.md after generation |
projectStructureGenerator.enablePreview |
true |
Show a preview before creating files |
projectStructureGenerator.revealAfterCreation |
true |
Reveal the generated project folder in the Explorer |
projectStructureGenerator.defaultAuthor |
sudin rai |
Default author used for template variables |
projectStructureGenerator.customTemplatesPath |
"" |
Folder containing additional JSON templates |
Adding a New Template
Templates live as JSON files in the extension's templates/ folder or in the folder configured via projectStructureGenerator.customTemplatesPath.
Shape of a template:
{
"id": "my-template",
"name": "My Template",
"description": "An awesome template",
"language": "typescript",
"framework": "custom",
"folders": ["src", "tests"],
"files": [
{
"path": "src/index.ts",
"category": "starter",
"content": "console.log('{{projectName}}');"
}
]
}
Field reference:
| Field |
Required |
Description |
id |
Yes |
Unique identifier (kebab-case). |
name |
Yes |
Human-readable name shown in the QuickPick. |
description |
Yes |
Short description shown under the QuickPick item. |
language |
Yes |
typescript, javascript, python, csharp, java, go, or php. |
framework |
No |
Optional framework tag for grouping. |
folders |
Yes |
Folder paths to create (POSIX-style, may be nested). |
files |
Yes |
Files to create, each with a path and content. |
File categories (category): readme, gitignore, envExample, starter, config.
Template variables
{{projectName}} — the name entered during generation.
{{author}} — from the projectStructureGenerator.defaultAuthor setting.
{{date}} — today's date (YYYY-MM-DD).
{{year}} — the current year.
{{var:name}} — a custom variable. When a template uses one (in folder paths, file paths, or content), the user is prompted for a value during generation. This is great for ports, module names, seeds, etc.
Once a template is added, reload VS Code and it will appear in the QuickPick.
Screenshots


Installation
From the Marketplace
Search for Project Structure Generator in the Extensions view and install it.
From a VSIX file
code --install-extension project-structure-generator-1.1.0.vsix
Development
git clone https://github.com/sudin-tech/project-structure-generator.git
cd project-structure-generator
npm install
npm run compile
Press F5 in VS Code to launch an Extension Development Host with the extension loaded.
Running tests
npm test
Packaging
npm install -g @vscode/vsce
vsce package
This produces project-structure-generator-1.1.0.vsix in the project root.
Contributing
Contributions are welcome. Please keep the following in mind:
- Run
npm run lint and npm run compile before submitting a PR.
- Keep each source file under 300 lines.
- Add new frameworks as JSON templates only — no core code changes required.
License
MIT © 2026