3 min read

xtarterize

typescript nodejs pnpm turbo vite vitest biome

Overview 🔗

xtarterize is a CLI tool that detects your JavaScript/TypeScript project stack automatically, then applies curated production-grade configurations for linting, type checking, CI workflows, code generation, editor settings, and more — all without destructively overwriting your existing setup.

Run npx xtarterize init and your project gets Biome, TypeScript incremental builds, Renovate, commitlint, VS Code settings, GitHub Actions, and more — tailored to your specific stack.

Why I Built This 🔗

I found myself repeatedly copying configuration files between projects — ESLint configs, Prettier setups, GitHub Actions workflows, TypeScript settings. Each new project required the same boilerplate setup, and keeping all those configs in sync across dozens of repos was unmaintainable.

Rather than maintaining templates that quickly go stale, I wanted a tool that could inspect any existing project and apply the right configurations dynamically. xtarterize solves this by detecting your stack and applying only what you need.

Key Features 🔗

Stack Detection 🔗

Reads package.json, lockfiles, and existing config files to build a ProjectProfile. Supports React, React Native, Vue, Svelte, Solid, Node.js, Vite, Next.js, Expo, TanStack Start, Tailwind, and more.

Non-Destructive Application 🔗

All configurations are applied using deep merge and AST patching. Existing content is preserved, and every modified file is backed up to .xtarterize/backups/.

Dry-Run First 🔗

Always see exactly what will change before applying anything. No surprises.

Idempotent 🔗

Running xtarterize init twice changes nothing on the second run. Safe to run in CI or on cron.

Task Categories 🔗

Covers linting (Biome), TypeScript (incremental builds, strict mode), CI/CD (GitHub Actions), dependencies (Renovate), release (commitlint, czg), quality (Knip), codegen (Plop), monorepo (Turborepo), editor settings, and AI agent configs (AGENTS.md).

Build Notes 🔗

Monorepo Architecture 🔗

Built as a pnpm workspace monorepo with three core packages: @xtarterize/core for detection and task interface, @xtarterize/patchers for config file manipulation, and @xtarterize/tasks for all task implementations. The CLI itself lives in apps/cli using citty and @clack/prompts.

Real Templates from Production 🔗

Every configuration template is derived from actual production projects, not theoretical examples. This ensures the configs work in real-world scenarios with real dependency versions.

Modular Task System 🔗

Each task implements a simple interface: applicable(profile), check(cwd, profile), dryRun(cwd, profile), and apply(cwd, profile). Adding new tasks is straightforward — implement the interface and export it.