DevFlow

Project Templates

A template is a DevFlow preset plus the modules that a particular stack needs. The command below is the whole template — copy it, run it in an existing repository, and review the diff.

DevFlow does not scaffold an application. A template describes the workflow a project of that kind should have, which is why every command works on a repository you already have. If you need a new application, create it first — with create-next-app, create-vite or nest new — then apply the template. The DevFlow vs create-next-app comparison explains the order.

TypeScript / Node.js service

Node.js · TypeScript

The baseline for a backend service or a CLI: strict TypeScript, ESLint, Prettier, Vitest, GitHub Actions and a multi-stage Dockerfile.

  • +ESLint flat config with typescript-eslint
  • +Prettier configuration and ignore file
  • +Husky with lint-staged and Commitlint
  • +Vitest with V8 coverage
  • +GitHub Actions pipeline
  • +Multi-stage Dockerfile and docker-compose
  • +npm audit and Gitleaks
Docker setup for NestJS

React + TypeScript application

React · TypeScript · Vite

A React application with the React ESLint plugin, the React Hooks rules, jsdom-based component tests and Testing Library wired in.

  • +ESLint with eslint-plugin-react and react-hooks
  • +Vitest with a jsdom environment
  • +Testing Library setup file
  • +Prettier and lint-staged
  • +GitHub Actions pipeline
  • +EditorConfig, .nvmrc and .env.example
ESLint, Prettier and Husky setup

Next.js application

Next.js · React · TypeScript

A Next.js project with the same React-flavoured lint rules plus a pull request pipeline that lints, type-checks, tests and builds.

  • +ESLint with the React and React Hooks rules
  • +Vitest with a jsdom environment
  • +GitHub Actions pipeline for pull requests
  • +Husky, lint-staged and Commitlint
  • +Dockerfile for a container deployment
GitHub Actions CI/CD for Next.js

NestJS service

NestJS · TypeScript

A NestJS service with a non-root container image, a health check recipe and a CI job that builds and pushes the image.

  • +Strict TypeScript and a typecheck script
  • +Vitest with the node environment
  • +Multi-stage Dockerfile, compose and .dockerignore
  • +GitHub Actions pipeline
  • +Security scanning workflows
Docker setup for NestJS

pnpm + Turborepo monorepo

pnpm workspaces · Turborepo

A workspace with a task graph, a shared tsconfig.base.json, workspace scripts and a CI pipeline that caches Turborepo output.

  • +turbo.json pipeline and turbo scripts
  • +pnpm-workspace.yaml
  • +Shared tsconfig.base.json
  • +lint:all and test:all workspace scripts
  • +Remote caching diff for the CI workflow
Turborepo CI/CD

Security-hardened repository

Any stack · CI security

Adds secret detection, dependency auditing and container scanning to an existing repository without touching anything else.

  • +Gitleaks config and workflow with full-history scan
  • +npm audit script with a high-severity threshold
  • +Trivy vulnerability and misconfiguration workflow
  • +OSV-Scanner dependency workflow
Security scanning in CI

Build your own template

Every template above is a list of module ids. The visual builder turns a set of modules into a copy-pasteable command, and the CLI reference documents every flag you can combine.

# One module
npx create-devflow --only vitest

# A group
npx create-devflow --lint --husky

# Everything for the detected stack
npx create-devflow --all

# A specific combination, no wizard
npx create-devflow --only github-actions --only vitest --yes

FAQ

Do templates create a new project?

No. DevFlow configures an existing repository. Create the application first, then apply the template to add the workflow around it.

Can I use a template on a repository that already has configuration?

Yes. Every generated file is created with skip-if-exists semantics, so an existing eslint.config.mjs, .prettierrc.json or CI workflow is left untouched. Only package.json is merged, and existing scripts are never replaced.

Which template should I pick?

Start with the one that matches your stack. If you already have linting and testing, apply only the missing modules with --only, which is safer than applying a whole template.