{"_rev":"4-97028903863adce1bcf001e2e705fa13","time":{"created":"2026-05-15T19:36:27.654Z","modified":"2026-05-15T19:36:28.092Z","1.0.0":"2026-05-15T19:26:36.635Z","1.0.1":"2026-05-15T19:36:27.880Z"},"_id":"@amzamul/genova","name":"@amzamul/genova","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.1":{"name":"@amzamul/genova","version":"1.0.1","description":"Production-ready backend scaffolding CLI for Node.js and TypeScript","author":{"name":"Amzamul Haque"},"license":"MIT","type":"module","bin":{"genova":"dist/bin/genova.cjs"},"main":"./dist/index.js","keywords":["cli","typescript","backend-generator","node-cli","scaffolding","code-generator"],"scripts":{"build":"tsup src/bin/genova.ts --format cjs --dts --clean --outDir dist/bin --splitting false --target node18","dev":"tsup src/bin/genova.ts --format cjs --dts --clean --outDir dist/bin --watch","type-check":"tsc --noEmit","prepublishOnly":"npm run type-check && npm run build"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/amzamulh/genova.git"},"bugs":{"url":"https://github.com/amzamulh/genova/issues"},"homepage":"https://github.com/amzamulh/genova#readme","dependencies":{"chalk":"^5.6.2","commander":"^14.0.3","fs-extra":"^11.3.5","handlebars":"^4.7.9"},"devDependencies":{"@types/chalk":"^0.4.31","@types/fs-extra":"^11.0.4","@types/node":"^25.8.0","tsup":"^8.5.1","typescript":"^6.0.3"},"_id":"@amzamul/genova@1.0.1","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-3cgwoRcLI76iCAG1TnIIJbo/lV0a3QdWn6/shTZMGUzJfzIe47OmH+UcxvW+Fe7zWKBkxoilbudxlu7R0Mfsrw==","shasum":"b0b7547f51685c544a1deca5f234272685282c7d","tarball":"https://registry.npmjs.org/@amzamul/genova/-/genova-1.0.1.tgz","fileCount":7,"unpackedSize":26510,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAyoeJysSfSNoZGvX75tqlksa6XXKYjFqP1ZMrh747zbAiEAv5m+Mz65PRmbaPaovoXI2DoGxL/gDroGb0qa1HTO/rc="}]},"_npmUser":{"name":"amzamul","email":"amzamulh@gmail.com"},"directories":{},"maintainers":[{"name":"amzamul","email":"amzamulh@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/genova_1.0.1_1778873787753_0.2951259698673858"},"_hasShrinkwrap":false}},"maintainers":[{"name":"amzamul","email":"amzamulh@gmail.com"}],"description":"Production-ready backend scaffolding CLI for Node.js and TypeScript","homepage":"https://github.com/amzamulh/genova#readme","keywords":["cli","typescript","backend-generator","node-cli","scaffolding","code-generator"],"repository":{"type":"git","url":"git+https://github.com/amzamulh/genova.git"},"author":{"name":"Amzamul Haque"},"bugs":{"url":"https://github.com/amzamulh/genova/issues"},"license":"MIT","readme":"````md\r\n# Genova\r\n\r\nGenova is a CLI tool for generating backend structure in Node.js and TypeScript projects.\r\n\r\nIt creates consistent files for:\r\n\r\n- models\r\n- services\r\n- controllers\r\n- middlewares\r\n\r\nIt reduces manual setup and keeps structure predictable.\r\n\r\n---\r\n\r\n## Install\r\n\r\n### Global install\r\n\r\n```bash\r\nnpm install -g @amzamul/genova\r\n```\r\n````\r\n\r\nCheck install:\r\n\r\n```bash\r\ngenova --help\r\n```\r\n\r\n---\r\n\r\n### Run without install\r\n\r\n```bash\r\nnpx @amzamul/genova --help\r\n```\r\n\r\n---\r\n\r\n## Init project\r\n\r\nCreate config file in your project:\r\n\r\n```bash\r\ngenova init\r\n```\r\n\r\nThis creates:\r\n\r\n```json\r\n{\r\n  \"project\": {\r\n    \"srcDir\": \"src\",\r\n    \"fileCase\": \"camel\"\r\n  },\r\n  \"model\": {\r\n    \"files\": [\"model\", \"index\"],\r\n    \"fileCase\": \"camel\"\r\n  }\r\n}\r\n```\r\n\r\nGenova uses default settings for everything else.\r\n\r\n---\r\n\r\n## Generate files\r\n\r\n### Model\r\n\r\n```bash\r\ngenova mk:model User\r\n```\r\n\r\nOutput:\r\n\r\n```txt\r\nsrc/models/user/\r\n  userModel.ts\r\n  index.ts\r\n```\r\n\r\n---\r\n\r\n### Service\r\n\r\n```bash\r\ngenova mk:service User\r\n```\r\n\r\nOutput:\r\n\r\n```txt\r\nsrc/services/user/\r\n  userService.ts\r\n  index.ts\r\n```\r\n\r\n---\r\n\r\n### Controller\r\n\r\n```bash\r\ngenova mk:controller User\r\n```\r\n\r\nOutput:\r\n\r\n```txt\r\nsrc/controllers/user/\r\n  userController.ts\r\n  index.ts\r\n```\r\n\r\n---\r\n\r\n### Middleware\r\n\r\n```bash\r\ngenova mk:middleware Auth\r\n```\r\n\r\nOutput:\r\n\r\n```txt\r\nsrc/middlewares/auth/\r\n  authMiddleware.ts\r\n  index.ts\r\n```\r\n\r\n---\r\n\r\n## Config file\r\n\r\nGenova reads config from:\r\n\r\n```txt\r\ngenova.config.json\r\n```\r\n\r\nExample:\r\n\r\n```json\r\n{\r\n  \"project\": {\r\n    \"srcDir\": \"src\",\r\n    \"fileCase\": \"camel\"\r\n  }\r\n}\r\n```\r\n\r\n---\r\n\r\n## File naming\r\n\r\nYou can control file naming style.\r\n\r\n### camel (default)\r\n\r\n```json\r\n{\r\n  \"project\": {\r\n    \"srcDir\": \"src\",\r\n    \"fileCase\": \"camel\"\r\n  }\r\n}\r\n```\r\n\r\nOutput:\r\n\r\n```txt\r\nuserModel.ts\r\nuserService.ts\r\n```\r\n\r\n---\r\n\r\n### kebab\r\n\r\n```json\r\n{\r\n  \"project\": {\r\n    \"fileCase\": \"kebab\"\r\n  }\r\n}\r\n```\r\n\r\nOutput:\r\n\r\n```txt\r\nuser.model.ts\r\nuser.service.ts\r\n```\r\n\r\n---\r\n\r\n### flat\r\n\r\n```json\r\n{\r\n  \"project\": {\r\n    \"fileCase\": \"flat\"\r\n  }\r\n}\r\n```\r\n\r\nOutput:\r\n\r\n```txt\r\nusermodel.ts\r\nuserservice.ts\r\n```\r\n\r\n---\r\n\r\n### dot\r\n\r\n```json\r\n{\r\n  \"project\": {\r\n    \"fileCase\": \"dot\"\r\n  }\r\n}\r\n```\r\n\r\nOutput:\r\n\r\n```txt\r\nuser.model.ts\r\nuser.service.ts\r\n```\r\n\r\n---\r\n\r\n## Override defaults\r\n\r\nYou can override generator behavior.\r\n\r\n### Example: service files\r\n\r\n```json\r\n{\r\n  \"service\": {\r\n    \"files\": [\"service\", \"types\", \"index\"]\r\n  }\r\n}\r\n```\r\n\r\nResult:\r\n\r\n```txt\r\nuserService.ts\r\nuserTypes.ts\r\nindex.ts\r\n```\r\n\r\n---\r\n\r\n## Change directory\r\n\r\nExample:\r\n\r\n```json\r\n{\r\n  \"controller\": {\r\n    \"directory\": \"api/controllers\"\r\n  }\r\n}\r\n```\r\n\r\nOutput:\r\n\r\n```txt\r\nsrc/api/controllers/user/\r\n```\r\n\r\n---\r\n\r\n## Default structure\r\n\r\nIf you do not change config:\r\n\r\n```txt\r\nsrc/\r\n  models/\r\n  services/\r\n  controllers/\r\n  middlewares/\r\n```\r\n\r\n---\r\n\r\n## Commands\r\n\r\n### Init config\r\n\r\n```bash\r\ngenova init\r\n```\r\n\r\n---\r\n\r\n### Generate model\r\n\r\n```bash\r\ngenova mk:models <name>\r\n```\r\n\r\nExample:\r\n\r\n```bash\r\ngenova mk:models User\r\n```\r\n\r\n---\r\n\r\n### Generate service\r\n\r\n```bash\r\ngenova mk:services <name>\r\n```\r\n\r\n---\r\n\r\n### Generate controller\r\n\r\n```bash\r\ngenova mk:controllers <name>\r\n```\r\n\r\n---\r\n\r\n### Generate middleware\r\n\r\n```bash\r\ngenova mk:middlewares <name>\r\n```\r\n\r\n---\r\n\r\n## Example workflow\r\n\r\n```bash\r\ngenova mk:models User\r\ngenova mk:services User\r\ngenova mk:controllers User\r\ngenova mk:middlewares Auth\r\n```\r\n\r\nOutput:\r\n\r\n```txt\r\nsrc/\r\n  models/user/\r\n  services/user/\r\n  controllers/user/\r\n  middlewares/auth/\r\n```\r\n\r\n---\r\n\r\n## Requirements\r\n\r\n- Node.js 18+\r\n- npm, yarn, pnpm, or bun\r\n\r\n---\r\n\r\n## Run with npx\r\n\r\n```bash\r\nnpx @amzamul/genova\r\n```\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT\r\n\r\n---\r\n\r\n## Author\r\n\r\nAmzamul Haque\r\n\r\n```\r\nhttps://www.github.com/amzamulh\r\n```\r\n","readmeFilename":"README.md"}