Seri tutorial membangun backend REST API untuk aplikasi blog "Median" (klon sederhana Medium) menggunakan NestJS, Prisma, dan PostgreSQL.
| # | Chapter | Topik Utama | Link |
|---|---|---|---|
| 1 | Membangun REST API | Setup NestJS, PostgreSQL, Prisma, CRUD Articles, Swagger | 📖 Buka Chapter 1 |
| 2 | Validasi Input & Error Handling | ValidationPipe, class-validator, ParseIntPipe, Exception Filter | 📖 Buka Chapter 2 |
| 3 | Data Relasional & User Management | Model User, Relasi One-to-Many, CRUD Users, Sembunyikan Password | 📖 Buka Chapter 3 |
| 4 | Authentication (JWT & Bcrypt) | Passport, JWT Token, Auth Guard, Bcrypt Hashing, Swagger Auth | 📖 Buka Chapter 4 |
+----------------------------------------------+
| MEDIAN API |
| |
| Articles -> CRUD + Relasi ke Author |
| Users -> CRUD + Password Hashing |
| Auth -> Login + JWT Token |
| Swagger -> Dokumentasi API Otomatis |
| |
| Tech Stack: |
| - NestJS (Framework) |
| - Prisma (ORM) |
| - PostgreSQL (Database) |
| - Swagger (API Docs) |
| - Passport (Authentication) |
| - Docker (PostgreSQL Container) |
+----------------------------------------------+
| Teknologi | Deskripsi |
|---|---|
| NestJS | Framework backend Node.js |
| Prisma | ORM (Object-Relational Mapper) |
| PostgreSQL | Database relasional |
| Swagger/OpenAPI | Dokumentasi API otomatis |
| TypeScript | Bahasa pemrograman |
| Docker | Container untuk PostgreSQL |
| Passport | Library authentication |
| JWT | Token-based authentication |
| Bcrypt | Password hashing |
| class-validator | Validasi input |
Sebelum memulai, pastikan kamu sudah menginstal:
| Software | Versi Minimum | Cek Instalasi |
|---|---|---|
| Node.js | v14+ | node --version |
| npm | v6+ | npm --version |
| Docker | v20+ | docker --version |
| VS Code | Latest | - |
- Ikuti secara berurutan - Setiap chapter membangun di atas chapter sebelumnya
- Ketik kode sendiri - Jangan copy-paste, ketik ulang agar lebih paham
- Eksperimen - Coba ubah kode dan lihat apa yang terjadi
- Baca komentar - Setiap kode dilengkapi penjelasan di komentar
Setup proyek dari nol hingga REST API yang berfungsi penuh dengan dokumentasi Swagger.
Yang dipelajari: NestJS CLI, Docker PostgreSQL, Prisma schema & migration, CRUD operations, Swagger/OpenAPI
Membuat API lebih robust dengan validasi input dan penanganan error yang baik.
Yang dipelajari: ValidationPipe, class-validator decorators, ParseIntPipe, Exception Filters, PrismaClientExceptionFilter
Menambahkan model User, relasi dengan Article, dan menyembunyikan data sensitif.
Yang dipelajari: Prisma relations, CRUD Users, ClassSerializerInterceptor, @Exclude decorator
Mengamankan API dengan sistem login dan token-based authentication.
Yang dipelajari: Passport.js, JWT, Auth Guards, bcrypt password hashing, Swagger Bearer Auth
Instruksi: Gunakan tabel ini sebagai overview progress keseluruhan. Centang chapter yang sudah selesai dikerjakan. Detail checklist ada di masing-masing chapter.
- Persiapan lingkungan (Node.js, Docker, VS Code)
- Setup proyek NestJS
- Setup database PostgreSQL (Docker)
- Setup Prisma (install, init, schema)
- Model data & migrasi database
- Seed database dengan data awal
- Membuat Prisma Service & Module
- Setup Swagger
- Implementasi CRUD Articles (6 endpoint)
- Konfigurasi Swagger response types
- 📋 Lihat detail checklist →
- Validasi input dengan
ValidationPipe&class-validator - Whitelist filtering (buang field yang tidak diinginkan)
- Transformasi parameter URL dengan
ParseIntPipe - Error handling dengan
NotFoundException - Membuat
PrismaClientExceptionFilter(P2002, P2025) - 📋 Lihat detail checklist →
- Membuat model
Userdan relasi one-to-many denganArticle - Migrasi dan seed data user
- Implementasi CRUD Users (5 endpoint)
- Menyembunyikan password dengan
@Exclude()&ClassSerializerInterceptor - Menampilkan relasi author di response Article
- 📋 Lihat detail checklist →
- Setup Auth module dengan Passport & JWT
- Membuat endpoint
POST /auth/login - Membuat JWT Strategy & Auth Guard
- Melindungi endpoint Users dengan
@UseGuards - Integrasi Bearer Auth di Swagger
- Hashing password dengan bcrypt
- Update login untuk bcrypt
- 📋 Lihat detail checklist →
- Chapter 1 selesai
- Chapter 2 selesai
- Chapter 3 selesai
- Chapter 4 selesai
- 🎓 SEMUA CHAPTER SELESAI — Praktikum telah diselesaikan seluruhnya
| Item | Keterangan |
|---|---|
| Nama | _________________________ |
| NIM | _________________________ |
| Tanggal Mulai | _________________________ |
| Tanggal Selesai | _________________________ |
| Tanda Tangan | _________________________ |