{"id":45220879,"url":"https://github.com/agustinusnathaniel/xtarter","last_synced_at":"2026-05-22T07:09:09.165Z","repository":{"id":66349687,"uuid":"493357873","full_name":"agustinusnathaniel/xtarter","owner":"agustinusnathaniel","description":"Starter templates landing page","archived":false,"fork":false,"pushed_at":"2026-01-01T04:57:33.000Z","size":986,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-05T14:17:28.519Z","etag":null,"topics":["chakra-ui","gallery","github","nextjs","template-gallery","typescript"],"latest_commit_sha":null,"homepage":"https://xtarter.sznm.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agustinusnathaniel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"sozonome","patreon":null,"open_collective":null,"ko_fi":"sozonome","tidelift":null,"community_bridge":null,"liberapay":"sozonome","issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://buymeacoff.ee/sozonome","https://www.nihbuatjajan.com/sozonome","https://trakteer.id/sozonome/tip?utm_source=github_sozonome"]}},"created_at":"2022-05-17T17:53:14.000Z","updated_at":"2026-01-01T04:57:34.000Z","dependencies_parsed_at":"2024-11-02T04:18:39.326Z","dependency_job_id":"32a7108c-64e8-44af-8998-070048fa01ce","html_url":"https://github.com/agustinusnathaniel/xtarter","commit_stats":null,"previous_names":["agustinusnathaniel/xtarter"],"tags_count":1,"template":false,"template_full_name":"agustinusnathaniel/nextarter-chakra","purl":"pkg:github/agustinusnathaniel/xtarter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agustinusnathaniel%2Fxtarter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agustinusnathaniel%2Fxtarter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agustinusnathaniel%2Fxtarter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agustinusnathaniel%2Fxtarter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agustinusnathaniel","download_url":"https://codeload.github.com/agustinusnathaniel/xtarter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agustinusnathaniel%2Fxtarter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29660017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T16:33:43.953Z","status":"ssl_error","status_checked_at":"2026-02-20T16:33:43.598Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chakra-ui","gallery","github","nextjs","template-gallery","typescript"],"created_at":"2026-02-20T18:30:04.499Z","updated_at":"2026-05-22T07:09:09.159Z","avatar_url":"https://github.com/agustinusnathaniel.png","language":"TypeScript","funding_links":["https://github.com/sponsors/sozonome","https://ko-fi.com/sozonome","https://liberapay.com/sozonome","https://buymeacoff.ee/sozonome","https://www.nihbuatjajan.com/sozonome","https://trakteer.id/sozonome/tip?utm_source=github_sozonome"],"categories":[],"sub_categories":[],"readme":"# xtarter\n\n[![All Contributors](https://img.shields.io/github/all-contributors/agustinusnathaniel/xtarterize?color=ee8449\u0026style=flat-square)](#contributors)\n\nProduction-grade scaffolding and conformance tooling for JavaScript/TypeScript projects.\n\nThe **xtarter stack** gives you two complementary tools:\n\n| Tool | Phase | Purpose |\n|------|-------|---------|\n| [**create-xtarter-app**](https://github.com/agustinusnathaniel/create-xtarter-app) | Day 0 | Scaffold a new project from curated templates with best practices baked in |\n| **xtarterize** | Day 1+ | Detect your stack and apply production-grade conformance to any existing project |\n\n## Quick Start\n\n```bash\n# Day 0: Scaffold a new project from a template\nnpx create-xtarter-app@latest my-app\n\n# Day 1+: Add production-grade conformance to any existing project\ncd my-app\nnpx xtarterize init\n```\n\n`xtarterize` auto-detects your tech stack, then applies curated configurations for linting, type checking, CI workflows, code generation, editor settings, and more — without destructively overwriting your existing setup.\n\n## Supported Stacks\n\n| Category | Supported |\n|----------|-----------|\n| Frameworks | React, React Native, Vue, Svelte, Solid, Node.js |\n| Bundlers | Vite, Next.js, Expo, TanStack Start, Webpack, Rspack |\n| Styling | Tailwind, Vanilla, CSS Modules, Styled Components, NativeWind, Vanilla Extract |\n| Package Managers | pnpm, npm, yarn, bun |\n\n## xtarterize Commands\n\n| Command | Description |\n|---------|-------------|\n| `npx xtarterize init` | Scan project and apply conformance configurations |\n| `npx xtarterize sync` | Update existing configurations to latest templates |\n| `npx xtarterize diff` | Show pending changes without applying anything |\n| `npx xtarterize check` | Audit current conformance status |\n| `npx xtarterize add \u003ctask\u003e` | Apply a specific task (e.g., `lint/biome`) |\n| `npx xtarterize restore \u003cfile\u003e` | Restore a file from backup |\n| `npx xtarterize list` | List all available tasks and their status |\n\n## How xtarterize Works\n\n1. **Detect** — Reads `package.json`, lockfiles, and config files to build a `ProjectProfile`\n2. **Resolve** — Determines which tasks are applicable and their current status (`new`, `patch`, `skip`, `conflict`)\n3. **Plan** — Shows you exactly what will change before touching anything\n4. **Apply** — Writes configurations using deep merge and AST patching, backing up originals\n\n## Task Categories\n\n- **Linting** — Biome\n- **TypeScript** — Incremental builds, strict mode\n- **Vite Plugins** — vite-plugin-checker, rollup-plugin-visualizer\n- **CI/CD** — GitHub Actions (CI, release, auto-update)\n- **Dependencies** — Renovate configuration\n- **Release** — commitlint, czg, commit-and-tag-version\n- **Quality** — Knip (unused code detection)\n- **Codegen** — Plop generators (framework-aware scaffolding)\n- **Monorepo** — Turborepo pipeline\n- **Editor** — VS Code settings and extensions\n- **AI Agents** — AGENTS.md for AI IDE assistants\n- **Scripts** — Standardized package.json scripts\n\n## Create an xtarter App Templates\n\n`create-xtarter-app` ships with curated starter templates, each pre-configured with Biome, TypeScript strict mode, GitHub Actions CI, VS Code settings, and AI agent skills:\n\n| Template | Stack |\n|----------|-------|\n| `next-chakra` | Next.js + Chakra UI v3 |\n| `next-tailwind` | Next.js + Tailwind CSS v4 |\n| `vite-chakra` | Vite + React + Chakra UI v3 + TanStack Router |\n| `vite-tailwind` | Vite + React + Tailwind CSS v4 + TanStack Router |\n| `vite-hero` | Vite + React + Hero UI |\n\n## Monorepo Structure\n\n```\nxtarterize/\n├── packages/\n│   ├── core/          # Detection engine, task interface, utils, resolve/apply/backup\n│   ├── patchers/      # JSON merge, YAML merge, AST patching (magicast)\n│   └── tasks/         # All task implementations + templates\n├── apps/\n│   ├── xtarterize/     # Conformance CLI (citty + @clack/prompts)\n│   └── create-xtarter-app/  # Project scaffolding CLI (citty + giget)\n├── test/              # Shared test fixtures and test suites\n├── turbo.json\n└── pnpm-workspace.yaml\n```\n\n### Packages\n\n| Package | Description | Publishable |\n|---------|-------------|-------------|\n| `@xtarterize/core` | Project detection, task interface, file utilities, resolve/apply/backup engine | Yes |\n| `@xtarterize/patchers` | Deep merge (defu), YAML merge, AST patching (magicast) for config files | Yes |\n| `@xtarterize/tasks` | All task implementations and template renderers | Internal |\n| `xtarterize` | CLI for applying conformance configurations to existing projects | Yes |\n| `create-xtarter-app` | CLI for scaffolding new projects from templates | Yes |\n\n## Contributing a New Task\n\n1. Implement the `Task` interface from [`packages/core/src/_base.ts`](packages/core/src/_base.ts)\n2. Create your task file in `packages/tasks/src/\u003ccategory\u003e/\u003ctask\u003e.ts`\n3. Export it from [`packages/tasks/src/index.ts`](packages/tasks/src/index.ts)\n4. Add tests in `test/tasks/`\n\nEach task must implement:\n- `applicable(profile)` — Should this task run for this project?\n- `check(cwd, profile)` — What's the current status?\n- `dryRun(cwd, profile)` — What would change?\n- `apply(cwd, profile)` — Make the changes\n\n## Development\n\n```bash\npnpm install          # Install all workspace dependencies\npnpm build            # Build all packages (turbo)\npnpm dev              # Watch mode for all packages\npnpm test             # Run all tests\npnpm typecheck        # Type check all packages\n```\n\n## Key Principles\n\n- **Idempotent** — Running twice changes nothing on the second run\n- **Non-destructive** — Existing content is preserved via deep merge\n- **Dry-run first** — Always see what will change before applying\n- **Backup always** — Every modified file is backed up to `.xtarterize/backups/`\n- **Real templates** — All configurations derived from actual production projects\n\n## Contributors\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://agustinusnathaniel.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/17046154?v=4?s=100\" width=\"100px;\" alt=\"Agustinus Nathaniel\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAgustinus Nathaniel\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/agustinusnathaniel/xtarterize/commits?author=agustinusnathaniel\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/agustinusnathaniel/xtarterize/commits?author=agustinusnathaniel\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#design-agustinusnathaniel\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"#infra-agustinusnathaniel\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"#ideas-agustinusnathaniel\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/agustinusnathaniel/xtarterize/commits?author=agustinusnathaniel\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/bryanprimus\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/46083126?v=4?s=100\" width=\"100px;\" alt=\"Bryan Primus\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBryan Primus\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/agustinusnathaniel/xtarterize/commits?author=bryanprimus\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n  \u003ctfoot\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" size=\"13px\" colspan=\"7\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg\"\u003e\n          \u003ca href=\"https://all-contributors.js.org/docs/en/bot/usage\"\u003eAdd your contributions\u003c/a\u003e\n        \u003c/img\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tfoot\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nContributions of any kind welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) to get started.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagustinusnathaniel%2Fxtarter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagustinusnathaniel%2Fxtarter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagustinusnathaniel%2Fxtarter/lists"}