A fast, interactive CLI tool for scaffolding modern web and Node.js projects.
- Interactive prompts — beautiful terminal UI powered by
@clack/prompts - 4 supported stacks — Next.js, React + Vite, Express, and Fastify
- Optional extras — pick and choose: ESLint, Prettier, Husky, Tailwind CSS, Docker, GitHub Actions
- Production-ready boilerplate — sensible defaults, clean folder structure
- Zero config required — just run and go
Run without installing (always uses the latest version):
npx scafflyOr install globally for repeated use:
npm install -g scaffly-cli
scaffly- Enter your project name
- Choose a stack
- Pick any extras
- Scaffly creates the project, installs dependencies, and configures your tooling
| Stack | Language | Best For |
|---|---|---|
| Next.js | React / JSX | Full-stack web applications, SSR, SSG |
| React + Vite | React / JSX | SPAs, client-side frontends |
| Node.js + Express | JavaScript (ESM) | REST APIs, microservices |
| Fastify | JavaScript (ESM) | High-performance APIs |
| Extra | Description | Stacks |
|---|---|---|
| ESLint + Prettier | Linting and code formatting with zero-config defaults | All |
| Husky + lint-staged | Pre-commit hooks that run linting before each commit | All |
| Tailwind CSS | Utility-first CSS framework with PostCSS | Next.js, Vite |
| Docker | Dockerfile + docker-compose.yml optimised per stack |
All |
| GitHub Actions CI/CD | Workflow that runs lint, test, and build on push/PR | All |
my-app/
├── app/
│ ├── layout.js
│ ├── page.js
│ └── globals.css
├── next.config.mjs
├── package.json
└── .gitignore
my-app/
├── src/
│ ├── App.jsx
│ ├── App.css
│ ├── main.jsx
│ └── index.css
├── index.html
├── vite.config.js
├── package.json
└── .gitignore
my-app/
├── src/
│ ├── index.js
│ ├── routes/
│ └── middleware/ (Express only)
├── .env
├── .env.example
├── package.json
└── .gitignore
- Node.js
>= 18.0.0 - npm
>= 8.0.0
Contributions are welcome! Here's how to get started:
- Fork the repository
- Clone your fork:
git clone https://github.com/ViniLF/scaffly.git - Install dependencies:
npm install - Create a feature branch:
git checkout -b feat/your-feature - Make your changes and test them:
node bin/scaffly.js - Commit using Conventional Commits:
git commit -m "feat: add awesome feature" - Push to your branch:
git push origin feat/your-feature - Open a Pull Request
- Create
src/generators/your-stack.jsand export agenerate(projectName, projectPath)function - Register it in
bin/scaffly.jsunderGENERATORS - Add a prompt option in
src/prompts/index.js - Update this README
- Create
src/extras/your-extra.jsand export anapply(projectPath, stack)function - Register it in
bin/scaffly.jsunderEXTRAS - Add a prompt option in
src/prompts/index.js - Update this README
MIT © ViniLF