
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
A CLI tool to quickly scaffold clean code features with repository pattern, services, controllers, and more
A powerful CLI tool to quickly scaffold clean code features with repository pattern, services, controllers, and more for Node.js/TypeScript backend applications.
Install globally to use easyfeat command anywhere:
npm install -g easyfeat
Then use it:
easyfeat create user
easyfeat delete product
Install in your project:
npm install --save-dev easyfeat
Then use with npx:
npx easyfeat create user
Or add to your package.json scripts:
{
"scripts": {
"create-feature": "easyfeat create",
"delete-feature": "easyfeat delete"
}
}
Now you can run:
npm run create-feature user
npm run delete-feature product
Use directly without installing:
npx easyfeat create user
This downloads and runs the latest version temporarily.
easyfeat create user
This creates a complete user feature with entity, repository, service, controller, routes, DTOs, validation, and more.
# Full feature (recommended)
easyfeat create user
# Minimal feature
easyfeat create user --minimal
easyfeat create user -m
# With API version
easyfeat create user --version v2
easyfeat create user -v v2
easyfeat delete user
# or
easyfeat remove user
easyfeat --help
easyfeat create --help
easyfeat delete --help
When you run easyfeat create user, it generates:
src/
├── core/
│ └── interfaces/
│ └── base.repository.interface.ts
├── features/
│ └── user/
│ ├── entities/
│ │ └── user.entity.ts
│ ├── interfaces/
│ │ ├── i-user.repository.ts
│ │ └── i-user.service.ts
│ ├── repositories/
│ │ └── user.repository.ts
│ ├── mappers/
│ │ └── user.mapper.ts
│ ├── models/
│ │ └── user.model.ts
│ ├── dtos/
│ │ ├── create-user.dto.ts
│ │ └── update-user.dto.ts
│ ├── services/
│ │ └── user.service.ts
│ ├── controllers/
│ │ └── user.controller.ts
│ ├── routes/
│ │ └── user.routes.ts
│ └── validations/
│ └── user.validation.ts
└── routes/
├── index.ts
└── v1/
└── index.ts
The --minimal flag creates a basic structure with implementation stubs, giving you more control over the implementation.
# Create a user management feature
easyfeat create user
# Create an authentication feature with minimal setup
easyfeat create auth --minimal
# Create a product feature for API v2
easyfeat create product --version v2
easyfeat create product
easyfeat create order
easyfeat create payment
easyfeat create cart
easyfeat create post
easyfeat create comment
easyfeat create category
# Auth service
easyfeat create authentication
easyfeat create authorization
# Product service
easyfeat create product
easyfeat create inventory
# Order service
easyfeat create order
easyfeat create shipment
After generating a feature, customize these files:
entities/*.entity.ts) - Add your domain propertiesmodels/*.model.ts) - Define MongoDB schemadtos/*.dto.ts) - Add data transfer objectsvalidations/*.validation.ts) - Add validation rulesservices/*.service.ts) - Implement business logiccontrollers/*.controller.ts) - Customize API handlersmappers/*.mapper.ts) - Update entity/model transformationsexport class User {
id!: string;
email!: string;
username!: string;
firstName!: string;
lastName!: string;
isActive!: boolean;
createdAt!: Date;
updatedAt!: Date;
constructor(data: Partial<User>) {
Object.assign(this, data);
}
get fullName(): string {
return `${this.firstName} ${this.lastName}`;
}
toJSON() {
return {
id: this.id,
email: this.email,
username: this.username,
fullName: this.fullName,
isActive: this.isActive,
createdAt: this.createdAt,
updatedAt: this.updatedAt
};
}
}
const UserSchema = new Schema({
email: { type: String, required: true, unique: true, lowercase: true },
username: { type: String, required: true, unique: true },
firstName: { type: String, required: true },
lastName: { type: String, required: true },
isActive: { type: Boolean, default: true }
}, { timestamps: true });
FeatForge automatically updates your route files. Just import and use in your app:
import express from 'express';
import routes from './routes';
const app = express();
app.use(express.json());
app.use('/api', routes);
app.listen(3000, () => {
console.log('Server running on port 3000');
});
EasyFeat generates code following these principles:
Contributions are welcome! Please check out CONTRIBUTING.md for guidelines.
MIT © Nitesh
If you encounter any issues or have questions, please file an issue on the GitHub repository.
Made with ❤️ by Nitesh
FAQs
A CLI tool to quickly scaffold clean code features with repository pattern, services, controllers, and more
We found that easyfeat demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.