{"id":43413,"library":"nestjs-blueprint-crud","title":"NestJS Blueprint CRUD","description":"A NestJS library for automatic CRUD operations with TypeORM, inspired by SailsJS Blueprint API and Waterline ORM. Current version: 1.0.12. Release cadence: irregular, maintained as open source on GitHub. Key differentiators: decorator-driven architecture with automatic Swagger/OpenAPI generation, full TypeScript support, enhanced endpoints (count, bulk, restore) beyond Sails.js blueprints, and association operations. Requires NestJS 10/11, TypeORM 0.3+, and peer dependencies for validation and Swagger.","status":"active","version":"1.0.12","language":"javascript","source_language":"en","source_url":"https://github.com/law108000/nestjs-blueprint-crud","tags":["javascript","nestjs","blueprint","sailsjs","waterline","typeorm","crud","orm","typescript"],"install":[{"cmd":"npm install nestjs-blueprint-crud","lang":"bash","label":"npm"},{"cmd":"yarn add nestjs-blueprint-crud","lang":"bash","label":"yarn"},{"cmd":"pnpm add nestjs-blueprint-crud","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency - NestJS common module required for decorators, pipes, interceptors","package":"@nestjs/common","optional":false},{"reason":"Peer dependency - NestJS core required for module metadata and dependency injection","package":"@nestjs/core","optional":false},{"reason":"Peer dependency - Used for automatic OpenAPI documentation generation","package":"@nestjs/swagger","optional":false},{"reason":"Peer dependency - Required for DTO serialization and transformation","package":"class-transformer","optional":false},{"reason":"Peer dependency - Required for DTO validation","package":"class-validator","optional":false},{"reason":"Peer dependency - Required for NestJS decorators and TypeORM reflection","package":"reflect-metadata","optional":false},{"reason":"Peer dependency - ORM for database operations","package":"typeorm","optional":false}],"imports":[{"note":"ESM-only package; CommonJS require will fail. Use TypeScript or ESM imports.","wrong":"const { CrudModule } = require('nestjs-blueprint-crud')","symbol":"CrudModule","correct":"import { CrudModule } from 'nestjs-blueprint-crud'"},{"note":"Used to extend custom services with blueprint CRUD logic.","symbol":"CrudService","correct":"import { CrudService } from 'nestjs-blueprint-crud'"},{"note":"Subpath exports are not supported; import directly from main package.","wrong":"import { CrudProperty } from 'nestjs-blueprint-crud/decorators'","symbol":"CrudProperty","correct":"import { CrudProperty } from 'nestjs-blueprint-crud'"}],"quickstart":{"code":"// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { TypeOrmModule } from '@nestjs/typeorm';\nimport { CrudModule } from 'nestjs-blueprint-crud';\nimport { User } from './user.entity';\n\n@Module({\n  imports: [\n    TypeOrmModule.forRoot({\n      type: 'sqlite',\n      database: ':memory:',\n      entities: [User],\n      synchronize: true,\n    }),\n    CrudModule.forFeature([User]),\n  ],\n})\nexport class AppModule {}\n\n// user.entity.ts\nimport { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';\n\n@Entity()\nexport class User {\n  @PrimaryGeneratedColumn()\n  id: number;\n\n  @Column()\n  name: string;\n\n  @Column()\n  email: string;\n}\n\n// user.service.ts\nimport { Injectable } from '@nestjs/common';\nimport { CrudService } from 'nestjs-blueprint-crud';\nimport { InjectRepository } from '@nestjs/typeorm';\nimport { Repository } from 'typeorm';\nimport { User } from './user.entity';\n\n@Injectable()\nexport class UserService extends CrudService<User> {\n  constructor(\n    @InjectRepository(User)\n    protected readonly repository: Repository<User>,\n  ) {\n    super(repository);\n  }\n}\n\n// user.controller.ts\nimport { Controller } from '@nestjs/common';\nimport { CrudController } from 'nestjs-blueprint-crud';\nimport { UserService } from './user.service';\nimport { User } from './user.entity';\n\n@Controller('users')\nexport class UserController extends CrudController<User>({\n  entity: User,\n  service: UserService,\n}) {}\n\n// main.ts\nimport { NestFactory } from '@nestjs/core';\nimport { AppModule } from './app.module';\n\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule);\n  // Enable Swagger if needed using @nestjs/swagger\n  await app.listen(3000);\n}\nbootstrap();","lang":"typescript","description":"Setup of a NestJS module with TypeORM, CrudModule, and blueprint CRUD controller/service for a User entity."},"warnings":[{"fix":"Update Node.js to version 18+ and npm to version 9+.","message":"Requires Node >=18.0.0 and npm >=9.0.0","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Use @nestjs/swagger v10 or v11 for best compatibility.","message":"peerDependencies allow @nestjs/swagger v7 to v11; older versions may lack OpenAPI features","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Ensure each entity used in CrudModule.forFeature() is also imported via TypeOrmModule.forRoot() or TypeOrmModule.forFeature().","message":"CrudModule.forFeature() expects entities to be registered with TypeOrmModule first","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use 'import' syntax and set 'type': 'module' in package.json, or use a dynamic import.","message":"Package is ESM-only; CommonJS require() will not work","severity":"breaking","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'0.3':61 '1.0.12':23 '10/11':59 'api':17 'architectur':38 'associ':55 'automat':8,40 'beyond':51 'blueprint':2,16,53,71 'bulk':49 'cadenc':25 'count':48 'crud':3,9,75 'current':21 'decor':36 'decorator-driven':35 'depend':64 'differenti':34 'driven':37 'endpoint':47 'enhanc':46 'full':43 'generat':42 'github':32 'inspir':13 'irregular':26 'javascript':69 'key':33 'librari':6 'maintain':27 'nestj':1,5,58,70 'open':29 'oper':10,56 'orm':20,76 'peer':63 'releas':24 'requir':57 'restor':50 'sails.js':52 'sailsj':15,72 'sourc':30 'support':45 'swagger':68 'swagger/openapi':41 'typeorm':12,60,74 'typescript':44,77 'valid':66 'version':22 'waterlin':19,73","created_at":"2026-06-05T16:59:41.002096+00:00","updated_at":"2026-06-05T16:59:41.002096+00:00","problems":[{"fix":"Add 'type': 'module' to project's package.json or use .mjs extension; ensure TypeScript 'module' is set to 'Node16' or 'NodeNext'.","cause":"Package is ESM-only and the consuming project is not configured for ESM or lacks 'type': 'module'.","error":"Cannot find module 'nestjs-blueprint-crud' or its corresponding type declarations."},{"fix":"Import TypeOrmModule.forFeature([YourEntity]) in the module where the service is used.","cause":"The entity's repository is not provided to the service context because TypeOrmModule.forFeature() is missing.","error":"Nest can't resolve dependencies of the CrudService (?, ?). Please verify that the [object Object] argument is available in the current context."},{"fix":"Ensure the entity class is exported and imported correctly; check for circular dependencies.","cause":"The entity class is not being imported correctly, causing CrudController to receive undefined.","error":"TypeError: Class extends value undefined is not a constructor or null"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/law108000/nestjs-blueprint-crud#readme","github":"https://github.com/law108000/nestjs-blueprint-crud","docs":null,"changelog":null,"pypi":null,"npm":"nestjs-blueprint-crud","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database","devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}