Generators

Generators allow you to quickly scaffold boilerplate code for your application.

Instead of manually creating files, you can use the CLI:

npx servercn-cli g <type> <name> [options]

Aliases

TypeAlias
Controllerco
Servicese
Routero
Modelmo
DTOdt
Validatorva
Resourcere

Options

  • --force: Overwrite existing files
  • --flat: Generate files in a flat structure
  • -h, --help: display help for command


Available Generators

npx servercn-cli g co auth

Examples:

1. MVC Architecture
> npx servercn-cli g co auth
 
CREATE: src\controllers\auth.controller.ts
 
✔ Successfully generated controller: auth
src/controllers/auth.controller.ts
import { Request, Response } from "express";
 
class AuthController {
  async test(req: Request, res: Response) {
    res.status(200).json({
      success: true,
      message: "Controller added successfully"
    });
  }
}
 
export const authController = new AuthController();

2. Feature Architecture
> npx servercn-cli g co auth
 
CREATE: src\modules\auth\auth.controller.ts
 
✔ Successfully generated controller: auth
src/modules/auth/auth.controller.ts
import { Request, Response } from "express";
 
class AuthController {
  async test(req: Request, res: Response) {
    res.status(200).json({
      success: true,
      message: "Controller added successfully"
    });
  }
}
 
export const authController = new AuthController();



npx servercn-cli g se auth

Examples:

1. MVC Architecture
> npx servercn-cli g se auth
 
CREATE: src\services\auth.service.ts
 
✔ Successfully generated service: auth
src/services/auth.service.ts
export class AuthService {
  constructor() {}
 
  async test() {
    return "service test";
  }
}
 
export const authService = new AuthService();

2. Feature Architecture
> npx servercn-cli g se auth
 
CREATE: src\modules\auth\auth.service.ts
 
✔ Successfully generated service: auth
src/modules/auth/auth.service.ts
export class AuthService {
  constructor() {}
 
  async test() {
    return "service test";
  }
}
 
export const authService = new AuthService();



npx servercn-cli g ro auth

Examples:

1. MVC Architecture
src/routes/auth.route.ts
import { Router } from "express";
import { Request, Response } from "express";
 
const router = Router();
 
router.get("/", (req: Request, res: Response) => {
  res.send("Hello World!");
});
 
export default router;

2. Feature Architecture
src/modules/auth/auth.route.ts
import { Router } from "express";
import { Request, Response } from "express";
 
const router = Router();
 
router.get("/", (req: Request, res: Response) => {
  res.send("Hello World!");
});
 
export default router;



npx servercn-cli g mo user

Examples:

1. MVC Architecture
src/models/user.model.ts
import mongoose, { Document, Model, Schema } from "mongoose";
 
export interface IUser extends Document {
  _id: mongoose.Types.ObjectId;
 
  name: string;
 
  createdAt: Date;
  updatedAt: Date;
}
 
const userSchema = new Schema<IUser>(
  {
    name: {
      type: String,
      required: true,
      trim: true
    }
  },
  {
    timestamps: true
  }
);
 
const User: Model<IUser> =
  mongoose.models.User || mongoose.model<IUser>("User", userSchema);
 
export default User;

2. Feature Architecture
src/modules/user/user.model.ts
import mongoose, { Document, Model, Schema } from "mongoose";
 
export interface IUser extends Document {
  _id: mongoose.Types.ObjectId;
 
  name: string;
 
  createdAt: Date;
  updatedAt: Date;
}
 
const userSchema = new Schema<IUser>(
  {
    name: {
      type: String,
      required: true,
      trim: true
    }
  },
  {
    timestamps: true
  }
);
 
const User: Model<IUser> =
  mongoose.models.User || mongoose.model<IUser>("User", userSchema);
 
export default User;



Generate Data Transfer Objects (DTOs) using zod for validation and type inference.

DTOs are used to validate incoming data (e.g. request body, params, query).

npx servercn-cli g dto <name> [fields...] [options]

fields: Define fields using: key:type

npx servercn-cli g dto auth
npx servercn-cli g dt user --flat
npx servercn-cli g dt user name:string email:email age:number
Creates:
  • MVC: src/dtos/auth.dto.ts
  • Feature: src/modules/auth/auth.dto.ts



Generate Validators using zod for validation and type inference.

npx servercn-cli g va <name> [fields...] [options]

fields: Define fields using: key:type

npx servercn-cli g va auth
npx servercn-cli g va auth --flat
npx servercn-cli g va user name:string email:email age:number
Creates:
  • MVC: src/validators/auth.validator.ts
  • Feature: src/modules/auth/auth.validator.ts



npx servercn-cli g re post
Creates:

1. MVC:

  • src/controllers/post.controller.ts
  • src/services/post.service.ts
  • src/routes/post.route.ts
  • src/models/post.model.ts
  • src/dtos/post.dto.ts

Example:

> npx servercn-cli g re post
 
CREATE: src\controllers\post.controller.ts
CREATE: src\services\post.service.ts
CREATE: src\routes\post.route.ts
CREATE: src\models\post.model.ts
CREATE: src\dtos\post.dto.ts
 
✔ Successfully generated resource: post

2. Feature:

  • src\modules\post\post.controller.ts
  • src\modules\post\post.service.ts
  • src\modules\post\post.route.ts
  • src\modules\post\post.model.ts
  • src\modules\post\post.dto.ts

Example:

> npx servercn-cli g re post
 
CREATE: src\modules\post\post.controller.ts
CREATE: src\modules\post\post.service.ts
CREATE: src\modules\post\post.route.ts
CREATE: src\modules\post\post.model.ts
CREATE: src\modules\post\post.dto.ts
 
✔ Successfully generated resource: post



Help

npx servercn-cli g --help
Usage: servercn-cli generate|g [options] <type> <name> [fields...]
 
Generate resources (controller, service, resource, model,
route, dto, validator, etc.)
 
Options:
  --force     Overwrite existing files
  --flat      Generate files in a flat structure
  -h, --help  display help for command
 
Aliases:
  co → controller
  se → service
  mo → model
  ro → route
  re → resource
  dt → dto
  va → validator
 
Examples:
  $ npx servercn-cli g co user
  $ npx servercn-cli g re auth 
  $ npx servercn-cli g mo user
  $ npx servercn-cli g ro user
  $ npx servercn-cli g se user
  $ npx servercn-cli g dt user
  $ npx servercn-cli g va user



Summary

npx servercn-cli g co auth
npx servercn-cli g se user
npx servercn-cli g mo user
npx servercn-cli g ro auth
npx servercn-cli g re post
npx servercn-cli g dt auth
npx servercn-cli g va auth
npx servercn-cli g --help