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.
- Host: GitHub
- URL: https://github.com/yanuarprayoga9/nestjs-practical-guide
- Owner: Yanuarprayoga9
- Created: 2025-07-30T10:00:38.000Z (2 months ago)
- Default Branch: master
- Last Pushed: 2025-07-31T10:15:32.000Z (2 months ago)
- Last Synced: 2025-07-31T13:59:57.387Z (2 months ago)
- Language: TypeScript
- Homepage:
- Size: 227 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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