{"id":816,"date":"2026-09-26T19:44:13","date_gmt":"2026-09-27T01:44:13","guid":{"rendered":"https:\/\/kop.lat\/blog\/?p=816"},"modified":"2026-09-26T19:50:59","modified_gmt":"2026-09-27T01:50:59","slug":"create-a-nestjs-project","status":"publish","type":"post","link":"https:\/\/kop.lat\/blog\/create-a-nestjs-project\/","title":{"rendered":"Create a Nestjs project"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Create a NestJS Project Step by Step<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Install Node.js<\/h3>\n\n\n\n<p>Install the latest active <strong>Node.js LTS<\/strong> version. Current NestJS documentation requires Node.js <strong>20.19 or later<\/strong> to run Nest applications, and newer versions may be required by the latest CLI generators.<\/p>\n\n\n\n<p>Check that Node.js and npm are installed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>node --version\nnpm --version<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Install the NestJS CLI<\/h3>\n\n\n\n<p>Open a terminal and run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install -g @nestjs\/cli<\/code><\/pre>\n\n\n\n<p>Verify the installation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nest --version<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Create a new project<\/h3>\n\n\n\n<p>Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nest new my-nest-app<\/code><\/pre>\n\n\n\n<p>Replace <code>my-nest-app<\/code> with your preferred project name.<\/p>\n\n\n\n<p>The CLI will ask you to choose:<\/p>\n\n\n\n<ul>\n<li>A package manager, such as npm or yarn<\/li>\n\n\n\n<li>A module system: ESM or CommonJS<\/li>\n\n\n\n<li>Whether to enable NestJS Observe<\/li>\n<\/ul>\n\n\n\n<p>For a beginner, the default choices are usually suitable. The command creates the project folder, installs dependencies, and generates the standard NestJS files.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Enter the project directory<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>cd my-nest-app<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5. Start the development server<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>npm run start:dev<\/code><\/pre>\n\n\n\n<p>This starts the server in watch mode, so it automatically restarts when you edit files.<\/p>\n\n\n\n<p>Open this URL in your browser:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;localhost:3000<\/code><\/pre>\n\n\n\n<p>You should see:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hello World!<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6. Understand the project structure<\/h3>\n\n\n\n<p>Your project will look similar to this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>my-nest-app\/\n\u251c\u2500\u2500 src\/\n\u2502   \u251c\u2500\u2500 app.controller.ts\n\u2502   \u251c\u2500\u2500 app.controller.spec.ts\n\u2502   \u251c\u2500\u2500 app.module.ts\n\u2502   \u251c\u2500\u2500 app.service.ts\n\u2502   \u2514\u2500\u2500 main.ts\n\u251c\u2500\u2500 test\/\n\u251c\u2500\u2500 package.json\n\u251c\u2500\u2500 tsconfig.json\n\u2514\u2500\u2500 nest-cli.json<\/code><\/pre>\n\n\n\n<p>The important files are:<\/p>\n\n\n\n<ul>\n<li><code>main.ts<\/code> \u2014 starts the NestJS application<\/li>\n\n\n\n<li><code>app.module.ts<\/code> \u2014 root module<\/li>\n\n\n\n<li><code>app.controller.ts<\/code> \u2014 handles HTTP routes<\/li>\n\n\n\n<li><code>app.service.ts<\/code> \u2014 contains application logic<\/li>\n\n\n\n<li><code>package.json<\/code> \u2014 dependencies and npm scripts<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7. Generate a feature<\/h3>\n\n\n\n<p>For example, generate a users feature:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nest generate module users\nnest generate controller users\nnest generate service users<\/code><\/pre>\n\n\n\n<p>Short versions:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nest g module users\nnest g controller users\nnest g service users<\/code><\/pre>\n\n\n\n<p>This creates files such as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>src\/users\/\n\u251c\u2500\u2500 users.controller.ts\n\u251c\u2500\u2500 users.module.ts\n\u2514\u2500\u2500 users.service.ts<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">8. Add a test route<\/h3>\n\n\n\n<p>Open <code>src\/users\/users.controller.ts<\/code> and use:<\/p>\n\n\n\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\" snippet-height=\"\" style=\"background-color:#abb8c3\"><div class=\"control-language\"><div class=\"dm-buttons\"><div class=\"dm-buttons-left\"><div class=\"dm-button-snippet red-button\"><\/div><div class=\"dm-button-snippet orange-button\"><\/div><div class=\"dm-button-snippet green-button\"><\/div><\/div><div class=\"dm-buttons-right\"><a id=\"dm-copy-raw-code\"><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span><span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a><\/div><\/div><pre class=\" no-line-numbers\"><code id=\"dm-code-raw\" class=\" no-wrap language-typescript\">import { Controller, Get } from '@nestjs\/common';\n\n@Controller('users')\nexport class UsersController {\n  @Get()\n  findAll() {\n    return ['Alice', 'Bob'];\n  }\n}<\/code><\/pre><\/div><\/div>\n\n\n\n<p>Make sure <code>UsersController<\/code> is registered in <code>users.module.ts<\/code>:<\/p>\n\n\n\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\" snippet-height=\"\" style=\"background-color:#abb8c3\"><div class=\"control-language\"><div class=\"dm-buttons\"><div class=\"dm-buttons-left\"><div class=\"dm-button-snippet red-button\"><\/div><div class=\"dm-button-snippet orange-button\"><\/div><div class=\"dm-button-snippet green-button\"><\/div><\/div><div class=\"dm-buttons-right\"><a id=\"dm-copy-raw-code\"><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span><span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a><\/div><\/div><pre class=\" no-line-numbers\"><code id=\"dm-code-raw\" class=\" no-wrap language-php\">import { Module } from '@nestjs\/common';\nimport { UsersController } from '.\/users.controller';\nimport { UsersService } from '.\/users.service';\n\n@Module({\n  controllers: &#91;UsersController],\n  providers: &#91;UsersService],\n})\nexport class UsersModule {}<\/code><\/pre><\/div><\/div>\n\n\n\n<p>Then make sure <code>UsersModule<\/code> is imported into <code>src\/app.module.ts<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { Module } from '@nestjs\/common';\nimport { UsersModule } from '.\/users\/users.module';\n\n@Module({\n  imports: &#91;UsersModule],\n})\nexport class AppModule {}<\/code><\/pre>\n\n\n\n<p>Visit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;localhost:3000\/users<\/code><\/pre>\n\n\n\n<p>You should receive:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;\"Alice\", \"Bob\"]<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">9. Useful commands<\/h3>\n\n\n\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\" snippet-height=\"\" style=\"background-color:#7FC8A9\"><div class=\"control-language\"><div class=\"dm-buttons\"><div class=\"dm-buttons-left\"><div class=\"dm-button-snippet red-button\"><\/div><div class=\"dm-button-snippet orange-button\"><\/div><div class=\"dm-button-snippet green-button\"><\/div><\/div><div class=\"dm-buttons-right\"><a id=\"dm-copy-raw-code\"><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span><span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a><\/div><\/div><pre class=\" no-line-numbers\"><code id=\"dm-code-raw\" class=\" no-wrap language-shell\"># Start normally\nnpm run start\n\n# Start with automatic reload\nnpm run start:dev\n\n# Build the project\nnpm run build\n\n# Run tests\nnpm run test\n\n# Run end-to-end tests\nnpm run test:e2e\n\n# Check and format code\nnpm run lint\nnpm run format<\/code><\/pre><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Create a NestJS Project Step by Step 1. Install Node.js Install the latest active Node.js LTS version. Current NestJS documentation requires Node.js 20.19 or later to run Nest applications, and newer versions may be required by the latest CLI generators. Check that Node.js and npm are installed: 2. Install the NestJS CLI Open a terminal [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":465,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[39,41,151,150,49],"tags":[116,42,153,152,63],"_links":{"self":[{"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/posts\/816"}],"collection":[{"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/comments?post=816"}],"version-history":[{"count":6,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/posts\/816\/revisions"}],"predecessor-version":[{"id":826,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/posts\/816\/revisions\/826"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/media\/465"}],"wp:attachment":[{"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/media?parent=816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/categories?post=816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/tags?post=816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}