{"_id":"@alexmc2/create-express-api-starter","_rev":"9-d3e83a4e3373378e36307acfdb5d92fb","name":"@alexmc2/create-express-api-starter","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@alexmc2/create-express-api-starter","version":"0.1.0","keywords":["express","express-generator","scaffold","cli","starter","boilerplate","api","rest","typescript","javascript","postgres","jest","supertest"],"license":"MIT","_id":"@alexmc2/create-express-api-starter@0.1.0","maintainers":[{"name":"alexmc2","email":"alexandramcgarryx@gmail.com"}],"homepage":"https://github.com/alexmc2/create-express-api-starter#readme","bugs":{"url":"https://github.com/alexmc2/create-express-api-starter/issues"},"bin":{"create-express-api-starter":"dist/cli.js"},"dist":{"shasum":"317dae9f58dff40a2fb5ee13c0a61e047c8fb637","tarball":"https://registry.npmjs.org/@alexmc2/create-express-api-starter/-/create-express-api-starter-0.1.0.tgz","fileCount":107,"integrity":"sha512-yEEl6ScBjWa3EAKW1YtfP547SQTfpul1FF3sxsCxfRg+qhP7Lg3xHJOisgJebUgsVgWQcS8EEj66ELKHStWVjw==","signatures":[{"sig":"MEQCIDxgHXGlvt5hx5egrmN2jzw6unoappkRNTOkEFA/rvvfAiAzW9Gr1ZY8BiqvbzjJTQcM+U6o4712E9yb11rFZ4nOrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212391},"type":"module","engines":{"node":">=20"},"gitHead":"e48d2010d0c02fed222743b8ffb5f2624c821f86","scripts":{"dev":"tsx src/cli/index.ts","pack":"npm pack","test":"vitest run","build":"tsup","prepack":"npm run build","test:unit":"vitest run --exclude test/integration.generated-projects.test.ts","prepublishOnly":"npm run test:unit"},"_npmUser":{"name":"alexmc2","email":"alexandramcgarryx@gmail.com"},"repository":{"url":"git+https://github.com/alexmc2/create-express-api-starter.git","type":"git"},"_npmVersion":"11.6.2","description":"Interactive CLI to scaffold API-first Express backend projects","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ejs":"^3.1.10","execa":"^9.5.2","fs-extra":"^11.2.0","picocolors":"^1.1.1","@clack/prompts":"^0.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","tsup":"^8.3.5","vitest":"^2.1.8","@types/ejs":"^3.1.5","typescript":"^5.7.2","@types/node":"^20.17.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/create-express-api-starter_0.1.0_1771351230355_0.09190742159352472","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alexmc2/create-express-api-starter","version":"0.1.1","keywords":["express","express-generator","scaffold","cli","starter","boilerplate","api","rest","typescript","javascript","postgres","jest","supertest"],"license":"MIT","_id":"@alexmc2/create-express-api-starter@0.1.1","maintainers":[{"name":"alexmc2","email":"alexandramcgarryx@gmail.com"}],"homepage":"https://github.com/alexmc2/create-express-api-starter#readme","bugs":{"url":"https://github.com/alexmc2/create-express-api-starter/issues"},"bin":{"create-express-api-starter":"dist/cli.js"},"dist":{"shasum":"a7f307006ed068aa299c0b4f6b5efeb7b66c8d1a","tarball":"https://registry.npmjs.org/@alexmc2/create-express-api-starter/-/create-express-api-starter-0.1.1.tgz","fileCount":107,"integrity":"sha512-gtbYi1dbWyec55gBAx2GrSRYE9xFGAiAlLpffQvmULS8Coar6rumqUrHUjOmNazVpsBewfdf/KP8OwpuvvJfhw==","signatures":[{"sig":"MEUCIQDWpnu+urjry9RWtiEXwTPhDdHPVZrL8CZRl+x96nvGtgIgSHmIFdLd9Tkg9h4icmQPUyOjolkzGB4MsJ69ugOcefI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexmc2%2fcreate-express-api-starter@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":213397},"type":"module","engines":{"node":">=20"},"gitHead":"7771256930ee520d95e2ccc81a292d6640c61cb9","scripts":{"dev":"tsx src/cli/index.ts","pack":"npm pack","test":"vitest run","build":"tsup","prepack":"npm run build","test:unit":"vitest run --exclude test/integration.generated-projects.test.ts","prepublishOnly":"npm run test:unit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d9e54487-84d3-4ceb-8ce0-823197d25e10"}},"repository":{"url":"git+https://github.com/alexmc2/create-express-api-starter.git","type":"git"},"_npmVersion":"11.6.2","description":"Interactive CLI to scaffold API-first Express backend projects","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ejs":"^3.1.10","execa":"^9.5.2","fs-extra":"^11.2.0","picocolors":"^1.1.1","@clack/prompts":"^0.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","tsup":"^8.3.5","vitest":"^2.1.8","@types/ejs":"^3.1.5","typescript":"^5.7.2","@types/node":"^20.17.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/create-express-api-starter_0.1.1_1771376911894_0.7833721191106695","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@alexmc2/create-express-api-starter","version":"0.1.2","keywords":["express","express-generator","scaffold","cli","starter","boilerplate","api","rest","typescript","javascript","postgres","jest","supertest"],"license":"MIT","_id":"@alexmc2/create-express-api-starter@0.1.2","maintainers":[{"name":"alexmc2","email":"alexandramcgarryx@gmail.com"}],"homepage":"https://github.com/alexmc2/create-express-api-starter#readme","bugs":{"url":"https://github.com/alexmc2/create-express-api-starter/issues"},"bin":{"create-express-api-starter":"dist/cli.js"},"dist":{"shasum":"ba30f724971da622a1d853bb616ccade1bd8b86b","tarball":"https://registry.npmjs.org/@alexmc2/create-express-api-starter/-/create-express-api-starter-0.1.2.tgz","fileCount":107,"integrity":"sha512-bs4up2GyrbE78XKYVKFss5J0GK+Othcycuz+QJLJMwWLNdEbwWHNlx6yornMwvfVEuUD51N/tuz9OrIdmr1TjA==","signatures":[{"sig":"MEQCIF/1G2k9l5Ybo7IVsjteJbFgvPQKMeM6aIWpBON4ci01AiBx6aznI6L6uclmGDwvUhjSzUVl8GLER1Y6knmkBhkydQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexmc2%2fcreate-express-api-starter@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":213502},"type":"module","engines":{"node":">=20"},"gitHead":"4c30cab7b66b31f3ec5589a7480d700927a4e223","scripts":{"dev":"tsx src/cli/index.ts","pack":"npm pack","test":"vitest run","build":"tsup","prepack":"npm run build","test:unit":"vitest run --exclude test/integration.generated-projects.test.ts","prepublishOnly":"npm run test:unit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d9e54487-84d3-4ceb-8ce0-823197d25e10"}},"repository":{"url":"git+https://github.com/alexmc2/create-express-api-starter.git","type":"git"},"_npmVersion":"11.6.2","description":"Interactive CLI to scaffold API-first Express backend projects","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ejs":"^3.1.10","execa":"^9.5.2","fs-extra":"^11.2.0","picocolors":"^1.1.1","@clack/prompts":"^0.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","tsup":"^8.3.5","vitest":"^2.1.8","@types/ejs":"^3.1.5","typescript":"^5.7.2","@types/node":"^20.17.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/create-express-api-starter_0.1.2_1771379423190_0.08946735227407676","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@alexmc2/create-express-api-starter","version":"0.1.3","keywords":["express","express-generator","scaffold","cli","starter","boilerplate","api","rest","typescript","javascript","postgres","jest","supertest"],"license":"MIT","_id":"@alexmc2/create-express-api-starter@0.1.3","maintainers":[{"name":"alexmc2","email":"alexandramcgarryx@gmail.com"}],"homepage":"https://github.com/alexmc2/create-express-api-starter#readme","bugs":{"url":"https://github.com/alexmc2/create-express-api-starter/issues"},"bin":{"create-express-api-starter":"dist/cli.js"},"dist":{"shasum":"b8480f6070b47842e531e5ceaabe2cad661fd387","tarball":"https://registry.npmjs.org/@alexmc2/create-express-api-starter/-/create-express-api-starter-0.1.3.tgz","fileCount":107,"integrity":"sha512-d6rH2WFi8RZIjQkASS9vJzasJ5hH8xKBtgPFrUejlUUCGw+Navj7waIac9mfTDuwWrFJnPAWjrWeoUjS6bYQ9A==","signatures":[{"sig":"MEYCIQCKdftz1dbopchH4LGG8payGEBknhdz8zimm6V3eKgd9wIhAILR1sWb3bYwQT7rWrq/g4uIlV+9Pj8nvkz5uqbTH4A/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexmc2%2fcreate-express-api-starter@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":213511},"type":"module","engines":{"node":">=20"},"gitHead":"11cf669655b8fa3ecf66defe34d288ef3363606c","scripts":{"dev":"tsx src/cli/index.ts","pack":"npm pack","test":"vitest run","build":"tsup","prepack":"npm run build","test:unit":"vitest run --exclude test/integration.generated-projects.test.ts","prepublishOnly":"npm run test:unit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d9e54487-84d3-4ceb-8ce0-823197d25e10"}},"repository":{"url":"git+https://github.com/alexmc2/create-express-api-starter.git","type":"git"},"_npmVersion":"11.6.2","description":"Interactive CLI to scaffold API-first Express backend projects","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ejs":"^3.1.10","execa":"^9.5.2","fs-extra":"^11.2.0","picocolors":"^1.1.1","@clack/prompts":"^0.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","tsup":"^8.3.5","vitest":"^2.1.8","@types/ejs":"^3.1.5","typescript":"^5.7.2","@types/node":"^20.17.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/create-express-api-starter_0.1.3_1771413020824_0.0010610927905110312","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@alexmc2/create-express-api-starter","version":"0.1.4","keywords":["express","express-generator","scaffold","cli","starter","boilerplate","api","rest","typescript","javascript","postgres","jest","supertest"],"license":"MIT","_id":"@alexmc2/create-express-api-starter@0.1.4","maintainers":[{"name":"alexmc2","email":"alexandramcgarryx@gmail.com"}],"homepage":"https://github.com/alexmc2/create-express-api-starter#readme","bugs":{"url":"https://github.com/alexmc2/create-express-api-starter/issues"},"bin":{"create-express-api-starter":"dist/cli.js"},"dist":{"shasum":"428f8ebd6450118af6bc4f13e28cb26e6da93951","tarball":"https://registry.npmjs.org/@alexmc2/create-express-api-starter/-/create-express-api-starter-0.1.4.tgz","fileCount":107,"integrity":"sha512-5pTB9MbSbfpdl3eWmqHuJPB42LDrUCbxApuVdDq2QXm/dsDUqTQ8VdRcG3QXsetBG+HmuJXX2dXWR0xlllo0iA==","signatures":[{"sig":"MEQCIDdkf+dLLOyuelBgnTPU1xrCBjUIV8E57rzEDu9FRnjTAiAH2eEfhRu0Btv0gJPsYuWbcNT7NKmWf5neJQhd0OrxSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexmc2%2fcreate-express-api-starter@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":214218},"type":"module","engines":{"node":">=20"},"gitHead":"cd62508467b8894318aa3f48576f24794e698611","scripts":{"dev":"tsx src/cli/index.ts","pack":"npm pack","test":"vitest run","build":"tsup","prepack":"npm run build","test:unit":"vitest run --exclude test/integration.generated-projects.test.ts","prepublishOnly":"npm run test:unit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d9e54487-84d3-4ceb-8ce0-823197d25e10"}},"repository":{"url":"git+https://github.com/alexmc2/create-express-api-starter.git","type":"git"},"_npmVersion":"11.6.2","description":"Interactive CLI to scaffold API-first Express backend projects","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ejs":"^3.1.10","execa":"^9.5.2","fs-extra":"^11.2.0","picocolors":"^1.1.1","@clack/prompts":"^0.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","tsup":"^8.3.5","vitest":"^2.1.8","@types/ejs":"^3.1.5","typescript":"^5.7.2","@types/node":"^20.17.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/create-express-api-starter_0.1.4_1771422127568_0.41949150393654033","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@alexmc2/create-express-api-starter","version":"0.1.5","keywords":["express","express-generator","scaffold","cli","starter","boilerplate","api","rest","typescript","javascript","postgres","jest","supertest"],"license":"MIT","_id":"@alexmc2/create-express-api-starter@0.1.5","maintainers":[{"name":"alexmc2","email":"alexandramcgarryx@gmail.com"}],"homepage":"https://github.com/alexmc2/create-express-api-starter#readme","bugs":{"url":"https://github.com/alexmc2/create-express-api-starter/issues"},"bin":{"create-express-api-starter":"dist/cli.js"},"dist":{"shasum":"53eb1e6ca0cba0be6a7dfef936c8d847345b47eb","tarball":"https://registry.npmjs.org/@alexmc2/create-express-api-starter/-/create-express-api-starter-0.1.5.tgz","fileCount":86,"integrity":"sha512-fVUtq/G3MEDkzw5QvZjICLdDauPHQXSomUDXkoaKJnME31P5MAiE4Z7Z6zDzx4sSVoRbr+FiP2zcSrZd+OE9nQ==","signatures":[{"sig":"MEQCIGjplvlTbQDr0mEm0HwVw86US370mJzJ7Q/P7aESXCFVAiBmnwF1FIGmn+Lcw+N4e6J2BdAo/ZeRKSLLiHm351tP6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexmc2%2fcreate-express-api-starter@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":200365},"type":"module","engines":{"node":">=20"},"gitHead":"a7b6cea5e08accb0621ee1f818e2762eeb5a29ca","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint . --ext .ts","pack":"npm pack","test":"vitest run","build":"tsup","prepack":"npm run build","test:unit":"vitest run --exclude test/integration.generated-projects.test.ts","prepublishOnly":"npm run test:unit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d9e54487-84d3-4ceb-8ce0-823197d25e10"}},"repository":{"url":"git+https://github.com/alexmc2/create-express-api-starter.git","type":"git"},"_npmVersion":"11.6.2","description":"Interactive CLI to scaffold API-first Express backend projects","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ejs":"^4.0.1","execa":"^9.6.1","fs-extra":"^11.3.3","picocolors":"^1.1.1","@clack/prompts":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","eslint":"^8.57.1","vitest":"^4.0.18","@types/ejs":"^3.1.5","typescript":"^5.9.3","@types/node":"^20.19.33","@types/fs-extra":"^11.0.4","@typescript-eslint/parser":"^8.56.0","@typescript-eslint/eslint-plugin":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/create-express-api-starter_0.1.5_1771447524757_0.5007904463444637","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@alexmc2/create-express-api-starter","version":"0.1.6","keywords":["express","express-generator","scaffold","cli","starter","boilerplate","api","rest","typescript","javascript","postgres","jest","supertest"],"license":"MIT","_id":"@alexmc2/create-express-api-starter@0.1.6","maintainers":[{"name":"alexmc2","email":"alexandramcgarryx@gmail.com"}],"homepage":"https://github.com/alexmc2/create-express-api-starter#readme","bugs":{"url":"https://github.com/alexmc2/create-express-api-starter/issues"},"bin":{"create-express-api-starter":"dist/cli.js"},"dist":{"shasum":"60bb39ef67e3dd8dc4c9521115c94fb96a14f5ed","tarball":"https://registry.npmjs.org/@alexmc2/create-express-api-starter/-/create-express-api-starter-0.1.6.tgz","fileCount":86,"integrity":"sha512-ncebKB0oyKuPkBl4zGugoUdcouhIj6jVAmiIJpvDsweM/PsC21bSUk83qCXEoeq8OGDujZxGxXz+b7G30BDnXQ==","signatures":[{"sig":"MEYCIQCY3A/cA4TpxLoqzafAm62dz2ZnZV4catg4Vl27ffWkLwIhAMh2regebpWtmCcvFG76Alf5PnzTrSo2lZaWYbc4QkkH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexmc2%2fcreate-express-api-starter@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":198687},"type":"module","engines":{"node":">=20"},"gitHead":"77d68568a715a92345b59942bd795d46129717b2","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint . --ext .ts","pack":"npm pack","test":"vitest run","build":"tsup","prepack":"npm run build","test:unit":"vitest run --exclude test/integration.generated-projects.test.ts","prepublishOnly":"npm run test:unit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d9e54487-84d3-4ceb-8ce0-823197d25e10"}},"repository":{"url":"git+https://github.com/alexmc2/create-express-api-starter.git","type":"git"},"_npmVersion":"11.6.2","description":"Interactive CLI to scaffold API-first Express backend projects","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ejs":"^4.0.1","execa":"^9.6.1","fs-extra":"^11.3.3","picocolors":"^1.1.1","@clack/prompts":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","eslint":"^8.57.1","vitest":"^4.0.18","@types/ejs":"^3.1.5","typescript":"^5.9.3","@types/node":"^20.19.33","@types/fs-extra":"^11.0.4","@typescript-eslint/parser":"^8.56.0","@typescript-eslint/eslint-plugin":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/create-express-api-starter_0.1.6_1771457060023_0.6079156610238317","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alexmc2/create-express-api-starter","version":"0.2.0","keywords":["express","express-generator","scaffold","cli","starter","boilerplate","api","rest","typescript","javascript","postgres","jest","supertest"],"license":"MIT","_id":"@alexmc2/create-express-api-starter@0.2.0","maintainers":[{"name":"alexmc2","email":"alexandramcgarryx@gmail.com"}],"homepage":"https://github.com/alexmc2/create-express-api-starter#readme","bugs":{"url":"https://github.com/alexmc2/create-express-api-starter/issues"},"bin":{"create-express-api-starter":"dist/cli.js"},"dist":{"shasum":"b77b31107c3552faec4d79eccb076573f2fc1720","tarball":"https://registry.npmjs.org/@alexmc2/create-express-api-starter/-/create-express-api-starter-0.2.0.tgz","fileCount":86,"integrity":"sha512-WzFFQhIcyh+97cyt2bxYsKmSELNZApJYRuzVKCPSFOT5MZ9OxF52gxMbEkTPjSR6kbFc1VbfbE6mAnHcdrAUFQ==","signatures":[{"sig":"MEUCIG0Ykk+cSMOaZoS5NxtQnvJzWVUWmrRlbgLSN/7BXRPtAiEA0AroKAFvzPgspCff3XyKgrl+tDjBUcUBtqVsonWcbls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexmc2%2fcreate-express-api-starter@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209856},"type":"module","engines":{"node":">=20"},"gitHead":"649ac59e9362a0d9ce1410545ba04225de237968","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint . --ext .ts","pack":"npm pack","test":"vitest run","build":"tsup","prepack":"npm run build","test:unit":"vitest run --exclude test/integration.generated-projects.test.ts","prepublishOnly":"npm run test:unit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d9e54487-84d3-4ceb-8ce0-823197d25e10"}},"repository":{"url":"git+https://github.com/alexmc2/create-express-api-starter.git","type":"git"},"_npmVersion":"11.6.2","description":"Interactive CLI to scaffold API-first Express backend projects","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ejs":"^4.0.1","execa":"^9.6.1","fs-extra":"^11.3.3","picocolors":"^1.1.1","@clack/prompts":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","eslint":"^8.57.1","vitest":"^4.0.18","@types/ejs":"^3.1.5","typescript":"^5.9.3","@types/node":"^20.19.33","@types/fs-extra":"^11.0.4","@typescript-eslint/parser":"^8.56.0","@typescript-eslint/eslint-plugin":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/create-express-api-starter_0.2.0_1771701039902_0.040099259342624594","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@alexmc2/create-express-api-starter","version":"0.2.1","description":"Interactive CLI to scaffold API-first Express backend projects","license":"MIT","type":"module","repository":{"type":"git","url":"git+https://github.com/alexmc2/create-express-api-starter.git"},"bugs":{"url":"https://github.com/alexmc2/create-express-api-starter/issues"},"homepage":"https://github.com/alexmc2/create-express-api-starter#readme","keywords":["express","express-generator","scaffold","cli","starter","boilerplate","api","rest","typescript","javascript","postgres","jest","supertest"],"bin":{"create-express-api-starter":"dist/cli.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsx src/cli/index.ts","build":"tsup","lint":"eslint . --ext .ts","test":"vitest run","test:unit":"vitest run --exclude test/integration.generated-projects.test.ts","pack":"npm pack","prepack":"npm run build","prepublishOnly":"npm run test:unit"},"publishConfig":{"access":"public"},"dependencies":{"@clack/prompts":"^1.0.1","ejs":"^4.0.1","execa":"^9.6.1","fs-extra":"^11.3.3","picocolors":"^1.1.1"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^8.56.0","@typescript-eslint/parser":"^8.56.0","@types/ejs":"^3.1.5","@types/fs-extra":"^11.0.4","@types/node":"^20.19.33","eslint":"^8.57.1","tsup":"^8.5.1","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^4.0.18"},"overrides":{"@typescript-eslint/typescript-estree":{"minimatch":"9.0.7"},"filelist":{"minimatch":"5.1.8"}},"gitHead":"65e44e60c338023e7289239ae546d41a0da46e00","_id":"@alexmc2/create-express-api-starter@0.2.1","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-Ayj3cl5/ZA0GcqwZvqa2z1j8OU7o74d8p39CzjuRHrcUEhKaMi+LgFUmcd1t+E7ouOL5h0Y83D374+rAx+QGmA==","shasum":"ab30993c8fe2c9f21a9d1ee2391961b1209b21ec","tarball":"https://registry.npmjs.org/@alexmc2/create-express-api-starter/-/create-express-api-starter-0.2.1.tgz","fileCount":86,"unpackedSize":210009,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alexmc2%2fcreate-express-api-starter@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICiMTnFDee+GI+iu8RO/z84Z5G7QffBg5LHbBDuDiOIUAiAp2QhBuoBQ98fK3mtym7Jq4XyfTGB0NvvmfsCxgsuZPw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d9e54487-84d3-4ceb-8ce0-823197d25e10"}},"directories":{},"maintainers":[{"name":"alexmc2","email":"alexandramcgarryx@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/create-express-api-starter_0.2.1_1775327719206_0.05369520091147084"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-17T18:00:30.284Z","modified":"2026-04-04T18:35:19.621Z","0.1.0":"2026-02-17T18:00:30.505Z","0.1.1":"2026-02-18T01:08:32.038Z","0.1.2":"2026-02-18T01:50:23.345Z","0.1.3":"2026-02-18T11:10:20.970Z","0.1.4":"2026-02-18T13:42:07.708Z","0.1.5":"2026-02-18T20:45:24.909Z","0.1.6":"2026-02-18T23:24:20.181Z","0.2.0":"2026-02-21T19:10:40.057Z","0.2.1":"2026-04-04T18:35:19.359Z"},"bugs":{"url":"https://github.com/alexmc2/create-express-api-starter/issues"},"license":"MIT","homepage":"https://github.com/alexmc2/create-express-api-starter#readme","keywords":["express","express-generator","scaffold","cli","starter","boilerplate","api","rest","typescript","javascript","postgres","jest","supertest"],"repository":{"type":"git","url":"git+https://github.com/alexmc2/create-express-api-starter.git"},"description":"Interactive CLI to scaffold API-first Express backend projects","maintainers":[{"name":"alexmc2","email":"alexandramcgarryx@gmail.com"}],"readme":"# @alexmc2/create-express-api-starter\n\n[![npm version](https://img.shields.io/npm/v/%40alexmc2%2Fcreate-express-api-starter?label=npm%20package)](https://www.npmjs.com/package/@alexmc2/create-express-api-starter)\n\nA beginner-friendly npm CLI that scaffolds Express APIs with best-practice structure and optional educational comments.\n\n## About\n\nMost Express projects require some initial setup, including folders, middleware, error handling, and testing. This CLI tool automates this process so you can start writing routes immediately. It includes a standard, readable codebase with a pre-configured Jest and Supertest suite that passes right out of the box.\n\nThe CLI offers multiple configuration options to suit different preferences and use cases, including:\n\n- JavaScript or TypeScript\n- Simple or MVC architecture\n- In-memory or PostgreSQL (local `psql` or Docker)\n- npm workflow (`npm create`, `npm init`, or `npx`)\n- Dependency installs with `npm` or `yarn`\n\n<br />\n\n![create-express-api-starter CLI output](https://res.cloudinary.com/drbz4rq7y/image/upload/v1771349250/projects/readme_hn5fvu.png)\n\n<br />\n\n> The CLI works on Linux, macOS, and Windows.\n\n## Table of contents\n\n- [About](#about)\n- [Table of contents](#table-of-contents)\n- [Installation](#installation)\n- [Usage examples](#usage-examples)\n- [How it works](#how-it-works)\n- [Options](#options)\n- [What gets generated](#what-gets-generated)\n- [Database modes](#database-modes)\n- [Educational comments](#educational-comments)\n- [Design decisions](#design-decisions)\n- [Requirements](#requirements)\n- [Built with](#built-with)\n- [Contributing](#contributing)\n- [Licence](#licence)\n\n## Installation\n\n### npm create (recommended)\n\n```bash\nnpm create @alexmc2/express-api-starter@latest my-api\n```\n\n### npm init\n\n```bash\nnpm init @alexmc2/express-api-starter my-api\n```\n\n### npx (equivalent)\n\n```bash\nnpx @alexmc2/create-express-api-starter my-api\n```\n\n### Global install (optional)\n\n```bash\nnpm install -g @alexmc2/create-express-api-starter\n```\n\n## Usage examples\n\n### Interactive flow\n\n```bash\nnpm create @alexmc2/express-api-starter@latest\n```\n\n### Accept defaults (non-interactive)\n\n```bash\nnpm create @alexmc2/express-api-starter@latest my-api -- --yes\n```\n\n### Dry run\n\n```bash\nnpm create @alexmc2/express-api-starter@latest my-api -- --dry-run\n```\n\nThen:\n\n```bash\ncd my-api\ncp .env.example .env\nnpm run dev    # Start the dev server\nnpm test       # Run the test suite\nnpm run lint   # Run ESLint\n```\n\nTo use Yarn for dependency installation and command examples shown by the CLI:\n\n```bash\nnpm create @alexmc2/express-api-starter@latest my-api -- --package-manager=yarn\n```\n\nYour API is live at `http://localhost:3000`. Go to `http://localhost:3000/health` to confirm.\n\n## How it works\n\nThe interactive CLI prompts you for configuration preferences and generates your project files from templates.\n\nWhen you run `npm create @alexmc2/express-api-starter@latest my-api`, npm downloads the CLI to build the project directly in your folder. You are left with a standalone Express API with its own scripts and tests, and the generated project has no ongoing dependency on this tool. You can safely uninstall the CLI globally if you used that installation method.\n\n## Options\n\nThe CLI walks you through these choices interactively. Use `--yes` to skip prompts and accept all defaults.\n\n| **Option**                  | **Choices**                                   | **Default**    |\n| --------------------------- | --------------------------------------------- | -------------- |\n| **Language**                | JavaScript, TypeScript                        | JavaScript     |\n| **Module system** (JS only) | CommonJS, ES Modules                          | CommonJS       |\n| **Dev watcher** (JS only)   | `node --watch`, `nodemon`                     | `node --watch` |\n| **Architecture**            | Simple (flat), MVC (layered)                  | Simple         |\n| **Database**                | In-memory, Postgres (psql), Postgres (Docker) | In-memory      |\n| **Educational comments**    | On, Off                                       | On             |\n| **Install dependencies**    | Yes, No                                       | Yes            |\n| **Package manager**         | npm, yarn                                     | npm            |\n| **Initialise git repo**     | Yes, No                                       | Yes            |\n\n### CLI flags\n\n| **Flag**       | **Effect**                                                  |\n| -------------- | ----------------------------------------------------------- |\n| `--yes`        | Accept all defaults, skip prompts                           |\n| `--dry-run`    | Show the generation plan without writing files              |\n| `--no-install` | Skip dependency installation after generation               |\n| `--no-git`     | Skip `git init` after generation                            |\n| `--verbose`    | Show full dependency install output instead of quiet mode   |\n| `--package-manager=<name>` | Choose dependency installer: `npm` or `yarn`             |\n| `--pm <name>`  | Alias for `--package-manager`                               |\n| `--yarn`       | Shortcut for `--package-manager=yarn`                       |\n\n## What gets generated\n\n### Project structure (Simple architecture, JavaScript)\n\n```text\nmy-api/\n├── src/\n│   ├── app.js              # Express app: middleware, routes, error handling\n│   ├── server.js           # Starts the server on PORT\n│   ├── routes/\n│   │   ├── health.js       # GET /health\n│   │   └── users.js        # GET & POST /api/users\n│   ├── utils/\n│   │   └── getPort.js      # PORT parsing helper\n│   ├── errors/\n│   │   └── AppError.js     # Custom error class\n│   └── middleware/\n│       ├── notFound.js     # 404 handler\n│       └── errorHandler.js # Centralised error handler\n├── __tests__/\n│   └── app.test.js         # Health check and users endpoint tests\n├── .env.example\n├── .gitignore\n├── .eslintrc.cjs\n├── package.json\n├── README.md\n└── jest.config.js\n```\n\nThe MVC option organises the code into `controllers/`, `services/`, and `repositories/` to keep the business logic and data access separate.\n\nPostgres modes additionally include `db/schema.sql`, `db/seed.sql`, `src/db/` (connection pool), and setup scripts in `scripts/`. Docker mode adds a `compose.yaml`.\n\n### Middleware\n\nThe following middleware is pre-configured in every project:\n\n- **express.json()** - parses JSON request bodies\n- **cors** - enables cross-origin requests\n- **helmet** - sets security-related HTTP headers\n- **morgan** - logs HTTP requests in dev format\n- **dotenv** - loads environment variables from `.env`\n\n### Error handling\n\nErrors return a consistent JSON shape:\n\n```json\n{\n  \"status\": 404,\n  \"message\": \"Resource not found\"\n}\n```\n\nIn development, a `stack` trace is included for debugging. This is omitted in production.\n\nIn PostgreSQL mode, duplicate values for unique fields (like `email`) return `409 Conflict` with a clear message instead of a generic `500`.\n\n### Scripts\n\n**JavaScript projects:**\n\n| **Script**     | **Command**                                                     | **Purpose**                  |\n| -------------- | --------------------------------------------------------------- | ---------------------------- |\n| `npm run dev`  | `node --watch src/server.js` or `nodemon src/server.js`         | Dev server with auto-restart |\n| `npm start`    | `node src/server.js`                                            | Production start             |\n| `npm test`     | `jest` (CJS) or `node --experimental-vm-modules ... jest` (ESM) | Run test suite               |\n| `npm run lint` | `eslint .`                                                      | Lint source files            |\n\nChoosing `nodemon` adds it to `devDependencies` automatically.\n\n**TypeScript projects:**\n\n| **Script**      | **Command**               | **Purpose**                  |\n| --------------- | ------------------------- | ---------------------------- |\n| `npm run dev`   | `tsx watch src/server.ts` | Dev server with auto-restart |\n| `npm run build` | `tsc`                     | Compile to JavaScript        |\n| `npm start`     | `node dist/server.js`     | Production start (compiled)  |\n| `npm test`      | `jest`                    | Run test suite               |\n| `npm run lint`  | `eslint . --ext .ts`      | Lint source files            |\n\n**Postgres modes also include:**\n\n| **Script**          | **Purpose**                                       |\n| ------------------- | ------------------------------------------------- |\n| `npm run db:create` | Create the database (psql mode only)              |\n| `npm run db:setup`  | Apply `db/schema.sql`                             |\n| `npm run db:seed`   | Insert sample data from `db/seed.sql`             |\n| `npm run db:reset`  | Drop and recreate tables, then re-seed            |\n| `npm run db:up`     | Start the PostgreSQL container (Docker mode only) |\n| `npm run db:down`   | Stop and remove the container (Docker mode only)  |\n\n### Tests\n\nThe project includes a functional test suite using Jest and Supertest. In-memory mode works out of the box - just run `npm test` immediately after generation.\n\n## Database modes\n\n### In-memory (default)\n\nData is stored in a simple JavaScript array, so you don't need to install or configure anything. This is useful for prototyping, though data will reset every time the server restarts. Because the project uses a repository pattern, you can swap this for a real database later without having to refactor your routes.\n\n### Postgres (psql)\n\nIf you have PostgreSQL running locally, this mode sets up everything you need to connect your app to a real database. The generated project includes:\n\n- `pg` (node-postgres) with a pre-configured connection pool.\n- `db/schema.sql` and `db/seed.sql` for your initial tables and test data.\n- Management scripts (`db:setup`, `db:reset`, etc.) so you don't have to jump into the terminal to run SQL manually.\n- A `DATABASE_URL` in your `.env` pre-filled with your OS username and a database name derived from your project.\n\n**To get started:**\n\n```bash\n# After generation\nnpm run db:create   # Create the database\nnpm run db:setup    # Create tables\nnpm run db:seed     # Insert sample data\nnpm run dev         # Start the server\n```\n\nThe generated README includes OS-specific PostgreSQL installation and role setup instructions.\n\n### Postgres (Docker)\n\nIf you prefer Docker to avoid a local installation, this mode provides a `compose.yaml` that runs PostgreSQL on port 5433 (avoiding conflicts with any local Postgres you might have).\n\nIt includes a **retry helper** in the setup scripts. This solves the common issue where scripts fail because the database container isn't fully \"ready\" to accept connections yet.\n\n```bash\n# After generation\nnpm run db:up       # Start PostgreSQL container\nnpm run db:setup    # Create tables (retries until DB is ready)\nnpm run db:seed     # Insert sample data\nnpm run dev         # Start the server\n\n# When done\nnpm run db:down     # Stop and remove container + data\n```\n\n## Educational comments\n\nYou can enable inline comments that explain the 'why' behind the code. These are designed to be short and useful, covering things like:\n\n- Why we use `express.json()` and what happens if you forget it.\n- Why `helmet` is included for security.\n- How the repository pattern simplifies your data logic.\n\n## Design decisions\n\n**Opinionated but swappable.** The tool uses a standard stack (Jest, Morgan, Helmet, and ESLint) so projects are functional immediately. There is no complex logic connecting these tools, so they are easy to swap out if a different library is preferred.\n\n**Module system choice.** JavaScript projects allow choosing between CommonJS and ES Modules. TypeScript projects use ESM-style imports that compile to clean CommonJS.\n\n**Auth, ORMs, and OpenAPI.** These are not included in the current templates. Since these are major architectural decisions, they are best left to the developer to decide based on specific project needs. These may be added as configurable options in later versions.\n\n## Requirements\n\n- **Node.js >= 20**\n- **npm** (comes with Node)\n- **Docker** (only if using Docker DB mode)\n- **PostgreSQL** (only if using local psql mode)\n\n## Built with\n\n**The CLI itself:**\n\n- TypeScript + ESM, built with [tsup](https://tsup.egoist.dev/)\n- [@clack/prompts](https://github.com/bombshell-elements/clack) for interactive UI\n- [EJS](https://ejs.co/) for template rendering\n- [Vitest](https://vitest.dev/) for the CLI's own tests\n\n**Generated projects use:**\n\n- Express 5\n- Jest + Supertest for testing\n- ESLint for linting\n- `@swc/jest` for TypeScript test transforms\n- `pg` for PostgreSQL (when applicable)\n\n## Contributing\n\nIf you find a bug or have an idea for a template, feel free to open an issue or a PR. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\n\n```bash\ngit clone https://github.com/alexmc2/create-express-api-starter.git\ncd create-express-api-starter\nnpm install\nnpm test          # Run all tests (unit + integration)\nnpm run test:unit # Run unit tests only\nnpm run build     # Build the CLI\nnpm run dev -- my-test-project  # Run from source\n```\n\nThe test suite includes integration tests that generate real projects across all variant combinations, install dependencies, run their test suites, and run their linters.\n\n## Licence\n\nMIT\n","readmeFilename":"README.md"}