This is a template project for backend development using Typescript, Node.js, Express, Mongoose, Bcrypt, JWT, NodeMailer, Multer, ESLint, and Prettier. The aim is to reduce setup time for new backend projects.
- Authentication API: Complete authentication system using JWT for secure token-based authentication and bcrypt for password hashing.
- File Upload: Implemented using Multer with efficient file handling and short-term storage.
- Data Validation: Robust data validation using Zod and Mongoose schemas.
- Code Quality: Ensured code readability and quality with ESLint and Prettier.
- Email Service: Sending emails through NodeMailer.
- File Handling: Efficient file deletion using
fs.unlink
. - Environment Configuration: Easy configuration using a
.env
file. - Logging: Logging with Winston and file rotation using DailyRotateFile.
- API Request Logging: Logging API requests using Morgan.
- Typescript
- Node.js
- Express
- Mongoose
- Bcrypt
- JWT
- NodeMailer
- Multer
- ESLint
- Prettier
- Winston
- Daily-winston-rotate-file
- Morgen
- Socket
Follow these steps to set up and run the project locally.
Ensure you have the following installed:
- Node.js
- npm or yarn
-
Clone the repository:
git clone https://github.com/yourusername/your-repository.git cd your-repository
-
Install dependencies:
Using npm:
npm install
Using yarn:
yarn install
-
Create a
.env
file:In the root directory of the project, create a
.env
file and add the following variables. Adjust the values according to your setup.# Basic NODE_ENV=development DATABASE_URL=mongodb://127.0.0.1:27017/project_name IP_ADDRESS=192.0.0.0 PORT=5000 # Bcrypt BCRYPT_SALT_ROUNDS=12 # JWT JWT_SECRET=jwt_secret JWT_EXPIRE_IN=1d # Email EMAIL_FROM=[email protected] EMAIL_USER=[email protected] EMAIL_PASS=mkqcfjeqloothyax EMAIL_PORT=587 EMAIL_HOST=smtp.gmail.com
-
Run the project:
Using npm:
npm run dev
Using yarn:
yarn run dev
Explain how to run the automated tests for this system.
npm test