{"_id":"@adonisote.dev/express-typescript-starter","name":"@adonisote.dev/express-typescript-starter","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@adonisote.dev/express-typescript-starter","version":"1.0.0","description":"A starter template for building TypeScript Express backends","type":"module","scripts":{"dev":"tsx watch --clear-screen=false -r tsconfig-paths/register ./src/index.ts","build":"rm -rf dist && tsc && tsc-alias","start":"node ./dist/src/index.js","test":"echo \"Test to be implemented..🧪\" ","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --check .","format:fix":"prettier --write .","prepare":"husky || true"},"lint-staged":{"**/*.{ts,js}":["eslint --fix","prettier --write"],"**/*.{json,md}":"prettier --write"},"author":"","license":"ISC","dependencies":{"express":"^5.1.0","lint-staged":"^16.1.2","morgan":"^1.10.0"},"devDependencies":{"@eslint/js":"^9.30.0","@eslint/json":"^0.12.0","@eslint/markdown":"^6.6.0","@types/express":"^5.0.3","@types/morgan":"^1.9.10","@types/node":"^24.0.7","eslint":"^9.30.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.5.1","globals":"^16.2.0","husky":"^9.1.7","prettier":"^3.6.2","tsc-alias":"^1.8.16","tsconfig-paths":"^4.2.0","tsx":"^4.20.3","typescript":"^5.8.3","typescript-eslint":"^8.35.0"},"_id":"@adonisote.dev/express-typescript-starter@1.0.0","gitHead":"d484444e3b2d62615560b3fc0bd579fd11602e9f","_nodeVersion":"20.19.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-tYbbaWdy2jAfrniDmB9+jeLiCmetZKESfnSzqJ/s1/eE4+zL0+SNu0K1Ps576yd9qCDUDkwXG46/X1WIxDZRPg==","shasum":"cd975ea2ca54d87895fe0bc5c217c12650f54260","tarball":"https://registry.npmjs.org/@adonisote.dev/express-typescript-starter/-/express-typescript-starter-1.0.0.tgz","fileCount":13,"unpackedSize":20294,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICnWpCLqxAHreGHAiM5CLkls/uJ0qSL5WSCpHOJIXrwqAiAS4rFDUZCKmiM/GRp4qfYd4RgUfNdG0+yLTzSx4qVS2w=="}]},"_npmUser":{"name":"adonisote.dev","email":"adonisote.dev@gmail.com","actor":{"name":"adonisote.dev","email":"adonisote.dev@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"adonisote.dev","email":"adonisote.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/express-typescript-starter_1.0.0_1751308839939_0.28341242319932425"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-30T18:40:39.806Z","1.0.0":"2025-06-30T18:40:40.087Z","modified":"2025-06-30T18:40:40.408Z"},"maintainers":[{"name":"adonisote.dev","email":"adonisote.dev@gmail.com"}],"description":"A starter template for building TypeScript Express backends","license":"ISC","readme":"# Express TypeScript Starter\n\nA starter template for building robust TypeScript Express backends.\n\n## Features\n\n- **TypeScript** backend using **Express**\n- Modern dev workflow with [tsx](https://github.com/esbuild-kit/tsx)\n- Linting with [ESLint](https://eslint.org/) and formatting with [Prettier](https://prettier.io/)\n- Pre-commit and pre-push hooks powered by [Husky](https://typicode.github.io/husky) and [lint-staged](https://github.com/okonet/lint-staged)\n- Ready for VSCode with recommended extensions and workspace settings\n\n---\n\n## Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org/) (v18+ recommended)\n- [npm](https://www.npmjs.com/)\n\n### Installation\n\n1. **Clone the repo:**\n\n   ```bash\n   git clone https://github.com/adonisote/express-typescript-starter.git\n   cd express-typescript-starter\n   ```\n\n2. **Install dependencies:**\n\n   ```bash\n   npm install\n   ```\n\n3. **(Optional) Enable Husky hooks:**\n   ```bash\n   npm run prepare\n   ```\n\n---\n\n## Development\n\n### Run in development mode\n\n```bash\nnpm run dev\n```\n\n- Starts the server with hot-reloading via `tsx`.\n\n### Build for production\n\n```bash\nnpm run build\n```\n\n- Compiles TypeScript to the `dist` directory.\n\n### Start in production\n\n```bash\nnpm start\n```\n\n- Runs the compiled JavaScript from `dist`.\n\n---\n\n## Code Quality\n\n### Lint\n\n```bash\nnpm run lint\n```\n\n### Lint & auto-fix\n\n```bash\nnpm run lint:fix\n```\n\n### Format check\n\n```bash\nnpm run format\n```\n\n### Format & auto-fix\n\n```bash\nnpm run format:fix\n```\n\n---\n\n## Testing\n\n> **Note:** Tests are not yet implemented.  \n> Placeholder command:\n\n```bash\nnpm test\n```\n\n---\n\n## Husky Git Hooks\n\n- **pre-commit:** Runs lint-staged (ESLint + Prettier on staged files)\n- **pre-push:** Runs tests before pushing (aborts on failure)\n- **post-commit/post-push:** Friendly notifications\n\n---\n\n## VSCode\n\nRecommended extensions are in `.vscode/extensions.json`:\n\n- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)\n- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)\n\nWorkspace settings are in `.vscode/settings.json`.\n\n---\n\n## Project Structure\n\n```bash\n├── src/              # Source code\n│   └── index.ts      # Entry point\n├── dist/             # Compiled output (ignored)\n├── .husky/           # Git hooks\n├── .vscode/          # VSCode settings\n├── package.json\n├── tsconfig.json\n├── eslint.config.js\n├── .prettierrc\n├── .prettierignore\n├── .gitignore\n└── README.md\n```\n\n---\n\n## Contributing\n\n1. [Open an issue](https://github.com/adonisote/express-typescript-starter/issues) describing your idea or bug.\n2. Create a feature/fix branch:  \n   `git checkout -b issue-<number>-<short-description>`\n3. Commit your changes with descriptive messages.\n4. Push and open a Pull Request referencing the issue (`Closes #<number>`).\n5. Wait for review and merge!\n\n---\n\n## License\n\nISC\n\n---\n\n**Happy coding!**\n","readmeFilename":"README.md","_rev":"1-e60c5926d4f014e3c560163b3541dbf7"}