Bab 1: Pengenalan Backend Development dan Node.js
Backend development adalah proses pembuatan bagian server dari aplikasi web yang menangani logika bisnis, database, dan komunikasi dengan frontend.
Node.js adalah runtime JavaScript yang berjalan di server, memungkinkan pengembangan backend menggunakan JavaScript.

Keunggulan Node.js
- Non-blocking I/O dan event-driven.
- Ekosistem npm yang besar.
- Satu bahasa untuk frontend dan backend.
- Performa tinggi untuk aplikasi real-time.
Bab 2: Memahami Arsitektur dan Konsep NestJs
NestJs adalah framework backend berbasis Node.js yang menggunakan TypeScript dan mengadopsi arsitektur modular dan pola desain seperti Dependency Injection.
NestJs memudahkan pengembangan aplikasi backend yang scalable dan maintainable.

Komponen Utama NestJs
- Modul: Unit modular aplikasi.
- Controller: Menangani request dan response.
- Service: Logika bisnis dan akses data.
- Middleware, Pipes, Guards: Memproses request dan keamanan.
Bab 3: Instalasi dan Persiapan Lingkungan Pengembangan
Siapkan lingkungan pengembangan dengan menginstal Node.js dan NestJs CLI.
Instalasi Node.js
Unduh dan instal Node.js dari nodejs.org .
Instalasi NestJs CLI
npm i -g @nestjs/cli

Bab 4: Membuat Proyek NestJs Pertama
Buat proyek NestJs baru menggunakan CLI.
nest new backend-app
Ikuti instruksi untuk memilih package manager (npm atau yarn).
Setelah selesai, jalankan proyek dengan:
cd backend-app
npm run start
Akses aplikasi di
http://localhost:3000
.
Bab 5: Membuat Controller dan Service di NestJs
Controller menangani request, sedangkan service berisi logika bisnis.
Membuat Controller Baru
nest generate controller tasks
Membuat Service Baru
nest generate service tasks
Contoh kode controller dan service sederhana:
// tasks.controller.ts
import { Controller, Get } from '@nestjs/common';
import { TasksService } from './tasks.service';
@Controller('tasks')
export class TasksController {
constructor(private readonly tasksService: TasksService) {}
@Get()
getAllTasks() {
return this.tasksService.findAll();
}
}
// tasks.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class TasksService {
private tasks = [{ id: 1, title: 'Belajar NestJs' }];
findAll() {
return this.tasks;
}
}
Bab 6: Menghubungkan NestJs dengan Database
NestJs mendukung berbagai database melalui ORM seperti TypeORM dan Prisma.
Instalasi TypeORM dan Database Driver
npm install --save @nestjs/typeorm typeorm mysql2
Contoh konfigurasi di
app.module.ts
:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'password',
database: 'nestdb',
entities: [__dirname + '/**/*.entity{.ts,.js}'],
synchronize: true,
}),
],
})
export class AppModule {}
Anda dapat membuat entity dan repository untuk mengelola data.
Bab 7: Membuat RESTful API dengan NestJs
RESTful API memungkinkan komunikasi antara frontend dan backend menggunakan HTTP.
Gunakan controller dan service untuk membuat endpoint CRUD.
@Controller('tasks')
export class TasksController {
@Get()
findAll() {
// Mengambil semua data tasks
}
@Post()
create(@Body() createTaskDto) {
// Menambah task baru
}
@Put(':id')
update(@Param('id') id: string, @Body() updateTaskDto) {
// Mengupdate task berdasarkan id
}
@Delete(':id')
remove(@Param('id') id: string) {
// Menghapus task berdasarkan id
}
}
Bab 8: Middleware, Pipes, dan Guards di NestJs
Middleware memproses request sebelum mencapai controller, pipes memvalidasi dan mentransformasi data, dan guards mengatur akses.
Contoh Middleware Sederhana
import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
console.log(`Request... ${req.method} ${req.originalUrl}`);
next();
}
}
Contoh Pipe Validasi
import { PipeTransform, Injectable, ArgumentMetadata, BadRequestException } from '@nestjs/common';
@Injectable()
export class ParseIntPipe implements PipeTransform {
transform(value: string, metadata: ArgumentMetadata): number {
const val = parseInt(value, 10);
if (isNaN(val)) {
throw new BadRequestException('Validation failed');
}
return val;
}
}
Bab 9: Autentikasi dan Otorisasi di NestJs
NestJs mendukung berbagai metode autentikasi seperti JWT dan Passport untuk mengamankan API.
Contoh Implementasi JWT
Instal paket yang dibutuhkan:
npm install @nestjs/jwt passport-jwt
Gunakan modul JWT untuk membuat token dan memverifikasi pengguna.
Bab 10: Testing dan Debugging Aplikasi NestJs
Testing membantu memastikan aplikasi berjalan sesuai harapan dan meminimalisir bug.
Testing Unit dan E2E
NestJs menggunakan Jest sebagai framework testing default.
npm run test
npm run test:e2e
Debugging
- Gunakan console.log untuk melacak nilai variabel.
- Gunakan debugger di IDE seperti VSCode.
- Periksa log error dan stack trace.
Bab 11: Deployment Aplikasi Backend NestJs
Setelah aplikasi selesai, deploy ke server produksi agar dapat diakses pengguna.
Langkah Deploy
- Pilih layanan hosting yang mendukung Node.js seperti Heroku, DigitalOcean, atau AWS.
-
Build aplikasi dengan
npm run build
. - Upload kode dan file build ke server.
- Jalankan aplikasi dengan process manager seperti PM2.
- Konfigurasi domain dan SSL jika perlu.
Penutup dan Sumber Belajar Lanjutan
Anda telah mempelajari panduan lengkap menjadi backend developer menggunakan NestJs dan Node.js. Teruslah belajar dan praktik untuk menguasai pengembangan backend modern.
Berikut beberapa sumber belajar lanjutan yang direkomendasikan:
- Dokumentasi Resmi NestJs
- Dokumentasi Resmi Node.js
- Udemy - NestJs Zero to Hero
- Fireship - Channel YouTube Tutorial
- freeCodeCamp - Artikel Node.js
Terima kasih telah membaca panduan ini. Semoga sukses dalam perjalanan Anda menjadi backend developer!