A production-ready starter template for building robust backend applications using Express.js and TypeScript. This template includes a well-structured setup, essential tools, and best practices to streamline your development process.
- Web Library:
express- A fast, unopinionated web framework for Node.js. - Type Checking:
typescript- Enhances JavaScript with static typing for safer and scalable code. - Development Server:
nodemon- Automatically restarts the server on code changes during development. - Linting & Formatting:
eslint&prettier- Ensures code quality and enforces a consistent code style. - Pre-commit hook:
husky&lint-staged- Runs automated checks on staged files before committing. - Testing:
jest&supertest- Comprehensive testing framework with HTTP assertion capabilities. - Documentation:
swagger-jsdoc&swagger-ui-express- Generates and serves interactive API documentation. - Logging:
winston&morgan- Centralized logging with request logging for better monitoring. - Security Enhancements:
helmet&cors- Adds essential HTTP headers and enables Cross-Origin Resource Sharing. - Environment Variables:
dotenv- Simplifies configuration management through .env files. - Module Alias:
module-alias- Provides cleaner imports with custom path aliases.
- Node.js (version 14 or above)
- npm or yarn
-
Clone the repository:
git clone https://github.com/prasadsawant7/express-ts.git cd express-ts -
Install dependencies:
npm install
| Script | Description |
|---|---|
npm run build | Builds the TypeScript code into JavaScript. |
npm start | Starts the app in production mode. |
npm run start:dev | Starts the app in development mode with Nodemon. |
npm run test:unit | Runs unit tests using Jest. |
npm run test:e2e | Runs end-to-end tests using Jest. |
npm run lint | Lints the code using ESLint. |
npm run format | Formats the code using Prettier. |
npm run prepare | Prepares the project by installing Husky hooks. |
express-ts/ ├── .husky │ ├── _/ # Contains scripts and binaries related to husky │ ├── pre-commit # Pre-Commit Script ├── coverage/ # Testing Code Coverage Reports ├── dist/ # Compiled JavaScript output ├── logs/ # All & Error Logs ├── src/ │ ├── __tests__/ # Test Code │ │ ├── e2e/ # End-to-End Testing │ │ ├── unit/ # Unit Testing │ ├── controllers/ # Define controller logic │ ├── libs/ # Shared libraries and utilities │ ├── middlewares/ # Custom middleware │ ├── routes/ # Application routes │ ├── main.ts # Entry point of the application ├── .eslintignore # Ignores files from getting linted by ESLint ├── .gitignore # Ignores files from getting tracked by Git ├── .prettierignore # Ignores files from getting formatted by Prettier ├── .prettierrc # Prettier configuration ├── .eslint.config.mjs # ESLint configuration ├── .jest.config.ts # Jest configuration ├── nodemon.json # Nodemon configuration ├── package.json # Project metadata and scripts ├── tsconfig.jest.json # TypeScript configuration for Jest ├── tsconfig.json # TypeScript configuration for the whole project Important
Remove the package-lock.json entry from .gitignore