📖 Scenario: You are starting a new backend project for a simple task management app. You want to set up the basic NestJS project structure to organize your code well.
🎯 Goal: Build the initial NestJS project scaffolding with a root module, a controller, and a service to prepare for adding task management features.
📋 What You'll Learn
Create a root module named AppModule
Create a controller named AppController
Create a service named AppService
Connect the controller and service in the module
Use NestJS decorators properly for module, controller, and service
💡 Why This Matters
🌍 Real World
Setting up a clean NestJS project structure is the first step in building scalable backend applications like task managers, blogs, or APIs.
💼 Career
Understanding NestJS project scaffolding is essential for backend developers working with modern Node.js frameworks in professional environments.
Progress0 / 4 steps
1
Create the root module
Create a class called AppModule and decorate it with @Module from @nestjs/common. For now, leave the imports, controllers, and providers arrays empty.
NestJS
Hint
Use @Module decorator with empty arrays for imports, controllers, and providers.
2
Create the controller
Create a class called AppController and decorate it with @Controller() from @nestjs/common. For now, leave the class body empty.
NestJS
Hint
Use @Controller() decorator on the AppController class.
3
Create the service
Create a class called AppService and decorate it with @Injectable() from @nestjs/common. Leave the class body empty for now.
NestJS
Hint
Use @Injectable() decorator on the AppService class.
4
Connect controller and service in the module
Update the @Module decorator in AppModule to include AppController in the controllers array and AppService in the providers array.
NestJS
Hint
Put AppController inside controllers and AppService inside providers in the @Module decorator.
Practice
(1/5)
1. What is the main purpose of using nest new project-name in NestJS?
easy
A. To create a new NestJS project with a ready-to-use structure
B. To start the NestJS development server
C. To install NestJS dependencies globally
D. To generate a new module inside an existing project
Solution
Step 1: Understand the command nest new project-name
This command is used to create a new NestJS project folder with all necessary files and folders set up.
Step 2: Identify the purpose of scaffolding
Scaffolding means generating a basic project structure automatically to save time and follow best practices.
Final Answer:
To create a new NestJS project with a ready-to-use structure -> Option A
Quick Check:
Project scaffolding = create new project structure [OK]
Hint: Remember: 'nest new' creates a fresh project folder fast [OK]
Common Mistakes:
Confusing 'nest new' with starting the server
Thinking it installs global packages only
Mixing it up with generating modules inside projects
2. Which of the following is the correct syntax to create a new NestJS project named my-app?
easy
A. nest create my-app
B. nest new my-app
C. nest generate project my-app
D. nest init my-app
Solution
Step 1: Recall the NestJS CLI command for new projects
The official command to scaffold a new project is nest new project-name.
Step 2: Match the correct syntax
Among the options, only nest new my-app matches the correct CLI command format.
Final Answer:
nest new my-app -> Option B
Quick Check:
Correct CLI syntax = nest new [OK]
Hint: Use 'nest new' exactly to scaffold projects [OK]
Common Mistakes:
Using 'nest create' instead of 'nest new'
Trying 'nest generate project' which is invalid
Confusing 'nest init' with project creation
3. After running nest new sample-app, which folder structure will you see inside sample-app?
medium
A. src/, node_modules/, package.json, nest-cli.json
B. app/, config/, public/, package-lock.json
C. controllers/, models/, views/, app.js
D. lib/, bin/, config/, README.md
Solution
Step 1: Recall default NestJS project folders
A new NestJS project contains a src/ folder for source code, node_modules/ for dependencies, and config files like package.json and nest-cli.json.
Step 2: Compare options with known structure
src/, node_modules/, package.json, nest-cli.json matches the expected NestJS scaffold structure; others list unrelated folders or files.
Final Answer:
src/, node_modules/, package.json, nest-cli.json -> Option A
Quick Check:
Default NestJS scaffold = src and config files [OK]
Hint: Look for src folder and package.json in new projects [OK]
Common Mistakes:
Expecting MVC folders like controllers, models, views
Confusing with frontend project structures
Looking for app.js which is not used in NestJS
4. You ran nest new myproject but got an error: Command 'nest' not found. What is the most likely fix?
medium
A. Rename the folder to 'nest' before running the command
B. Run nest new inside an existing NestJS project
C. Use npm start instead of nest new
D. Install Nest CLI globally using npm i -g @nestjs/cli
Solution
Step 1: Understand the error meaning
The error means the system does not recognize the nest command, likely because the Nest CLI is not installed globally.
Step 2: Identify the correct fix
Installing the Nest CLI globally with npm i -g @nestjs/cli makes the nest command available anywhere.
Final Answer:
Install Nest CLI globally using npm i -g @nestjs/cli -> Option D
Quick Check:
Missing CLI = install globally [OK]
Hint: Install Nest CLI globally to use 'nest' command [OK]
Common Mistakes:
Trying to run 'nest new' inside a non-NestJS folder
Using npm start which runs app, not CLI
Renaming folders instead of installing CLI
5. You want to create a new NestJS project but customize the package manager to use yarn instead of npm. Which command should you run?
hard
A. nest new myapp --package yarn
B. nest new myapp --use-yarn
C. nest new myapp --package-manager yarn
D. nest new myapp --pm yarn
Solution
Step 1: Recall NestJS CLI option for package manager
The Nest CLI supports the option --package-manager to specify which package manager to use during project creation.
Step 2: Match the correct option syntax
nest new myapp --package-manager yarn uses the correct full option --package-manager yarn. Other options are invalid or incomplete.
Final Answer:
nest new myapp --package-manager yarn -> Option C
Quick Check:
Use --package-manager to set yarn [OK]
Hint: Use --package-manager option to pick yarn or npm [OK]
Common Mistakes:
Using shorthand or incorrect flags like --pm or --use-yarn
Assuming default is yarn without specifying
Trying --package instead of --package-manager
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.