This repository provides a production-grade backend template for Node.js applications using Express.js and TypeScript, with Mongoose for MongoDB integration. It includes a foundational structure, environment configuration, and a basic User model to jump start your backend development.
- Production-Grade Setup: Configured for scalability, security, and performance.
- Express.js: Minimalist web framework for routing and middleware.
- TypeScript: Enforced type safety for improved code maintainability and reduced runtime errors.
- Mongoose: Object Data Modeling (ODM) for seamless interaction with MongoDB.
- User Model: Pre-configured with basic fields like name, email, and password (extendable).
- Prettier: Code formatting with custom rules for consistent code style.
- Environment Configuration:
.env
file for secure storage of sensitive data (e.g., database credentials, API keys). - Git Best Practices:
.gitignore
for keeping sensitive files out of version control. - TypeScript Integration: Highlights the use of TypeScript for type safety.
- Folder Structure Breakdown: A detailed explanation of the folder structure with example file names.
- Getting Started Prerequisites: Basic understanding of TypeScript is required.
- Code Formatting and Linting: Configured with Prettier and
.prettierrc
for consistent code style. - Concise and Informative: Clear and structured content for easy understanding.
Backend Template TypeScript/
├── node_modules/ # Dependencies
├── public/ # Static assets
├── src/ # Main source code
│ ├── index.ts # Entry point
│ ├── app.ts # Express app setup
│ ├── constant.ts # Constants file
│ ├── controllers/ # Controller files
│ │ └── user.controller.ts
│ ├── db/ # Database connection setup
│ │ └── database.ts
│ ├── middlewares/ # Middleware functions
│ │ ├── auth.middleware.ts
│ │ └── multer.middleware.ts
│ ├── models/ # Data models
│ │ └── user.model.ts
│ ├── routes/ # Route handlers
│ │ └── user.routes.ts
│ └── utils/ # Utility functions
│ ├── ApiError.ts
│ ├── ApiResponse.ts
│ ├── asyncHandler.ts
│ └── cloudinary.ts
├── .env # Environment variables
├── .env.example # Example .env file
├── .eslintrc.json # ESLint configuration
├── .gitignore # Git ignore file
├── package-lock.json # Locked dependencies
├── package.json # Project dependencies and scripts
├── Readme.md # Project documentation
└── tsconfig.json # TypeScript configuration
- Node.js (v14 or later)
- MongoDB (local or cloud instance)
- Basic understanding of TypeScript
Create a .env
file in the root directory and add the following:
# Example .env file
PORT=4000
MONGODB_URL=YourMongoDBURL
CORS_ORIGIN=*
ACCESS_TOKEN_SECRET=Darshan
ACCESS_TOKEN_EXPIRY=1d
REFRESH_TOKEN_SECRET=Dpvasani
REFRESH_TOKEN_EXPIRY=10d
CLOUDINARY_CLOUD_NAME=YourCloudName
CLOUDINARY_API_KEY=YourApiKey
CLOUDINARY_API_SECRET=YourApiSecret
- Clone the repository:
git clone https://github.com/dpvasani/Backend-Template-TypeScript
cd Backend-Template-TypeScript
- Install dependencies:
npm install
- Set up your MongoDB connection string and other environment variables in the
.env
file.
To run the development server:
npm run dev
This will start the development server.
Feel free to open issues or create pull requests if you have suggestions for improvements!
This project is licensed under the MIT License.