{"_id":"@devsphere/expgen","_rev":"4-b7160b97f095cbc253c51c9661e90f20","name":"@devsphere/expgen","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.0":{"name":"@devsphere/expgen","version":"0.0.0","description":"A express scaffolding project to create express projects with the best practices and industry standards.","main":"index.js","bin":{"expgen":"dist/index.js"},"type":"module","scripts":{"build":"npx tsc && node copyTemplate.js"},"keywords":["express","express","generator","express","project","express","project","generator"],"author":{"name":"Anurag Srivastava"},"license":"ISC","dependencies":{"commander":"^12.0.0","fs-extra":"^11.2.0","inquirer":"^8.2.6","validate-npm-package-name":"^5.0.0"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7","@types/validate-npm-package-name":"^4.0.2","@typescript-eslint/eslint-plugin":"^7.1.0","@typescript-eslint/parser":"^7.1.0","eslint":"^8.57.0","typescript":"^5.3.3"},"_id":"@devsphere/expgen@0.0.0","gitHead":"c88a4367b22f6f1fbb1880a957f71500e6a5a5f9","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-Q5Pmcx11yVZhxEpK14aV2zWHZOwJpBXWcUYnroPXdY8s8yXJiaZBFGb2gpX9qG8YgYVATLJp34aF9a9naidndw==","shasum":"efb05cfd2a19813d34e6db763c614bd73a86e434","tarball":"https://registry.npmjs.org/@devsphere/expgen/-/expgen-0.0.0.tgz","fileCount":44,"unpackedSize":44690,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDu0nsLqDCUDZM0ABnK2aHQi2Ptr+vZ3PNA/ksgrPjLJAiEAm58uWfzDPyNaOk8hNVzx7Os1wifUNc7ONJu2iEUk+ss="}]},"_npmUser":{"name":"devsphere","email":"anuragmerndeveloper@gmail.com"},"directories":{},"maintainers":[{"name":"devsphere","email":"anuragmerndeveloper@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/expgen_0.0.0_1715014551399_0.42384475774109154"},"_hasShrinkwrap":false},"0.0.1":{"name":"@devsphere/expgen","version":"0.0.1","description":"A express scaffolding project to create express projects with the best practices and industry standards.","main":"index.js","bin":{"expgen":"dist/index.js"},"type":"module","scripts":{"build":"npx tsc && node copyTemplate.js"},"keywords":["express","express","generator","express","project","express","project","generator"],"author":{"name":"Anurag Srivastava"},"license":"MIT","dependencies":{"commander":"^12.0.0","fs-extra":"^11.2.0","inquirer":"^8.2.6","validate-npm-package-name":"^5.0.0"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7","@types/validate-npm-package-name":"^4.0.2","@typescript-eslint/eslint-plugin":"^7.1.0","@typescript-eslint/parser":"^7.1.0","eslint":"^8.57.0","typescript":"^5.3.3"},"_id":"@devsphere/expgen@0.0.1","gitHead":"1f82fbf572f85fcfe742870697aa84d04237cda0","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-vWfEOVLa+WBUJn8iTvhEDChKmQxYkJewinVuvDrt6QfRrW7Ibs7OKbGCBvwW4u174ciG2V5dXlpjZzSiQmbB4g==","shasum":"903b4ea708082c4d13443184ef321172f50c28ac","tarball":"https://registry.npmjs.org/@devsphere/expgen/-/expgen-0.0.1.tgz","fileCount":46,"unpackedSize":48431,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDo9Q3wr6SwlAFdpyooAoevXNjdBJ3IGIaX6kqV/xNcFAIgLnTxTsLV+5KmUeF97BjyARLJaeId3dneqtgscZp0ALI="}]},"_npmUser":{"name":"devsphere","email":"anuragmerndeveloper@gmail.com"},"directories":{},"maintainers":[{"name":"devsphere","email":"anuragmerndeveloper@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/expgen_0.0.1_1715021759579_0.4165822403788817"},"_hasShrinkwrap":false},"0.0.2":{"name":"@devsphere/expgen","version":"0.0.2","description":"A express scaffolding project to create express projects with the best practices and industry standards.","main":"index.js","bin":{"expgen":"dist/index.js"},"type":"module","scripts":{"build":"npx tsc && node copyTemplate.js"},"repository":{"url":"git+https://github.com/anuragmerndev/expgen.git","type":"git"},"homepage":"https://github.com/anuragmerndev/expgen#readme","keywords":["express","express","generator","express","project","express","project","generator"],"author":{"name":"Anurag Srivastava"},"license":"MIT","dependencies":{"commander":"^12.0.0","fs-extra":"^11.2.0","inquirer":"^8.2.6","validate-npm-package-name":"^5.0.0"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7","@types/validate-npm-package-name":"^4.0.2","@typescript-eslint/eslint-plugin":"^7.1.0","@typescript-eslint/parser":"^7.1.0","eslint":"^8.57.0","typescript":"^5.3.3"},"_id":"@devsphere/expgen@0.0.2","gitHead":"ca85cd6f250e758f6fb8108cb2de42fc8a1a3407","bugs":{"url":"https://github.com/anuragmerndev/expgen/issues"},"_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-ZhOa8dc0akdzIm/G35Qd6AKAvZSc/GOrs8HP8PzlzJqWQNoSUEnw7QDWnUne43a7Qc959T4g+XsRoW7+vB3oTQ==","shasum":"b91d867731695fb58d10343cc004ad2a9c5fdb88","tarball":"https://registry.npmjs.org/@devsphere/expgen/-/expgen-0.0.2.tgz","fileCount":46,"unpackedSize":48595,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFVwraBRU7T1jARDQmXp7TNVSqTttNbjlUNWhplZJHeKAiBPq/PiPw7XcCAT99nUUuLCs94DyL/nB8XCUgtzTMwfTw=="}]},"_npmUser":{"name":"devsphere","email":"anuragmerndeveloper@gmail.com"},"directories":{},"maintainers":[{"name":"devsphere","email":"anuragmerndeveloper@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/expgen_0.0.2_1715139034292_0.5431845065300094"},"_hasShrinkwrap":false},"1.0.0":{"name":"@devsphere/expgen","version":"1.0.0","description":"A express scaffolding project to create express projects with the best practices and industry standards.","main":"index.js","bin":{"expgen":"dist/index.js"},"type":"module","scripts":{"build":"npx tsc && node copyTemplate.js"},"repository":{"url":"git+https://github.com/anuragmerndev/expgen.git","type":"git"},"homepage":"https://github.com/anuragmerndev/expgen#readme","keywords":["express","express","generator","express","project","express","project","generator"],"author":{"name":"Anurag Srivastava"},"license":"MIT","dependencies":{"commander":"^12.0.0","fs-extra":"^11.2.0","inquirer":"^8.2.6","validate-npm-package-name":"^5.0.0"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7","@types/validate-npm-package-name":"^4.0.2","@typescript-eslint/eslint-plugin":"^7.1.0","@typescript-eslint/parser":"^7.1.0","eslint":"^8.57.0","typescript":"^5.3.3"},"_id":"@devsphere/expgen@1.0.0","gitHead":"ca85cd6f250e758f6fb8108cb2de42fc8a1a3407","bugs":{"url":"https://github.com/anuragmerndev/expgen/issues"},"_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-4m+NB0lQL8uh7X0lAGDLv8YmXTZV6O+ZIoV9czIRHg74f+lJ03ubaQtkD6vospU3mc3JBTXAbbHZeDFsUAt4rw==","shasum":"3c4fdd0a2a11dd6aea9ea13b340378459d6816ee","tarball":"https://registry.npmjs.org/@devsphere/expgen/-/expgen-1.0.0.tgz","fileCount":46,"unpackedSize":48595,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBv7IFpbj4AUjS1PwF5MJXOxP6WxW9CKpOFfqVIOZjP1AiAGJUEDsh8RJV0wFwSmGGaKiRTPeDVlfAPwUEjeAvl+0g=="}]},"_npmUser":{"name":"devsphere","email":"anuragmerndeveloper@gmail.com"},"directories":{},"maintainers":[{"name":"devsphere","email":"anuragmerndeveloper@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/expgen_1.0.0_1715139241499_0.5546037361163061"},"_hasShrinkwrap":false},"1.0.1":{"name":"@devsphere/expgen","version":"1.0.1","description":"A express scaffolding project to create express projects with the best practices and industry standards.","main":"index.js","bin":{"expgen":"dist/index.js"},"type":"module","scripts":{"build":"npx tsc && node copyTemplate.js"},"repository":{"url":"git+https://github.com/anuragmerndev/expgen.git","type":"git"},"homepage":"https://github.com/anuragmerndev/expgen#readme","keywords":["express","express","generator","express","project","express","project","generator"],"author":{"name":"Anurag Srivastava"},"license":"MIT","dependencies":{"commander":"^12.0.0","fs-extra":"^11.2.0","inquirer":"^8.2.6","validate-npm-package-name":"^5.0.0"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7","@types/validate-npm-package-name":"^4.0.2","@typescript-eslint/eslint-plugin":"^7.1.0","@typescript-eslint/parser":"^7.1.0","eslint":"^8.57.0","typescript":"^5.3.3"},"_id":"@devsphere/expgen@1.0.1","gitHead":"1acbe397e0e8414467e642a472d12357ea82b85c","bugs":{"url":"https://github.com/anuragmerndev/expgen/issues"},"_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-5l3UyGmJ2SZP2YR5N2r5A76jZ3zHB9otHWgL2S4ybUoOGeb0F3LeZPWbBm+fuVEIre1ux1KRBjj2RcmDfJcLsQ==","shasum":"54cf0a4c80a52df0c8ebf74a965a523ed5676658","tarball":"https://registry.npmjs.org/@devsphere/expgen/-/expgen-1.0.1.tgz","fileCount":46,"unpackedSize":48900,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHiTZtgYPjT7PEQdhNaPojpJyCeqvzV2PzwcfUdOYfWAIgT/PHGADGteIZYbuZddg/QPhWZ/I8XlSeVLAcIlOoMNU="}]},"_npmUser":{"name":"devsphere","email":"anuragmerndeveloper@gmail.com"},"directories":{},"maintainers":[{"name":"devsphere","email":"anuragmerndeveloper@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/expgen_1.0.1_1715196001562_0.29418732941246106"},"_hasShrinkwrap":false}},"time":{"created":"2024-05-06T16:55:51.232Z","0.0.0":"2024-05-06T16:55:51.526Z","modified":"2024-05-08T19:20:02.093Z","0.0.1":"2024-05-06T18:55:59.811Z","0.0.2":"2024-05-08T03:30:34.479Z","1.0.0":"2024-05-08T03:34:01.648Z","1.0.1":"2024-05-08T19:20:01.787Z"},"maintainers":[{"name":"devsphere","email":"anuragmerndeveloper@gmail.com"}],"description":"A express scaffolding project to create express projects with the best practices and industry standards.","keywords":["express","express","generator","express","project","express","project","generator"],"author":{"name":"Anurag Srivastava"},"license":"MIT","readme":"![@devsphere/expgen - scaffolding express application under 1 sec](./public/expgen-banner.png)\r\n\r\n# @devsphere/expgen\r\n\r\nA npm package for Express which helps in scaffolding the application from scratch in less than a minute. The package is built for both SQL and NoSQL databases, following best practices in Node.js with TypeScript, including logging, multi-threading, GitHub hooks, and Dockerfile to make the project production-ready.\r\n\r\n\r\n## Features\r\n\r\n- Scaffolds an Express project with a widely used MVC project structure.\r\n- Supports both SQL and NoSQL databases.\r\n- Implements best practices for Node.js with TypeScript.\r\n- Integrated logging with Winston.\r\n- Provides options for linting, prettier, validation, GitHub hooks, and Docker integration.\r\n\r\n\r\n## Clean Architecture Implementation\r\n\r\nThis project implements the principles of Clean Architecture as follows:\r\n\r\n- Entities or schema are stored in the model folder.\r\n- Services have access to models, ensuring separation of concerns.\r\n- Controllers only have access to services, facilitating loose coupling.\r\n- Routers have access to controllers, maintaining a clear separation of concerns.\r\n- app.ts contains all the logic related to the Express app setup.\r\n- Server clustering and related logic are handled in server.ts.\r\n\r\n\r\n## Installation\r\n\r\nYou don't need to install anything! Simply use the following command to scaffold your project:\r\n\r\n```bash\r\n  npx @devsphere/expgen myproject\r\n  cd my-project\r\n  npm install\r\n  mv .env.example .env //replace the env variables\r\n```\r\nThe command will prompt you with questions regarding your project setup, including database choice, linting, prettier, logging, validation, GitHub hooks, and Docker integration.\r\n## Usage\r\n\r\nFor SQL\r\n\r\n```bash\r\n  npm run prisma:generate //genrate prisma client to work with\r\n  npm run prisma:migrate //create and migrate schema to your server\r\n  npm run start:dev\r\n```\r\nFor NoSQL\r\n\r\n```bash\r\n  //uncomment the code in server.ts\r\n  npm run start:dev\r\n```\r\n### For running on production and using clustering\r\n\r\n```bash\r\n  npm run build\r\n  npm run start:prod\r\n```\r\n## Contributing\r\n\r\nContributions are welcome! Feel free to pick any task from the future work section below and start working on it. For any questions or suggestions, please reach out on [anuragmerndeveloper@gmail.com](mailto:anuragmerndeveloper@gmail.com).\r\n\r\n\r\n## License\r\n\r\nThis project is licensed under the [MIT](https://choosealicense.com/licenses/mit/) License - see the [LICENSE](https://github.com/anuragmerndev/expgen/blob/main/LICENSE) file for details.\r\n\r\n\r\n## Future Work\r\n\r\n- Adding GraphQL as an option.\r\n- Adding Domain-Driven Design (DDD) as another architecture option.\r\n- Integrating Swagger for API documentation.\r\n\r\n","readmeFilename":"README.md","homepage":"https://github.com/anuragmerndev/expgen#readme","repository":{"url":"git+https://github.com/anuragmerndev/expgen.git","type":"git"},"bugs":{"url":"https://github.com/anuragmerndev/expgen/issues"}}