An open API service indexing awesome lists of open source software.

https://github.com/yanuarprayoga9/nestjs-practical-guide

A practical guide to building robust backends with NestJS. Includes CLI usage, dependency injection, database access, Clean Architecture patterns, and RESTful API design.
https://github.com/yanuarprayoga9/nestjs-practical-guide

Last synced: 2 months ago
JSON representation

A practical guide to building robust backends with NestJS. Includes CLI usage, dependency injection, database access, Clean Architecture patterns, and RESTful API design.

Awesome Lists containing this project

README

          

# ๐Ÿš€ NestJS Fundamental Guide + CLI & Clean Architecture Intro

Ini adalah dokumentasi dasar untuk belajar **NestJS** mulai dari nol, dengan fokus pada penggunaan **CLI**, struktur proyek, dan prinsip **Clean Architecture**.

---

## ๐Ÿงฑ Apa itu NestJS?

NestJS adalah framework backend berbasis **Node.js & TypeScript**, sangat cocok untuk aplikasi enterprise karena menerapkan konsep modular dan scalable architecture.

---

## ๐Ÿ›  Instalasi Awal

### 1. Install CLI NestJS

```bash
npm install -g @nestjs/cli
```

### 2. Membuat Proyek Baru

```bash
nest new my-project
```

CLI akan menanyakan apakah ingin menggunakan **npm** atau **yarn**, lalu akan membuat struktur awal seperti:

```
src/
โ”œโ”€โ”€ app.controller.ts
โ”œโ”€โ”€ app.module.ts
โ”œโ”€โ”€ app.service.ts
main.ts
```

---

## โš™๏ธ CLI Commands Penting

| Perintah | Fungsi | Hasil |
| ----------------------------- | --------------- | ------------------------------------ |
| `nest g module users` | Buat module | `users/users.module.ts` |
| `nest g controller users` | Buat controller | `users/users.controller.ts` |
| `nest g service users` | Buat service | `users/users.service.ts` |
| `nest g class utils/logger` | Buat class | `utils/logger.ts` |
| `nest g interface users/user` | Buat interface | `users/interfaces/user.interface.ts` |

> Gunakan `--flat` jika tidak ingin CLI membuat folder.

---

## ๐Ÿงฉ Struktur Dasar Module

Setiap fitur sebaiknya dipisah ke dalam module. Contoh:

```
src/
โ””โ”€โ”€ modules/
โ””โ”€โ”€ user/
โ”œโ”€โ”€ user.module.ts
โ”œโ”€โ”€ user.controller.ts
โ”œโ”€โ”€ user.service.ts
```

`app.module.ts` akan mengimpor semua module utama.

---

## ๐Ÿง  Konsep Modular NestJS

- **Controller**: Tempat menerima request dari user (GET, POST, dll)
- **Service**: Tempat logika aplikasi
- **Module**: Mengelompokkan semua bagian fitur
- **Provider**: Service, use case, atau logic lain yang bisa di-_inject_

---

## ๐Ÿ“ Clean Architecture Ringan

Struktur rekomendasi:

```
modules/
โ””โ”€โ”€ user/
โ”œโ”€โ”€ controllers/
โ”œโ”€โ”€ services/
โ”œโ”€โ”€ use-cases/
โ”œโ”€โ”€ repositories/
โ”œโ”€โ”€ dto/
โ”œโ”€โ”€ entities/
```

---

## ๐Ÿงช Menjalankan Proyek

```bash
npm run start:dev
```

---

## โœ… Validasi Data (DTO)

Install:

```bash
npm install class-validator class-transformer
```

Contoh `create-user.dto.ts`:

```ts
import { IsEmail, IsNotEmpty } from 'class-validator';

export class CreateUserDto {
@IsNotEmpty()
name: string;

@IsEmail()
email: string;
}
```

---

## ๐Ÿ”Œ Pengantar Prisma

1. Install:

```bash
npm install prisma --save-dev
npm install @prisma/client
```

2. Inisialisasi:

```bash
npx prisma init
```

3. Buat `prisma.service.ts` lalu inject ke repository.

---

## ๐Ÿงผ Best Practice Dasar

- Selalu pisahkan module per fitur
- Gunakan DTO untuk semua input
- Hindari logika bisnis di controller
- Gunakan dependency injection
- Unit test per module jika memungkinkan
- Buat `shared/` untuk helper, guard, filter, dll

---

## ๐Ÿ“š Referensi Lanjutan

- [Dokumentasi Resmi NestJS](https://docs.nestjs.com)
- [CLI Commands](https://docs.nestjs.com/cli/overview)
- [Clean Architecture by Uncle Bob](https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html)

---

## ๐Ÿง‘โ€๐Ÿ’ป Next Step?

Setelah memahami dasar NestJS:

- Mulailah integrasi database dengan **Prisma**
- Pelajari penggunaan **Interceptor**, **Pipe**, **Guard**
- Terapkan prinsip **Clean Architecture** untuk scale aplikasi