{"_id":"@axionteams/central","name":"@axionteams/central","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.4":{"name":"@axionteams/central","version":"0.1.4","publishConfig":{"access":"public"},"description":"One command to install any JS/TS framework","type":"module","bin":{"central":"dist/cli.js"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsup","dev":"tsup --watch","start":"node dist/cli.js","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build"},"keywords":["cli","framework","scaffold","installer","nextjs","nestjs","nuxt","sveltekit","astro","remix","hono","vite"],"author":{"name":"CENTRAL contributors"},"license":"MIT","engines":{"node":">=18"},"dependencies":{"@clack/prompts":"^0.9.1","chalk":"^5.4.1","cli-table3":"^0.6.5","commander":"^12.1.0","execa":"^9.5.2","figlet":"^1.8.0","fs-extra":"^11.2.0","ora":"^8.2.0","zod":"^3.24.1"},"devDependencies":{"@types/figlet":"^1.7.0","@types/fs-extra":"^11.0.4","@types/node":"^22.10.5","tsup":"^8.3.5","typescript":"^5.7.3","vitest":"^2.1.8"},"gitHead":"2ffe4638fac7be8f5ae31fa65bffa464cff8d701","_id":"@axionteams/central@0.1.4","_nodeVersion":"22.22.2","_npmVersion":"11.12.1","dist":{"integrity":"sha512-l/nta5iey40HcdXSGwDAB+eXnDFMtIaimYQkHT7R6p1q8HUzMydF+iihmz1cdQruUrsaAN2og+ONda3pACPTEA==","shasum":"62ca949e2bdc5f45776e01b192438c33afa2a13a","tarball":"https://registry.npmjs.org/@axionteams/central/-/central-0.1.4.tgz","fileCount":9,"unpackedSize":214693,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC+wL7rG5GpqxTqg4Lu6kwc2G1E/YZvrgQOoIdnGPfbfQIgUljq3F8JuiRCddcjpHVD6Y4zjZGpWi8mvId/sIGtyFg="}]},"_npmUser":{"name":"axionteams","email":"perintisperintis97@gmail.com"},"directories":{},"maintainers":[{"name":"axionteams","email":"perintisperintis97@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/central_0.1.4_1776527048550_0.14278648926409598"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-18T15:44:08.428Z","0.1.4":"2026-04-18T15:44:08.704Z","modified":"2026-04-18T15:44:08.912Z"},"maintainers":[{"name":"axionteams","email":"perintisperintis97@gmail.com"}],"description":"One command to install any JS/TS framework","keywords":["cli","framework","scaffold","installer","nextjs","nestjs","nuxt","sveltekit","astro","remix","hono","vite"],"author":{"name":"CENTRAL contributors"},"license":"MIT","readme":"<p align=\"center\">\n  <img src=\"https://salmon-wrong-swan-97.mypinata.cloud/ipfs/bafkreigtjsob65jv3ongotzpaimoq34qx4q6siy2cb5jquginpfa773aeq\" />\n</p>\n\n<h1 align=\"center\">CENTRAL</h1>\n\n<p align=\"center\">One command to install any JS/TS framework.</p>\n\n<p align=\"center\">\n  <a href=\"#installation\"><img src=\"https://img.shields.io/badge/node-%3E%3D18-brightgreen\" alt=\"node\" /></a>\n  <a href=\"#license\"><img src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"license\" /></a>\n</p>\n\n---\n\n## What is CENTRAL?\n\n**CENTRAL** is a single CLI that replaces a dozen `npx create-*` commands.\nInstead of memorising a different scaffold command for every framework, you run:\n\n```bash\ncentral\n```\n\n…and pick a framework from an interactive, searchable list. CENTRAL runs the\nright `create-*` under the hood and prints next steps for you.\n\n---\n\n## Installation\n\n```bash\nnpm install -g @axionteams/central\n```\n\nThe global CLI command is still **`central`** (same as before).\n\nRequires **Node.js >= 18**.\n\n---\n\n## Commands\n\n| Command | Description |\n| ------- | ----------- |\n| `central` | Interactive mode — pick a framework from a searchable list. |\n| `central install <id>` | Install a framework directly by id. |\n| `central list` | List all registered frameworks in a table. |\n| `central search <query>` | Search frameworks by name, tag, or category. |\n| `central add [path]` | Register a new framework — via JSON file, flags, or interactive prompts. |\n| `central registry` | Show registry statistics. |\n| `central update` | Check for newer versions of CENTRAL itself. |\n\nEvery command supports `--help`:\n\n```bash\ncentral install --help\n```\n\n---\n\n## Interactive mode\n\nRunning `central` with no arguments:\n\n1. Shows the CENTRAL banner and version.\n2. Asks what type of project you want (`all` / `fullstack` / `backend` / `frontend` / `meta`).\n3. Shows a searchable list of matching frameworks.\n4. Displays the picked framework's description and tags.\n5. Confirms and runs any extra prompts (e.g. project name).\n6. Executes the install command with a spinner.\n7. Prints next steps on success, or a suggested fix on failure.\n\n---\n\n## Built-in frameworks\n\nCENTRAL ships with these defaults out of the box:\n\n- **Next.js** — `npx create-next-app@latest`\n- **Nest.js** — `npm i -g @nestjs/cli && nest new`\n- **Nuxt.js** — `npx nuxi@latest init`\n- **SvelteKit** — `npm create svelte@latest`\n- **Astro** — `npm create astro@latest`\n- **Remix** — `npx create-remix@latest`\n- **Express (TS)** — custom scaffold (creates folder, writes `package.json`, installs `express` + types)\n- **Hono** — `npm create hono@latest`\n- **Vite (React + TS)** — `npm create vite@latest -- --template react-ts`\n- **Analog** — `npm create analog@latest`\n\nSee them all with:\n\n```bash\ncentral list\n```\n\n---\n\n## Adding your own framework\n\nYou have three ways to register a framework. All of them persist to\n`~/.central/registry.json`, so the framework is available to every future\n`central` run.\n\n### Option A — Interactive (no arguments)\n\n```bash\ncentral add\n```\n\nCENTRAL walks you through every field (id, name, description, category,\ninstall command, tags, docs URL). If your command contains the\n`{{projectName}}` token, CENTRAL offers to auto-add a required text prompt\nfor it so `central install <id>` asks the user for a project name.\n\n### Option B — One-shot via flags\n\nUseful for scripts, CI, or sharing commands in chat:\n\n```bash\ncentral add \\\n  --id my-stack \\\n  --name \"My Stack\" \\\n  --description \"An opinionated fullstack starter\" \\\n  --category fullstack \\\n  --tags \"react,ssr\" \\\n  --command \"npx create-my-stack@latest {{projectName}}\"\n```\n\nNotes:\n- `--id` and `--command` are required in flag mode.\n- `--type` is optional; CENTRAL infers `npx`, `npm`, or `custom` from the\n  first word of the command.\n- If the command references `{{projectName}}` a matching prompt is added\n  automatically. Disable with `--no-project-prompt`.\n\n### Option C — Local JSON file\n\nCreate a file `my-framework.json`:\n\n```json\n{\n  \"id\": \"myfw\",\n  \"name\": \"My Framework\",\n  \"description\": \"A shiny new meta-framework.\",\n  \"category\": \"fullstack\",\n  \"tags\": [\"experimental\"],\n  \"docs\": \"https://example.com/docs\",\n  \"install\": {\n    \"type\": \"npx\",\n    \"command\": \"npx create-myfw@latest {{projectName}}\"\n  },\n  \"prompts\": [\n    {\n      \"id\": \"projectName\",\n      \"type\": \"text\",\n      \"message\": \"Project name\",\n      \"placeholder\": \"my-app\",\n      \"required\": true\n    }\n  ],\n  \"nextSteps\": [\"cd {{projectName}}\", \"npm run dev\"]\n}\n```\n\nRegister it:\n\n```bash\ncentral add ./my-framework.json\n```\n\n### Option D — Programmatic API\n\n```ts\nimport { registerFramework } from \"@axionteams/central\";\n\nregisterFramework({\n  id: \"myfw\",\n  name: \"My Framework\",\n  description: \"A shiny new meta-framework.\",\n  category: \"fullstack\",\n  tags: [\"experimental\"],\n  install: { type: \"npx\", command: \"npx create-myfw@latest {{projectName}}\" },\n});\n```\n\n---\n\n## Framework definition schema\n\nEvery framework is validated with [zod](https://zod.dev/) at load time:\n\n```ts\n{\n  id: string;                       // unique, e.g. \"nextjs\"\n  name: string;                     // display name\n  description: string;              // one-line pitch\n  category: \"fullstack\" | \"backend\" | \"frontend\" | \"meta\";\n  tags: string[];\n  docs?: string;                    // URL\n  install: {\n    type: \"npx\" | \"npm\" | \"custom\";\n    command: string;                // shell command, with {{placeholders}}\n    args?: string[];\n  };\n  prompts?: Array<{\n    id: string;                     // answer key\n    type: \"text\" | \"confirm\" | \"select\";\n    message: string;\n    placeholder?: string;\n    initial?: string | boolean;\n    options?: Array<{ value: string; label: string; hint?: string }>;\n    required?: boolean;\n  }>;\n  nextSteps?: string[];             // shown after a successful install\n}\n```\n\nPlaceholder tokens of the form `{{id}}` inside `install.command` and\n`nextSteps` are replaced at runtime by the answer to the prompt with that `id`.\n\n---\n\n## Development\n\n```bash\ngit clone https://github.com/your-org/central.git\ncd central\nnpm install\nnpm run dev       # tsup in watch mode\nnpm run build     # build to ./dist\nnpm test          # vitest\n```\n\n### Folder layout\n\n```\ncentral/\n├── src/\n│   ├── cli.ts\n│   ├── commands/     # install, list, search, add, registry, update, interactive\n│   ├── core/         # registry loader, runner, prompt-engine\n│   ├── ui/           # banner, table, spinner\n│   ├── registry/     # built-in defaults\n│   ├── schemas/      # zod schemas\n│   └── utils/        # fs helpers, package-manager detection\n├── tests/\n└── ...\n```\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-52a8e70c5652dd166cd3f34fba37a0c6"}