# Project Structure — NestJS: Building Scalable Node.js APIs

Source: https://www.skillbyai.com/en/nestjs/nestjs-project-structure

> Organize a NestJS app into feature folders with a module, controller and service for each feature.

## Folder layout

Each feature lives in its own folder with its module, controller, and service.

```text
src/
  main.ts
  app.module.ts
  users/
    users.module.ts
    users.controller.ts
    users.service.ts
  posts/
    posts.module.ts
    posts.controller.ts
    posts.service.ts
```

## Module = a slice of the app

A **module** groups related controllers and services. The root `AppModule` imports all feature modules; the app assembles them into a tree.

## Group by feature, not by type

Keep `users/users.controller.ts`, `users.service.ts` and `users.module.ts` together in one `users/` folder. Do not create global `controllers/` and `services/` folders; they grow into a maze.

Quick check

**Quiz:** Which file is the entry point that calls `NestFactory.create()`?

- [ ] app.module.ts
- [x] main.ts
- [ ] app.service.ts

*Answer:* main.ts. `main.ts` bootstraps the app. `app.module.ts` is only the root module it receives.
